ハンズオン4 独自ドメインの設定/障害時にSORRYページへ通信を流す

2021.10.7 記事修正：くろかわ（@AwsskillC）さんからの指摘を修正

この記事を書いている私について

インフラ系PMO歴半年でAWSクラウドプラクティショナーを取ったばかりの私が
AWS CloudTechという動画学習サービスに参加し、AWSエンジニアを目指すための備忘録です:fire:

構築→記事作成→指摘反映の中で間違いがあったら業務でも発生するので、これからも気を引き締めて行きたいと思います。


本記事の目標
-
前回の「スケーラビリティのあるブログサービスを構築する」に引き続き、
今回はRoute 53とS3の機能を使い独自ドメインの設定と障害時にSORRYページへ通信を流す設定を行っていきたいと思います。

https://qiita.com/zetzetn/items/879768e1c1ae22e10538


前回の記事ではロードバランサーまでアクセスでき、ブログが表示される状態です。

今回はドメインを取得し、取得したドメインでアクセスできるようにRoute53に設定変更を加えていきます。

その後、フェイルオーバールーティングの設定を行います。

S3にHTMLファイルをアップロードして、S3の静的ウェブサイトホスティング機能でSorryサイトを作成します。

プライマリの通信に問題が発生した場合は、セカンダリに通信を流す設定を行います。



今回の構成図
-
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/465906/377e4f3a-5106-ec5c-fe6c-50cf71c3d60e.png)


※構成図の作成に[cloudcraft](https://app.cloudcraft.co/ "cloudcraft")を利用しています。
　

構築の流れ
-

以下の流れで構築を進めます。

・前回の環境を再構築
・ドメイン取得とRoute 53設定
・取得したドメインとロードバランサーを紐づけ
・S3バケット作成
・Sorryページ設定
・フェイルオーバールーティング設定
・機能テスト

・前回の環境を再構築
-
・EC2インスタンスが2台立ち上がっていることを確認。
・RDSを削除した場合は、スナップショットから復元する。
・ALBを削除した場合は、ALBを作成する。
・ロードバランサーのIPアドレスでブログが閲覧できることを確認しておく。
　

・ドメイン取得とRoute 53設定
-

今回はFreenomからドメインを取得します。

osusuさんの記事が分かりやすかったです↓
[freenomで無料ドメインを取得する](https://osusublog.net/?p=1680&utm_source=rss&utm_medium=rss&utm_campaign=%25e3%2580%2590%25e7%25b0%25a1%25e5%258d%2598%25e3%2583%25bb%25e7%2584%25a1%25e6%2596%2599%25e3%2580%2591freenom%25e3%2581%258b%25e3%2582%2589%25e3%2583%2589%25e3%2583%25a1%25e3%2582%25a4%25e3%2583%25b3%25e3%2582%2592%25e7%2584%25a1%25e6%2596%2599%25e3%2581%25a7%25e5%258f%2596%25e5%25be%2597%25e3%2581%2599%25e3%2582%258b"freenomで無料ドメインを取得する")

ドメイン取得後はFreenomの方でDNSレコードの設定などの作業が必要になります。
ドメインの管理サーバーをRoute53のネームサーバーに書き換えます。

(2021.10.7 追記)
私がやった時ですが、サイト言語を日本語にすると上手く動かないことがあり、そのせいでドメイン取得が思うようにいきませんでした。
英語設定で進めるとトラブルが少ないと聞きましたので参考にしてください。


・取得したドメインとロードバランサーを紐づけ
-
Route 53にてドメインとロードバランサーを紐づける為レコードを作成します。

この状態でドメイン名をブラウザのURL欄に貼り付けて、ブログにアクセスできるようになります。


・S3バケット作成
-
今の状態ではEC2からCloudWatchにログを送信する権限がありません。
その為権限を付与するためIAMロールを作成します。

ポリシーは1から作る必要はなく、AWSが用意しているCloudWatchAgentServerPolicyを利用しました。
IAMロールを作成後、EC2にアタッチします。

・Sorryページ設定
-
アップロードするSorryページのファイルとフォルダはクラテクの方で用意してくれています。
S3にアップロードし、静的ウェブホスティングを有効にしてバケットポリシーを編集します。
バケットポリシーはAWS公式サイトのサンプルコードを使用しています。
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/WebsiteAccessPermissionsReqd.html


・フェイルオーバールーティング設定
-
Route 53にてプライマリの通信に異常があった場合にセカンダリとしてSorryページが表示されるように設定します。

続いて、セカンダリ用にRoute 53のDNSレコードを作成します。



・機能テスト
-
ここではドメイン名でアクセスし、問題なく閲覧が出来ることを確認します。
・サービスに障害が発生したと仮定して、EC2インスタンスを2台とも停止させる。
・インスタンス停止後に再度アクセスしてSorryページが表示されることを確認する。
・EC2インスタンスを2台とも起動させる。
・インスタンス起動後に再度アクセスして通常のページが閲覧できることを確認できればOK

上記が確認出来たら講座は完了です。

サービス停止
-
お約束ですが、下記サービスを使わないときは切っておきましょう。

■EC2(オンデマンド)→時間単位または秒単位で計算されるため停止中にすること。

■RDS(オンデマンド)→RDS の使用料は秒ごとに課金されるため、スナップショットを取って削除すること。

■ALB→実行時間に対して時間単位、または1時間未満で使用料を課金されるため、削除すること。

■EBS→時間単位または秒単位で計算されるため停止中にすること。


ハンズオン4に発生する費用一覧
-
・EC2 x 2
・RDS x 1
・ALB x 1
・Route 53 x 1
・S3 x 1

1時間に13円ほど費用が発生します。
構築してすぐ停止すればもっと安く構築できますよ！


最後に
-

独自ドメインの設定と障害時にSORRYページへ通信を流す方法を学びました。
手を動かしながら学ぶと頭に入ってきますね。この調子で学習を進めたいと思います。


AWS CloudTechの課題としてこれらが残っていますので、
やったことを今後のQiita記事にして発信していきたいと思います。
これから始められる方の参考になれば嬉しいです。

今後の学習予定↓↓↓
・HTTPS通信でのアクセス
・キャッシュサーバーの配置
・CloudFormationの作成、更新
・Lamda関数
・Docker

内容に不備がございましたら、ご指摘いただけますと幸いです。


今後の励みになりますので、良ければ「LGTM」をお願いします。 :bow:
閲覧ありがとうございました。

---
この記事はAWS初学者を導く体系的な動画学習サービス「AWS CloudTech」のハンズオンを基に作成しました。
https://aws-cloud-tech.com/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/465906/00637e63-5339-1b83-c3c1-720e95174ec0.png)