AWS X-Ray を使用して AWS AppSync でリクエストを追跡する - AWS AppSync GraphQL

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

AWS X-Ray を使用して AWS AppSync でリクエストを追跡する

AWS X-Ray を使用して、AWS AppSync で実行されるリクエストをトレースできます。X-Ray は、X-Ray を利用できるすべての AWS リージョンで AWS AppSync と併用できます。X-Ray は、GraphQL リクエスト全体の詳細な概要を提供します。これにより、API とその基盤となるリゾルバーとデータソース内のレイテンシーを分析できます。X-Ray サービスマップを使用して、X-Ray と統合されている AWS サービスなど、リクエストのレイテンシーを表示できます。また、サンプリングルールを設定することで、X-Ray で記録するリクエストとサンプリングレートを基準に応じて指定できます。

X-Ray でのサンプリングの詳細については、「AWS X-Rayコンソールでのサンプリングルールの設定」を参照してください。

セットアップと設定

AWS AppSync コンソールを使用して GraphQL API の X-Ray トレースを有効にできます。

  1. AWS AppSync コンソールにサインインします。

  2. ナビゲーションパネルから [設定] を選択します。

  3. X-Ray で、[X-Ray を有効にする] をオンにします。

  4. [Save] を選択します。X-Ray が API に対して有効になりました。

AWS CLI または AWS CloudFormation を使用している場合は、xrayEnabled プロパティを true に設定することで、新しい AWS AppSync API の作成時に X-Ray トレースを有効にしたり、既存の AWS API を更新したりすることもできます。

AWS AppSync API で X-Rayトレースを有効にすると、適切なアクセス許可を持つ AWS Identity and Access Managementサービスリンクロールが自動的にアカウントに作成されます。これにより、AWS AppSync は安全な方法で X-Ray にトレースを送信できます。

X-Ray で API をトレースする

サンプリング

サンプリングルールを使用することで、コードを変更または再デプロイすることなく、その場で、AWS AppSync で記録するレコードの量を制御したり、サンプリング動作を変更したりできます。たとえば、このルールは、API ID 3n572shhcpfokwhdnq1ogu59v6 を持つ GraphQL API へのリクエストをサンプリングします。

  • ルール名test-sample

  • 優先度10

  • リザーバのサイズ10

  • 固定レート10

  • サービス名*

  • サービスタイプAWS::AppSync::GraphQLAPI

  • HTTP メソッド*

  • リソース ARNarn:aws:appsync:us-west-2:123456789012:apis/3n572shhcpfokwhdnq1ogu59v6

  • ホスト*

トレースについて

GraphQL API の X-Ray トレースを有効にすると、X-Ray トレース詳細ページを使用して、API に対するリクエストの詳細なレイテンシー情報を調べることができます。次に、この特定のリクエストのサービスマップとともにトレースビューを表示する例を示します。リクエストは Post タイプを使用して postAPI と呼ばれる API に対して行われました。そのデータは PostTable-Example という名前の Amazon DynamoDB テーブルに含まれています。

次のトレースイメージは、次の GraphQL クエリに対応しています。

query getPost { getPost(id: "1") { id title } }

getPost クエリのリゾルバーは、基盤になる DynamoDB データソースを使用します。次のトレースビューには、 DynamoDB への呼び出しと、クエリの実行のさまざまな部分のレイテンシーが表示されます。

Trace view showing client request, postAPI, and DynamoDB with durations and request details.
  • 上の図では、/getPost は、解決される要素への完全なパスを表します。この場合、getPost はルート Query タイプのフィールドであるため、パスのルートの直後に表示されます。

  • requestMappingTemplateEvaluation は、AWS AppSync によってクエリ内のこの要素のリクエストマッピングテンプレートを評価するのに費やされた時間を表します。

  • Query.getPost は、型とフィールド (Type.field 形式) を表します。API の構造とトレースされるリクエストに応じて、複数のサブセグメントを含めることができます。

    • DynamoDB は、このリゾルバーにアタッチされているデータソースを表します。これには、DynamoDB へのネットワーク呼び出しがフィールドを解決するためのレイテンシーが含まれます。

    • responseMappingTemplateEvaluation は、AWS AppSync によってクエリ内のこの要素のレスポンスマッピングテンプレートを評価するのに費やされた時間を表します。

X-Ray でトレースを表示する場合、サブセグメントを選択して詳細ビューを表示することで、AWS AppSync セグメント内のサブセグメントに関する追加のコンテキスト情報とメタデータ情報を取得できます。

深くネストされたクエリや複雑なクエリの場合、AWS AppSync によって X-Ray に配信されるセグメントは、AWS X-Rayセグメントドキュメントで定義されているように、セグメントドキュメントで許可される最大サイズよりも大きくなる場合があります。X-Ray では、制限を超えるセグメントは表示されません。