LoginSignup
0
0

More than 3 years have passed since last update.

Well Architected Frameworkを意識して自分なりにアーキテクチャ設計・構築をしてみた。<Route53、ACM編>

Last updated at Posted at 2020-09-26

HTTPS化

ACM

事前にドメインを取得して、Route53にホストゾーンの作成を行っています。

注意
ALBで利用する証明書はALBのあるリージョンで、Cloudfrontで利用する証明書は必ず「バージニア北部」で取得して下さい。

それではマネジメントコンソールの「Certificate Manager」から証明書の発行を行います。
スクリーンショット 2020-09-26 23.36.46.png

今回は一般的な用途ですので、「パブリック証明書のリクエスト」を選択して下さい。
スクリーンショット 2020-09-26 23.36.59.png

ドメイン名の登録を行います。

この時、複数のドメインを追加することも可能です。
また、「*.example.com」のようにワイルドカードで追加することも可能ですので、サブドメインを使うのであれば、追加しても良いでしょう。

「*.example.com」で発行を行った場合、「example.com」は適用されないので、別で登録する必要があります。

スクリーンショット 2020-09-26 23.37.22.png

今回は「DNSの検証」を選択します。
スクリーンショット 2020-09-26 23.37.29.png

「Route53でのレコードの作成」をクリックすると、ACMが自動でCNAMEのレコードを追加してくれます。

スクリーンショット 2020-09-26 23.38.03.png

検証に少し時間がかかるので、今のうちにALB用の証明書も発行しておきます。

状況が「発行済み」になれば完了です。
スクリーンショット 2020-09-27 3.03.33.png

Cloudfrontでカスタムドメイン(デフォルト以外のドメイン)を使用する場合はALBでのHTTPS化も必要です。
まずはALBのHTTPS化を行いましょう。

リスナーを「HTTPS」→「HTTPS」に変更します。

リスナーを選択して「編集」に進んで下さい。
スクリーンショット 2020-09-27 3.07.40.png

「プロトコル:ポート」→「HTTPS:443」に変更
「デフォルトのSSL証明書」から先ほど作成した証明書を選択をして下さい。

スクリーンショット 2020-09-27 3.07.58.png

次にCloudfront側でのHTTPS化を行います。

「Distribution」の設定から

設定 項目
Alternate Domain Names ドメイン名
SSL Certificate 先ほど作成したCloudfront用の証明書

を設定します。
スクリーンショット 2020-09-27 3.06.01.png

また、Behaviorの設定の

設定 項目
Viewer Protocol Policy Redirect HTTP to HTTPS

を設定することで、Cloudfront側でリダイレクトの設定を行うことができます。

補足
Cloudfrontを使わない場合はALBのリダイレクト機能を設定することで同じようなことができます。

スクリーンショット 2020-09-27 3.06.40.png

最後に、「Route53」にてレコードの追加を行えばHTTPS化の完成です。
スクリーンショット 2020-09-27 3.08.54.png

Route53

ヘルスチェックの有効化

Route53のヘルスチェックは3種類あります。

ヘルスチェックの種類
  • エンドポイントをモニタリングするヘルスチェック

    • IPアドレス OR ドメイン名 に対してTCP接続を確立しようと試み、正常かどうかを判断する。
  • 他のヘルスチェック (算出したヘルスチェック) を監視するヘルスチェック

    • 「エンドポイントをモニタリングするヘルスチェック」を複数使用し、AND、ORで制御可能なヘルスチェック
  • CloudWatch アラームをモニタリングするヘルスチェック

    • Cloudwatchを利用したヘルスチェック
    • ユースケースとしてはDynamoDBへのスロットル読み込みイベント数や正常に機能していると推測される ELBの数などの CloudWatch メトリクスのステータスをモニタリングして判断を行う みたいな使い方が出来ます。

フェイルオーバーを実装する為にヘルスチェックを関連付ける場合は基本的には「エンドポイント」で作成すればいいかと思います。

スクリーンショット 2020-09-27 3.44.08.png

SNS通知が利用できるので、Chatbotを利用して簡単にSlackBotも作れそうですね
これに関しては、後ほど作成を行います。
スクリーンショット 2020-09-27 3.44.19.png

Route53でのヘルスチェックでもレイテンシーも追加の設定で確認できますが、より詳しいサービスの監視を行いたい場合はCloudwatch Syntheticを利用するといいでしょう。

Cloudwatch Syntheticsを用いてサービス状況を監視

CloudwatchSyntheticsというサービスの概要は知っていましたが、触るのは今回が初めてでした。

設定はこんな感じでエンドポイントの URL を指定すると、その下の Canary Builder に監視内容を設定するコードが生成されるっぽいです。(現時点ではPythonは指定出来ない...)
スクリーンショット 2020-09-21 2.48.00.png

  • ハートビートのモニタリング
    URLをチェックしてくれる

  • API Canary
    そのまま APIバージョン

  • リンク切れチェッカー
    いろんなパスまで見てくれる

  • GUIワークフロービルダー
    ページ内での色々なアクションを監視してくれるっぽい
    スクリーンショット 2020-09-21 2.53.27.png

SNSトピックと関連付け出来るので、Slackへの通知も簡単そうですね

スクリーンショット 2020-09-21 2.48.25.png

ログと一緒にスクリーンショットも保存してくれるのは面白いです
スクリーンショット 2020-09-21 2.45.52.png

レスポンスタイムも
スクリーンショット 2020-09-21 2.46.14.png

ログも
スクリーンショット 2020-09-21 2.46.27.png

Cloudwatchアラームで異常時のアラートを設定する事もできます(レスポンスタイムでアラートなど)

Syntheticsの利点として一番大きいのは「圧倒的安さ!」かと思います。
1時間に1回実行する設定でもたったの約100円/月!!!

Datadogでもsyntheticsモニタリングありますけど、$12/月ですね。

また、AWS Lambda + Amazon S3 + Amazon CloudWatch Alarms を使ってるサービスなので、とてもわかりやすいです。それでいてとても柔軟な設定ができるので結構使えそうな気がします。

最後に

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0