S3静的サイトホスティング
やりたいこと
- S3 + CloudFront の構成だが、URI の末尾 '/' 指定時にアクセス許可なしのエラーとなる。そうでなく '/index.html' を読んでほしい
- 以前は Lambda@Edge で これを実現していたが、それは やめたい(CloudFrontでプラン設定選べないなど、何か制限がある模様?)
1. S3 側設定
- アクセス許可
- ★1. ブロックパブリックアクセス (バケット設定)
- すべてオフ
- ★2. バケットポリシー
- s3:GetObject を設定 (下の方参照。バケット名は自分のものに)
- ★1. ブロックパブリックアクセス (バケット設定)
- プロパティ
- ★3. 静的ウェブサイトホスティング
- → 「有効」
- → 編集
- ★4. インデックスドキュメント
- index.html を指定
- エラードキュメントはそのまま
- ★4. インデックスドキュメント
- ★3. 静的ウェブサイトホスティング
json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::totemo.sugoi-domain.com/*"
}
]
}
2. CloudFront 側設定
- オリジン
- 編集
- ★1. Webサイトのエンドポイントを使用
- totemo.sugoi-domain.com.s3-website-ap-northeast-1.amazonaws.com
- → ・・と、「website」のついた名前になればOK
- 「HTTPのみ」しか選べないが、外部 → CloudFront のことでなく、CloudFront → S3 の話だと思うので気にしない
- ★1. Webサイトのエンドポイントを使用
- 編集
- ビヘイビア
- 編集
- ★2. 下の方の「関数の関連付け」
- 以前に Lambda@Edge を設定していたなら、ここは無効化
- ★2. 下の方の「関数の関連付け」
- 編集
以下広告