内容
この記事はAWS初学者を導く体系的な動画学習サービス
「AWS CloudTech」の課題カリキュラムで作成しました。
https://aws-cloud-tech.com
前回の「スケーラビリティのあるブログサービスを構築する」のレッスンに引き続き、今回はRoute53とS3の機能を使い、独自ドメインを設定と障害時にSORRYページへ通信を流すという設定を行なっていきたいと思います。
前回の記事
現状は、クライアントのブラウザのURL欄にロードバランサーのドメイン名を入力すると、ロードバランサーまでアクセスでき、ブログが表示される状態です。
今回は、まずFreenomというサービスを利用して無料のドメインを取得します。
取得したドメインでアクセスできるようにRoute53に設定変更を加えていきます。
Route53は外部のサービスで取得したドメインも設定ができます。
その後、フェイルオーバールーティングの設定を行います。
S3にHTMLファイルをアップロードして、S3の静的ウェブサイトホスティング機能でSorryサイトを作成します。
プライマリの通信に問題が発生した場合は、セカンダリに通信を流す設定を行います。

実施手順
前回の記事の構成がされていることを前提で進めていきます。
準備
- EC2インスタンスが2台立ち上がっていることを確認
- RDSを削除した場合は、スナップショットから復元しておく。
- 復元したデータベースのステータスが
利用可能になるまで待つ。 - ロードバランサーのIPアドレスでブログが閲覧できることを確認しておく。
ドメインの取得とRoute53の設定
今回は無料でドメインを取得できるFreenomというサービスを利用します。
Freenom https://www.freenom.com/ja/index.html
- Freenomにアクセスし、
新しい無料ドメインを探しますと表示されている検索窓から希望するドメイン名を検索する。 - 検索結果が表示されるので、一覧の中から
今すぐ入手!を選択 -
今すぐ入手!が選択となったらチェックアウトを選択 -
Periodで使用する期間を選択(12ヶ月までは無料) -
Continueを選択 - ログインしていない場合はGoogleのアカウントなどと紐づけておく。
- ログイン後、右上のタブから名前を選択、
view cartを選択すると、カートの中身が表示されるので、利用規約確認のチェックボックスにチェックをいれ、Complete Orderを選択 - 画面が切り替わるので、上部の
ServicesタブからMy Domainsを選択 - 入手したドメインの
Manage Domainを選択 -
Management ToolsタブからNameserversを選択 -
Use custom nameservers (enter below)のラジオボタンをチェック - ネームサーバーの記入箇所が出てくるので開いたままにしておく。
現状だと、Freenomの方でDNSレコードの設定などの作業が必要になるので、ドメインの管理サーバーをRoute53のネームサーバーに書き換えます。
- Route53の画面を開き、
ホストゾーンの作成を選択 - ドメイン名:先ほど入手したドメイン名を入力
-
ホストゾーンの作成を選択 - レコードの
値/トラフィックのルーティング先の4つの値を1つずつ先ほどのFreenomのネームサーバーの記入箇所にコピーする。 -
Change Nameserversを選択
上記の作業は、「取得したドメインは、Route53で管理します。」とFreenomに教えてあげているイメージになります。
取得したドメインとロードバランサーを紐づける
- Route53のホストゾーンから作成したドメイン名を選択し、
レコードを作成を選択 - ルーティングポリシーは
シンプルルーティングを選択して次へ進む。 -
シンプルなレコードを定義を選択 - レコード名:
blogと入力 - 値/トラフィックのルーティング先:
Application Load BalancerとClassic Load Balancerへのエイリアスを選択 - リージョンは東京を選択
-
シンプルなレコードを定義を選択 -
レコードを作成を選択 - 取得したドメイン名をブラウザのURL欄に貼り付けて、ブログにアクセスできることを確認する。
S3バケットの作成
S3の静的ウェブサイトホスティング機能でSorryサイトを作成します。
S3バケットの名前をドメインの名前と同じにする必要があるので注意しましょう。
- S3の画面に移動し、
バケットを作成を選択 - バケット名には
ドメイン名を入力 -
パブリックアクセスをすべてブロックのチェックを外す。 -
現在の設定により、このバケットとバケット内のオブジェクトが公開される可能性があることを承認します。にチェックをつける。 -
バケットを作成を選択
Sorryページの設定
- 作成したバケットを選択
-
アップロードを選択 -
ファイルを追加とフォルダを追加を選択して表示させたいファイルやフォルダを選択 -
アップロードを選択 -
閉じるを選択 -
プロパティタブを選択 - 下にスクロールすると
静的ウェブサイトホスティングの項目があるので編集を選択 -
静的ウェブサイトホスティング:有効にするにチェックをつける。 -
インデックスドキュメントを入力(HTMLファイルの名前) -
エラードキュメントを入力(error.htmlでOK) -
変更の保存を選択 -
アクセス許可タブを選択 - バケットポリシーの項目の
編集を選択 - AWS公式サイトのバケットポリシーのサンプルコードをコピーしてペースト(https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/WebsiteAccessPermissionsReqd.html)
- サンプルコードで
Bucket-Nameとなっている箇所をバケット名に変更する。 -
変更の保存を選択 -
プロパティタブの静的ウェブサイトホスティングからバケットウェブサイトエンドポイントを選択し、Sorryページが表示されることを確認する。
フェイルオーバールーティングの設定
プライマリの通信に異常があった場合にセカンダリとしてSorryページが表示されるように設定します。
- Route53を開き、レコード名がドメイン名のものを選択し、
レコードを編集を選択 -
ルーティングポリシー:フェイルオーバーに変更 -
フェイルオーバーレコードタイプ:プライマリを選択 -
レコードIDを入力(例. LB-P) -
保存を選択
続いてセカンダリ用のRoute53のDNSレコードを作成します。
-
レコードを作成を選択 -
フェイルオーバーを選択して次へ -
レコード名はプライマリと合わせる。 -
TTL (秒)はテストなので60としておく。 -
フェイルオーバーレコードを定義を選択 - 値/トラフィックのルーティング先:
S3 ウェブサイトエンドポイントへのエイリアスを選択 - リージョンは東京を選択
- S3バケットの項目は先ほど作成したバケットを選択
- フェイルオーバーレコードタイプ:
セカンダリを選択 -
レコードIDを入力(例. LB-S) -
フェイルオーバーレコードを定義を選択 -
レコードを作成を選択
設定した機能を確認
- 一度取得したドメイン名でアクセスして問題なく閲覧できることを確認
- サービスに障害が発生したと仮定して、EC2インスタンスを2台とも停止させる。
- インスタンス停止後に再度アクセスしてSorryページが表示されることを確認する。
- EC2インスタンスを2台とも起動させる。
- インスタンス起動後に再度アクセスして通常のページが閲覧できることを確認できればOK