はじめに
CloudFormation で CloudFront ディストリビューションを作成する際に、「オリジンパス(OriginPath)」を指定したい場面があります。
個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。
この記事では、S3 オリジンを使う構成で特定のパス(例: /honda-sr-office_20250323
)を指定する方法について、個人の備忘録としてまとめました。
書こうと思ったきっかけ
CloudFront を通して配信する対象を S3 バケット内の特定ディレクトリ配下に限定したい要件がありました。
その際、CloudFormation テンプレートで OriginPath
を正しく指定する必要があり、設定ミスによるエラーを防ぐために記録しておこうと思いました。
OriginPath とは?
OriginPath
は、CloudFront がオリジン(例: S3バケット)にアクセスする際に追加するパスプレフィックスです。
例:
-
DomainName
:my-bucket.s3.amazonaws.com
-
OriginPath
:/honda-sr-office_20250323
この場合、CloudFront からのリクエストは以下のように変換されます:
https://your-domain.com/index.html
↓
s3://my-bucket/honda-sr-office_20250323/index.html
つまり、ユーザーには /index.html
に見えても、実際には CloudFront がオリジンの特定フォルダにマッピングしてくれます。
設定方法
CloudFormation テンプレート内の Origins
セクションにあるオリジン定義を以下のように変更します。
修正前
Origins:
- Id: S3Origin
DomainName: !GetAtt S3Bucket.RegionalDomainName
S3OriginConfig:
OriginAccessIdentity: !Sub "origin-access-identity/cloudfront/${CloudFrontOAI}"
修正後(OriginPath
を追加)
Origins:
- Id: S3Origin
DomainName: !GetAtt S3Bucket.RegionalDomainName
OriginPath: /honda-sr-office_20250323
S3OriginConfig:
OriginAccessIdentity: !Sub "origin-access-identity/cloudfront/${CloudFrontOAI}"
補足
-
OriginPath
に指定するパスは、S3 バケット内のフォルダ構成と一致させる必要があります。 - この設定により、CloudFront は
/honda-sr-office_20250323
配下のオブジェクトのみをルートとして扱います。 - 例:アクセスパス
https://your-domain.com/index.html
は、実際にはs3://your-bucket/honda-sr-office_20250323/index.html
を参照する形になります。
まとめ
- CloudFormation テンプレートで
OriginPath
を指定すれば、CloudFront 経由で配信するディレクトリを絞り込める -
OriginPath
は、CloudFront がオリジンに対して内部的に付加するパスの指定 - 記述位置は
DomainName
の下、S3OriginConfig
の前に追加 - S3 側の構成と整合性が取れていることを事前に確認すること
運用や環境ごとに切り分けたい場合にも役立つ設定なので、積極的に活用していきたいと思います!