Skip to main content

S3静的サイトホスティング

やりたいこと

  • S3 + CloudFront の構成だが、URI の末尾 '/' 指定時にアクセス許可なしのエラーとなる。そうでなく '/index.html' を読んでほしい
  • 以前は Lambda@Edge で これを実現していたが、それは やめたい(CloudFrontでプラン設定選べないなど、何か制限がある模様?)

1. S3 側設定

  • アクセス許可
    • ★1. ブロックパブリックアクセス (バケット設定)
      • すべてオフ
    • ★2. バケットポリシー
      • s3:GetObject を設定 (下の方参照。バケット名は自分のものに)
  • プロパティ
    • ★3. 静的ウェブサイトホスティング
      • → 「有効」
      • → 編集
        • ★4. インデックスドキュメント
          • index.html を指定
        • エラードキュメントはそのまま
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 の話だと思うので気にしない
  • ビヘイビア
    • 編集
      • ★2. 下の方の「関数の関連付け」
        • 以前に Lambda@Edge を設定していたなら、ここは無効化

以下広告