Amazon CloudFrontディストリビューションに、Amazon Route 53で管理しているドメインを割り当ててみた

CloudFrontディストリビューションに対して、Route 53で管理しているドメインを設定してみました。ドメインはRoute 53で管理しているものとして、ACMの証明書からCloudFrontへのカスタムドメイン設定など、一連の作業手順をまとめます。
2024.05.13

Amazon CloudFrontに独自ドメインを設定したい

おのやんです。

みなさん、Amazon CloudFront(以下、CloudFront)にドメインを設定したいと思ったことはありませんか?私はあります。

CloudFrontディストリビューションを作成すると、[cloudfront-distribution-id].cloudfront.netのようにディストリビューションドメイン名が自動で割り当てわれます。このドメインのエイリアスとして、Amazon Route 53(以下、Route 53)で管理しているドメインを割り当てることができるので、今回はその設定手順をまとめていきたいと思います。

前提条件

今回は、こちらのブログにて構築したCloudFront + S3構成の環境にて作業を行っていきます。また今回は説明の都合上、Route 53に設定したドメイン名をexample.comとして進めます。

具体的には、Route 53でCloudFrontディストリビューションに対するレコードを作成し、そのレコードとCloudFront自体のドメイン設定を合わせる感じになります。結果、ドメイン名の後にCloudFrontで設定したパスパターンを続けられるようになります。

ドメインに関しては、Route 53のパブリックホストゾーンで管理している状態で進めます。

AWS Certificate Manager証明書の発行

まずは、HTTPS化を実施するために、AWS Certificate Manager(以下、ACM)の証明書を発行します。

CloudFrontディストリビューションにACM証明書を適用する場合、ACM証明書はus-east-1(バージニア北部)リージョンで発行されている必要があります。そのため、ACM発行作業についてはバージニア北部リージョンで実施します。

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

AWSマネジメントコンソール画面でバージニア北部リージョンであることが確認できたら、ACM画面にて「リクエスト」を押下します。

今回はパブリック証明書を選択して次に進みます。

ACM証明書が証明するドメインを設定します。今回はCloudFrontディストリビューションに対してサブドメインを割り当てる想定なので、example.comを設定するならexample.comの他に*.example.comのドメインも設定します

こちらが完了したら、あとはデフォルト設定で問題ないので「リクエスト」を押下します。

リクエスト後、このように証明書が発行されていれば次に進みます。

証明書の詳細画面に進んでください。ここで、ドメインの設定項目の部分に「Route 53でレコードを作成」ボタンがありますので、こちらを押下します。

遷移した画面の設定でRoute 53のレコードを追加します。レコードの内容は問題ないので、このまま「レコードを作成」を押下します。

レコード作成後に少し時間を置いて、ACM証明書のステータスが「発行済み」となっていればOKです。正常にACM証明書を発行することができました。

CloudFront上でドメインを設定

ACM証明書が発行できましたので、ここからCloudFrontディストリビューションにてドメインを設定していきます。CloudFrontディストリビューション詳細画面を表示すると、「一般」タブの下に「設定」の項目が出てきます。こちらの「編集」ボタンを押下します。

ここで、 CloudFrontディストリビューションに適用するACM証明書と代替ドメイン名を設定します。バージニア北部リージョンでACM証明書を発行している場合、「Custom SSL certificate」にて先ほどの証明書を選択できます。また代替ドメイン名については、今回はexample.comのサブドメインを設定したいため、subsystem.example.comを設定することにします。こちらの設定をCloudFrontディストリビューションに反映させます。

CloudFrontディストリビューションへの設定反映には、すこし時間がかかります。設定を反映した直後は、最終変更日の表示が「デプロイ」になっています。

ここから数分経過すると、CloudFrontディストリビューションに先ほどのドメイン設定が反映され、正確な最終更新日が表示されます。

CloudFront用のレコードを追加

最後に、CloudFrontのドメインに対してエイリアスとなるレコードを設定します。Route 53の管理画面にて、「レコードを作成」を選択します。

レコード作成画面では、こちらの画像のような設定を行います。各設定値は以下の通りです。

項目 設定値
レコード名 subsystem.example.com
レコードタイプ A
トラフィックのルーティング先 「CloudFrontディストリビューションでのエイリアス」

このドメインの反映にも少し時間がかかります。レコードを作成した直後はsubsystem.example.comドメインからのアクセスができませんが、数分ほど経過すると、subsystem.example.comドメインが有効になります。

今回適用したCloudFrontオリジン(S3バケット)には、パスパターンとして/images/*が設定されていました。そのため、今回のドメイン適用作業によって、subsystem.example.com/images/sample.pngのようなURLで、S3バケット内の画像にアクセス可能となっています。

CloudFrontへのドメイン設定には、証明書アタッチ・代替ドメイン設定・レコード追加が必要

実際に本検証を行う上で、CloudFrontディストリビューションへの代替ドメイン設定の部分を把握しておらず時間を溶かしました。

本記事を参考にして、CloudFrontへのドメイン設定で時間を溶かす人が少しでも減ってくれれば幸いです。では!