API Gateway API の DNS フェイルオーバーのカスタムヘルスチェックの設定
Amazon Route 53 ヘルスチェックを使用して、プライマリ AWS リージョンの API Gateway API からセカンダリリージョンの API Gateway API への DNS フェイルオーバーを制御できます。これは、リージョンの問題が発生した場合の影響を軽減するのに役立ちます。カスタムドメインを使用すると、クライアントが API エンドポイントを変更しなくてもフェイルオーバーを実行できます。
エイリアスレコードに対して [ターゲットのヘルスの評価] を選択した場合、それらのレコードが失敗するのは API Gateway サービスがリージョンで利用できない場合だけです。場合によっては、その時間より前に独自の API Gateway API で中断が発生する可能性があります。DNS フェイルオーバーを直接制御するには、API Gateway API のカスタム Route 53 ヘルスチェックを設定します。この例では、オペレーターが DNS フェイルオーバーを制御するのに役立つ CloudWatch アラームを使用します。フェイルオーバーを設定する際のその他の例や考慮事項については、「Route 53 を使用したディザスタリカバリメカニズムの作成
トピック
前提条件
この手順を完了するには、次のリソースを作成して設定する必要があります。
ドメイン名の Route 53 フェイルオーバー DNS レコードを作成する方法の詳細については、「Amazon Route 53 デベロッパーガイド」の「ルーティングポリシーの選択」を参照してください。CloudWatch アラームをモニタリングする方法の詳細については、「Amazon Route 53 デベロッパーガイド」の「CloudWatch アラームのモニタリング」を参照してください。
ステップ 1 : リソースを設定する
この例では、以下のリソースを作成して、ドメイン名の DNS フェイルオーバーを設定します。
-
2 つの AWS リージョンにある API Gateway API
-
2 つの AWS リージョンで同じ名前を持つ API Gateway カスタムドメイン名
-
API Gateway API をカスタムドメイン名に接続する API Gateway API マッピング
-
ドメイン名の Route 53 フェイルオーバー DNS レコード
-
セカンダリリージョンの CloudWatch アラーム
-
セカンダリリージョンの CloudWatch アラームに基づく Route 53 ヘルスチェック
まず、プライマリおよびセカンダリリージョンで、必要なすべてのリソースがあることを確認します。セカンダリリージョンにはアラームとヘルスチェックが含まれている必要があります。これにより、フェイルオーバーの実行についてプライマリリージョンに依存する必要がなくなります。これらのリソースを作成する AWS CloudFormation テンプレートの例については、「primary.yaml
」と「secondary.yaml
」を参照してください。
重要
セカンダリリージョンにフェイルオーバーする前に、必要なリソースがすべて利用可能であることを確認してください。利用可能でない場合、API はセカンダリリージョンのトラフィックに対応することができません。
ステップ 2: セカンダリリージョンへのフェイルオーバーを開始する
次の例では、スタンバイリージョンが CloudWatch メトリクスを受け取り、フェイルオーバーを開始します。フェイルオーバーを開始するにはオペレーターの介入を必要とするカスタムメトリクスを使用します。
aws cloudwatch put-metric-data \
--metric-name
Failover
\--namespace
HealthCheck
\--unit
Count
\--value
1
\--region
us-west-1
メトリクスデータを、設定した CloudWatch アラームの対応するデータに置き換えます。
ステップ 3: フェイルオーバーをテストする
API を呼び出し、セカンダリリージョンからレスポンスがあることを確認します。ステップ 1 でサンプルテンプレートを使用した場合、レスポンスはフェイルオーバー後に {"message": "Hello from the primary Region!"}
から {"message": "Hello from the secondary Region!"}
に変わります。
curl
https://my-api.example.com
{"message": "Hello from the secondary Region!"}
ステップ 4: プライマリリージョンに戻る
プライマリリージョンに戻るには、ヘルスチェックに合格する CloudWatch メトリクスを送信します。
aws cloudwatch put-metric-data \
--metric-name
Failover
\--namespace
HealthCheck
\--unit
Count
\--value
0
\--region
us-west-1
メトリクスデータを、設定した CloudWatch アラームの対応するデータに置き換えます。
API を呼び出し、プライマリリージョンからレスポンスがあることを確認します。ステップ 1 でサンプルテンプレートを使用した場合、レスポンスは {"message": "Hello from the secondary Region!"}
から {"message": "Hello from the primary Region!"}
に変わります。
curl
https://my-api.example.com
{"message": "Hello from the primary Region!"}
次のステップ: 定期的にカスタマイズしてテストする
この例は、DNS フェイルオーバーを設定する 1 つの方法を示しています。フェイルオーバーを管理するヘルスチェックには、さまざまな CloudWatch メトリクスまたは HTTP エンドポイントを使用できます。フェイルオーバーメカニズムを定期的にテストして、期待どおりに機能すること、およびオペレーターがフェイルオーバー手順に精通していることを確認します。