S3 + CloudFront + ACM + Route53 を利用して独自ドメインの静的サイトを HTTPS 配信してみた

S3 + CloudFront + ACM + Route53 を利用して独自ドメインの静的サイトを HTTPS 配信してみた

Amazon S3、CloudFront、ACM、Route 53を組み合わせて、独自ドメインで静的サイトを HTTPS 配信する方法を実際に試してみました。設定手順から注意点まで、詳しく紹介します。
2026.07.01

はじめに

テクニカルサポートの 片方 です。
本ブログでは、Amazon S3 + Amazon CloudFront + AWS Certificate Manager + Amazon Route 53 を利用して、独自ドメインの静的サイトを HTTPS 配信する手順を紹介します。
構成としては、静的ファイルを Amazon S3 バケットに配置し、Amazon CloudFront 経由で配信します。S3 バケットはパブリック公開せず、CloudFront の Origin Access Control を利用して、CloudFront 経由でのみアクセスできるようにします。
また、AWS Certificate Manager で発行した証明書を CloudFront に設定し、Amazon Route 53 で独自ドメインを CloudFront に向けることで該当の静的サイトを公開します。

やってみた

Route 53

Route 53 で検証用のドメインを取得します。
なお、今回は検証用なので最安値の .click で作成しました。

001
002
003

完了したら ACM より証明書のリクエストを行うために、us-east-1 リージョンへ移動します。

ACM

CloudFront ディストリビューションに ACM 証明書を関連付ける場合、証明書は米国東部(バージニア北部)リージョン(us-east-1)でリクエストまたはインポートする必要があります。

https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/cnames-and-https-requirements.html

CloudFront ディストリビューションで ACM 証明書を使用するには、米国東部 (バージニア北部) リージョン (us-east-1) の証明書をリクエスト (またはインポート) していることを確認します。

005
006

ここでは、先ほど取得したドメイン (完全修飾ドメイン名) を記述します。
検証方法には DNS 検証を選択し、その他の項目はデフォルト設定のまま進めます。
リクエストを行うと以下のように、ステータス "保留中の検証" となります。
追加の作業を行うために 「Route 53 でレコードを作成」 を選択します。

007

画面が遷移したら、Create records をクリックします。
元の画面に戻り、ステータスが Pending validation (検証待ち) になります。
ステータスが「発行済み」になるまでしばらく待ちます。

008
009

発行済みとなれば、終了です。
念のため、Route 53 側でもホストゾーン (test-hp.click) で CNAME が追加されているか確認します。

0010

S3 バケット

S3 バケットを作成します。その際に適当な index 用の HTML ファイルのアップロードします。
なお、パブリックアクセスのブロックをすべてオンの状態で進めます。
また、この構成では S3の静的ウェブサイトホスティング機能 は利用せず、S3 バケットを CloudFront の S3 オリジンとして設定します。S3 のウェブサイトエンドポイントをオリジンにする場合はカスタムオリジン扱いとなり、OAC は利用できません。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>Hello</title>
</head>
<body>
    <h1>Hello World!</h1>
    <p>テストホームページ</p>
</body>
</html>

004

CloudFront

ここからは、CloudFront 側で設定を行います。左ペインよりディストリビューションを作成します。
まずは、料金プランを選択します。今回は無料 $0/month を選択しました。
この料金プランの注意点としては、以下の弊社ブログをご確認ください。

https://dev.classmethod.jp/articles/tsnote-cloudfront-flat-rate-pricing-plans/

その後に Distribution name を記述します。
また、Domain のセクションでは、取得したドメインを記述して "Check domain" をクリックします。

0013

ドメインの確認に成功すると、以下のようなメッセージが表示されます。

Domain managed by Route 53
We found a Route 53 zone file in your account for test-hp.click. CloudFront can automatically manage your DNS for you.

0014

次の作成画面では以下のように設定します。

  • Origin type :S3
  • S3 origin : index.html ファイルがアップロードされている S3 バケット
  • オリジン設定 : Use recommended origin settings

Cache settings セクションでは以下のように設定します。

  • ビューワープロトコルポリシー : Redirect HTTP to HTTPS
  • 許可された HTTP メソッド : GET, HEAD, OPTIONS

あとは、デフォルトのままにします。

0015
0016

そのまま進みます。
Get TLS certificate のセクションでは、先ほど発行した証明書を設定します。
繰り返しとなりますが、us-east-1リージョン で発行していない場合は設定できません。

0017

これで、新しいディストリビューションを作成します。
作成後、独自ドメインから CloudFront ディストリビューションへアクセスできるように、Route 53 で、CloudFront ディストリビューションを向き先とする Alias レコードを作成します。なお、"Set up routing automatically" をクリックすると自動で設定します。

0018
0019

作成されたディストリビューションのオリジン設定を編集します。
編集画面でポリシーをコピーします。その後、別タブで S3 のマネジメントコンソールを開きます。

0020
0021

以下のようなバケットポリシーが付与されていることを確認します。付与されていなければ、先ほどコピーしたポリシーを貼り付けます。

{
    "Version": "2012-10-17",
    "Statement": {
        "Sid": "AllowCloudFrontServicePrincipalReadOnly",
        "Effect": "Allow",
        "Principal": {
            "Service": "cloudfront.amazonaws.com"
        },
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
        "Condition": {
            "StringEquals": {
                "AWS:SourceArn": "arn:aws:cloudfront::111122223333:distribution/EDFDVBD6EXAMPLE"
            }
        }
    }
}

https://repost.aws/ja/knowledge-center/cloudfront-access-to-amazon-s3

問題がなければ保存し、CloudFront 側のオリジン設定も更新します。
最後に、Default root object を修正します。こちらでは、index.html と記述します。
この設定により、ルート URL でアクセスした際に、CloudFront が default root object として index.html を返します。なお、S3 の静的ウェブサイトホスティングにおけるインデックスドキュメントとは挙動が異なり、サブディレクトリ配下の index.html が自動的に返されるわけではありません。

0022
0023

HTTPS で配信されていることを確認

代替ドメイン名で (例: test-hp.click) アクセスすると、HTTPS で配信されていることを確認できます。
0024

これで、独自ドメインによる静的サイトの HTTPS 配信を確認できました。

サブドメインについて

https://docs.aws.amazon.com/ja_jp/acm/latest/userguide/acm-public-certificates.html

代替ドメイン名を test-hp.click ではなく、sample-page.test-hp.click のように設定したい場合は、以下のように設定してください。

  1. ACM 証明書を作成または再作成する
    証明書のドメイン名には、例えば以下を指定します。
    sample-page.test-hp.click

今後、同一階層のサブドメインを増やす可能性がある場合は、ワイルドカード証明書として以下を指定できます。

*.test-hp.click

なお、test-hp.click のような apex ドメインも同じ証明書で利用したい場合は、test-hp.click も SAN として追加してください。

0025

  1. 対象のディストリビューションで設定を編集する。
  • Alternative domain name (CNAMEs) : sample-page.test-hp.click
  • Custom SSL certificate - optional : 先ほどの証明書を選択 (*.test-hp.click)

0026

  1. Route domains to CloudFront より DNS レコードを修正する。(自動)

0027

これで完了です。
新規作成時は、上記を考慮して設定してください。

0028

まとめ

本ブログが誰かの参考になれば幸いです。

参考資料

クラスメソッドオペレーションズ株式会社について

クラスメソッドグループのオペレーション企業です。
運用・保守開発・サポート・情シス・バックオフィスの専門チームが、IT・AIをフル活用した「しくみ」を通じて、お客様の業務代行から課題解決や高付加価値サービスまでを提供するエキスパート集団です。
当社は様々な職種でメンバーを募集しています。
「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、クラスメソッドオペレーションズ株式会社 コーポレートサイト をぜひご覧ください。※2026年1月 アノテーション㈱から社名変更しました

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事