この記事でわかること
S3の「静的ウェブサイトホスティングを有効にして公開」は入門としては正しいのですが、本番で運用するには3つの壁(HTTPSが使えない/バケットが直接見える/キャッシュ設計がない)があります。その壁の越え方を、私自身のサイトの構成(S3+CloudFront+OAC)を題材に、初心者向けにまとめました。
S3単体公開からの上げ方の要点
- オリジンはRESTエンドポイント(
バケット名.s3.リージョン.amazonaws.com)を使う。静的ウェブサイトホスティングのs3-websiteエンドポイントはカスタムオリジン扱いで、OACが使えない - OAC(Origin Access Control)でCloudFrontだけに読み取りを許可する。バケットポリシーの
Conditionに配信IDを入れて、他の配信からの参照を構造的に防ぐ - CloudFront側はACM証明書(us-east-1で発行)でHTTPS対応。Route 53のALIASで独自ドメインを向ける
キャッシュ設計とデプロイ
- HTMLは短命(数十秒〜数分)、CSS・JS・画像は長命(日〜月)という2分割が基本
- ファイル名を変えられない更新は無効化(Invalidation)で対応し、デプロイパイプラインの最後に組み込む
- 当サイトの実例として、PRマージ→GitHub Actionsの「Deploy to S3」が
aws s3 sync+CloudFrontの無効化→公開URLのHTTP 200確認、という流れを紹介しています
セキュリティと料金
- Response Headers PolicyでCSPなどのセキュリティヘッダーを設定変更だけで追加できる
- WAFは費用対効果で判断してよい。2026年に登場したCloudFrontのフラットレートプラン($0のFree〜、$15/月のPro以上はWAF・DDoS・ボット込み・超過請求なし)が選択肢に加わりました
- 料金の金額は試算であり、公開料金ページでの再確認を促成しています
※2026年10月時点の公開情報に基づく