aws S3 + CloudFront + Certificate Manager + Route53 で静的Webページを配信する


最終形

これからやってみること

S3 + CloudFront + Route53 の組み合わせで静的 Webページ を配信するのは、aws のベストプラクティスの中でも「横綱」と言われています。私個人の Webページ をこのスタイルで配信してみましたので、その手順をご紹介します。

何がうれしいのか

  • S3 と CloudFront はともに極めて高い可用性を持つサービスであるため、安心してWebページの配信を任せられる
  • すべてマネージドサービスなので運用、保守はすべて aws で対応してもらえる
  • Certificate Manager により面倒な SSL/TLS証明書 の取得と更新を自動で対応してもらえる
  • 個人の Webページ であれば月額数十円で運用できる

前提条件

  • S3、CloudFront の操作が可能な aws アカウントを所持している
  • 独自ドメインを所持し Route53 などの「権威DNS」でホストしている

話は少しズレますが、私は以前 (2017年)、レンタルサーバからWebページを配信しておりまして、DNS もレンタルサーバの機能を使っていました。当時はこの DNS を用いて S3 + CloudFront によるWeb配信にチャレンジしたのですが、レンタルサーバの機能では必要な設定ができませんでした (S3 をエンドポイントにするところまでは対応可能だったが Certificate Manager の設定で必要な DNS 検証ができなかった)。

そこでレンタルサーバ運営会社で取得したドメインを aws へ移管し、Route53 によるDNS管理をはじめるようになりました。

Route53 はいわゆる「権威DNS」なのでドメイン管理で必要な設定はすべて実施できます。SLA は100%と言われており、繰り返し起こるドメイン乗っ取りの恐怖から解放され、しかも月額 0.5USD ほどで運用できてしまうので、aws らしい、とても高価値なサービスだと思っています。

公式手順

この公式手順の中にある「OAIによってアクセスが制限されているオリジンとして REST API エンドポイントを使用する」方式で実装を進めました。つまり、S3 のパブリックアクセスを行うことなく CloudFront に対してのみアクセスを可能とする、とてもセキュアなデータアクセス方式を採用しています。

動作確認

代替ドメイン名 (tms.demoru.net) で Webページが表示できれば OK

https://tms.demoru.net だけでなく、http://tms.demoru.net でアクセスすると https://tms.demoru.net にリダイレクトされるので確認しておきましょう。

成果物

tms.demoru.net

組織

unremoted.com

おまけ ドメインが expired したらどうなるのか

今回 tmstmp.com で配信していたページを tms.demoru.net に移したのは tmstmp.com が 2022年2月15日でドメインの有効期限を迎えるので、このドメインを打ち切りにしようとしたためでした。

さて、com ドメインが expired したらどうなるのか?

aws からはメールで以下の「重要な日付」が通知されています。

2022年2月15日:ドメインは一時停止され、インターネットで利用できなくなります
2022年2月15日-2022年3月30日:標準料金で登録を更新できます。
2022年3月31日:ドメインがシステムから削除されます。
2022年3月31日-2022年4月30日:ドメインの登録を復元できます。ドメイン登録を復元するための価格は、トップレベルドメイン(TLD)によって異なります。詳細については、AWSRoute53の料金をご覧ください。
2022年5月5日:レジストリによっては、この日付以降、誰でもこのドメインを登録できる場合があります。

なかなか経験できないイベントなので、どのタイミングで利用できなくなるのか確認してみました。事前の予想は、国際標準時の 2/16 0:00 または太平洋時の 2/16 0:00 以降に expires すると考えていました。日本時間で言うと 2/16 9:00 または 2/16 17:00 以降ということになります。

結果は、2/16 の 23時過ぎにブラウザからの閲覧ができなくなりました。aws より 23:04 に「Registration for tmstmp.com has expired」というメールが来ていましたので、このタイミングで expires したものと思われます。このメールにはドメインの利用を継続するためのリンクと、カスタマーサポートへ問い合わせるためのリンクが添付されていました。

あらためて、ありがとう、さようなら tmstmp.com

さくらインターネットのレンタルサーバでホームページ配信やメールサービスを行ったり、aws へ移管後は S3 からのホームページ配信や、SES を用いたメール配信、EC2 を用いたサービスの ELBエンドポイントをポイントしたり、Google Workspace の独自ドメイン利用、各種証明書の取得や更新のための DNS 検証など様々なシーンで役に立ってくれました。

Route53 のホストゾーンと、CloudFront のディストリビューション、静的ページを配置していたバケットは削除しておきます。