個人ブログ規模の静的サイトをHTTPS付きで公開するなら、S3 + CloudFront + OAC + ACM + Route53の最小構成が最適。主な費用はRoute 53の約75円/月(CloudFrontの転送は常時無料の枠の中)で運用でき、Pagespeed Insightsで90点以上を狙えます。
「VPSや共有レンタルサーバーは月額1,000円以上かかる」「個人ポートフォリオサイトを最小コストで運用したい」――そんなニーズはありませんか?
本記事を読むと、S3 + CloudFrontでHTTPS対応の静的サイトを公開する最小構成、Access Denied対策、OAI→OAC移行、月額コストの目安まで一通りわかります。
なぜS3単体ではなくCloudFrontを噛ませる?
S3の静的Webサイトホスティング機能はHTTPS非対応で、CDN効果もありません。CloudFrontを前段に置くことでHTTPS化・グローバルキャッシュ・OACによるS3直接アクセス禁止の3つを同時に実現できます。
| 構成 | HTTPS | CDN | セキュリティ |
|---|---|---|---|
| S3単体 | × | × | パブリック公開 |
| S3+CloudFront(OAI) | ○ | ○ | 旧式(非推奨) |
| S3+CloudFront(OAC) | ○ | ○ | S3直接アクセス禁止 |
構築の6ステップは?
「①S3バケット作成」「②OAC作成」「③CloudFrontディストリビューション作成」「④バケットポリシー貼り付け」「⑤ACM証明書発行(us-east-1必須)」「⑥Route53でAレコード」の6ステップ。所要時間は約60分です。
リージョンは東京(ap-northeast-1)で、パブリックアクセスは全ブロック維持。CloudFront経由でのみアクセスさせるため。
CloudFrontコンソール → セキュリティ → オリジンアクセスからコントロール設定を新規作成。「常にリクエストに署名する」を選択。
オリジンはREST APIエンドポイント(バケット名.s3.amazonaws.com)を指定。静的ホスティングエンドポイントは選ばない。
ディストリビューション作成後にCloudFront側で自動生成されたバケットポリシーをコピーし、S3バケットに適用する。これを忘れるとAccess Deniedが発生する。
CloudFrontで使うACM証明書は必ずバージニア北部(us-east-1)リージョンで発行する。東京リージョンの証明書は選べない。
ホストゾーンにAレコード(エイリアス)を作成し、CloudFrontディストリビューションを指定。DNS浸透まで5〜30分。
月額コストはいくら?
個人ブログ規模(月10GB配信)なら月額100円以内に収まります。CloudFrontの従量課金は、毎月1TBの転送と1,000万リクエストまで常時無料なので転送は0円で、主な費用はRoute 53のホストゾーン(月$0.50=約75円)とS3の保存料(数円)です。ACMの証明書はCloudFrontで使うなら無料です(2026年10月時点の公式)。
| サービス | 月額目安 |
|---|---|
| S3(ストレージ) | 数円 |
| CloudFront(10GB配信) | 0円(毎月1TB・1,000万リクエストまで常時無料) |
| ACM証明書 | 無料 |
| Route53(ホストゾーン) | $0.50(約75円・日割りなし) |
CloudFrontには定額のプランもあります。Freeプラン(ディストリビューション1つにつき月$0)は、月100GB・100万リクエスト・S3の保存5GBまでで、Route 53のDNSやTLS証明書も含むプランの1つです(公式)。小さなサイトなら、従量課金の常時無料の枠と比べて選べます。
Access Deniedが出る時の原因と対処は?
よくある原因はバケットポリシーの貼り忘れです。CloudFront側で自動生成されたJSONポリシーをS3バケットの「アクセス許可」タブに貼り付けることで解決します。
それでもAccess Deniedが続く場合は「S3 Block Public Accessが過剰に設定されていないか」「OACのAccountIDがバケットポリシーのものと一致しているか」を確認してください。
OAIからOACへの移行手順は?
既存環境がOAI(Origin Access Identity)の場合、AWS推奨のOAC(Origin Access Control)への移行を強く推奨します。OACはAWS Signature Version 4署名に対応しており、SSE-KMS暗号化バケットでも利用可能です。
CloudFrontコンソールで新しいOAC設定を作成する。署名動作は「常に署名する」を選択。
既存のオリジンを編集し、OAIからOACに切り替え。バケットポリシーも新しいOACのプリンシパルに更新する。
まとめ:個人ブログなら最小構成で月100円以内
- S3+CloudFront+OACの3点セットがHTTPS静的サイトの最適解
- ACM証明書はus-east-1で発行するのが鉄則
- Access DeniedはほぼOAC自動生成ポリシー未適用が原因
- 月額数十円〜100円で個人サイト運用が可能
- 既存OAI環境はOACへの移行を推奨
FAQ
CloudFrontなしでS3単体公開ではダメ?▼
Next.js/Astro等のSSGフレームワークも公開できる?▼
next exportやastro buildでstatic出力をS3にデプロイ、GitHub ActionsでCI/CD自動化するのが定石ワークフローです。トレイリングスラッシュ問題はどう解決する?▼
/about → /about/index.htmlへのリライト処理を書くのが標準的解決策。常時無料の枠は月200万回の呼び出しまでです(2026年10月時点の公式)。www有無のリダイレクトは?▼
www.example.com用S3バケットを作成し、リダイレクト先としてexample.comを設定する構成が一般的です。

コメント