クライアントが Amazon API Gateway でエッジ最適化 API にリクエストを送信するとき、レイテンシーが高くなります。トラブルシューティングのためにレイテンシーの原因を見つけるにはどうすればよいですか?
エッジ最適化 API エンドポイントのレイテンシーの原因を調べるには、接続パスの次の各部分にかかる時間を確認します。
重要: これらの接続パスのステップは、エッジ最適化 API エンドポイントにのみ適用され、リージョン API エンドポイントには適用されません。エッジ最適化 API は、Amazon CloudFront ディストリビューションを通じてアクセスされます。リージョン API エンドポイントは、CloudFront 経由でアクセスされません。
接続パスのうち、時間が最も長くかかっている部分が、レイテンシーの原因です。
注: AWS X-Ray を使用して、Amazon API Gateway REST API を経由して基盤となるサービスに移動するユーザーリクエストをトレースおよび分析できます。API Gateway は、X-Ray が利用可能な AWS リージョンのすべてのAPI Gateway REST API エンドポイントタイプのために X-Ray トレーシングをサポートします。X-Ray が利用可能なすべてのリージョンを確認するには、AWS リージョン表を参照してください。
API の接続パスプロセスのステップ 1~6 の所要時間を確認するには、GitHub で curl_for_latency Bash スクリプトを実行します。
重要: [URL]、[HTTP method] (HTTP メソッド)、および [parameters] (パラメータ) の値を、API の情報と一致するように置き換えてください。
このスクリプトは、API が次の接続パスのステップを完了するのにかかる時間を返します。
レイテンシーの原因となっているイベントを特定したら、CloudFront によるレイテンシーの増加をトラブルシューティングして減らすにはどうすればよいですか?を参照してください。
CloudWatch コンソールで API の Latency メトリクスを確認します。その後、[1-minute interval] (1 分間隔) と [Maximum] (最大) の Latency メトリクスグラフ設定を構成して、1 分間の時間範囲内で最長の処理時間を確認します。
手順については、CloudWatch コンソールで API Gateway のメトリクスを表示するを参照してください。
CloudWatch コンソールで IntegrationLatency メトリクスを確認します。その後、[1-minute interval] (1 分間隔) と [Maximum] (最大) の IntegrationLatency グラフ設定を構成して、1 分間の時間範囲内で最長の処理時間を確認します。
API で CloudWatch ログ記録がアクティブ化されている場合は、次のような行項目のログを確認します。
Received response. Integration latency: 325 ms
また、レイテンシーのトラブルシューティングをさらに進めるために、アクセスログに $context 変数を追加することもできます。
手順については、CloudWatch Logs をオンにして、API ゲートウェイ REST API または WebSocket API をトラブルシューティングする方法を教えてくださいを参照してください。
API Gateway で AWS Lambda を使用していて、IntegrationLatency メトリクスが高い場合は、Lambda 関数の CloudWatch Logs を確認してください。Lambda 関数と統合されている API エンドポイントがクライアントに応答を送信するのに時間がかかりすぎる場合は、高レイテンシーに対処する必要があります。Lambda 関数のコールドスタートは関数の継続時間メトリクスには記録されないため、API の統合レイテンシーが関数の継続時間より長くなる可能性があります。コールドスタートのある関数の実行時間を確認するには、AWS X-Ray を使用します。
詳細については、Lambda と統合されている API Gateway リクエストの高レイテンシーをトラブルシューティングするにはどうすればよいですか?を参照してください。
API へのリクエストとレスポンスの合計時間 (「time_total」) を確認し、次を減じます。
これで、API Gateway が CloudFront エッジロケーションに応答し、CloudFront がクライアントに応答するまでの時間を確認できます。
HTTP API メトリクスの操作
Amazon API Gateway のディメンションとメトリクス
CloudWatch メトリクスを使用した WebSocket API の実行のモニタリング
Amazon API Gateway のログをトラブルシューティングに使用するにはどうすればよいですか。