DNS フェイルオーバーのカスタムヘルスチェックの設定 - Amazon API Gateway

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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 を使用したディザスタリカバリメカニズムの作成」と「AWS Lambdaと CloudWatch を使用して VPC 内のプライベートリソースで Route 53 のヘルスチェックを実行する」を参照してください。

前提条件

この手順を完了するには、次のリソースを作成して設定する必要があります。

  • 所有するドメイン名。

  • 2 つの AWS リージョンにある、そのドメイン名の ACM 証明書。詳細については、 での証明書の準備AWS Certificate Manager を参照してください。

  • ドメイン名の Route 53 ホストゾーン。詳細については、Amazon 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 エンドポイントを使用できます。フェイルオーバーメカニズムを定期的にテストして、期待どおりに機能すること、およびオペレーターがフェイルオーバー手順に精通していることを確認します。