AWS X-Ray および Step Functions - AWS Step Functions

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

AWS X-Ray および Step Functions

AWS X-Ray を使用して、ステートマシンのコンポーネントの視覚化、パフォーマンスのボトルネックの特定、およびエラーの原因となったリクエストのトラブルシューティングを行うことができます。ステートマシンはトレースデータを X-Ray に送信し、X-Ray はデータを処理してサービスマップと検索可能なトレースサマリーを生成します。

ステートマシンで X-Ray を有効にすると、X-Ray が利用可能なすべての AWS リージョンで Step Functions で実行されるリクエストをトレースできます。これにより、Step Functions リクエスト全体の詳細な概要が提供されます。Step Functions は、トレース ID がアップストリームサービスによって渡されない場合でも、ステートマシンを実行するためにトレースを X-Ray に送信します。X-Ray サービスマップを使用して、X-Ray と統合されているすべての AWS サービスを含む、リクエストのレイテンシーを表示できます。また、サンプリングルールを設定することで、X-Ray で記録するリクエストとサンプリングレートを条件に応じて指定できます。

ステートマシン用 X-Ray が有効にならず、アップストリームサービスがトレース ID を渡さない場合、Step Functions はステートマシン実行用トレースを X-Ray 送信しません。ただし、アップストリームサービスによってトレース ID が渡されると、Step Functions はステートマシン実行のため、トレースを X-Ray に送信します。

両方がサポートされているリージョンでは、Step Functions AWS X-Ray で を使用できます。X-Ray とStep Funcion のリージョンサポートに関する情報については、Step FunctionsX-Ray エンドポイントとクォータページを参照してください。

X-Ray 関数と Step Functions 結合クォータ

最大 7 日間、トレースにデータを追加し、30 日前のトレースデータと、X-Ray がトレースデータを格納する時間の長さに関するクエリを行うことができます。トレースは X-Ray クォータの対象となります。その他のクォータに加えて、X-Ray は Step Functions ステートマシンに最小保証トレースサイズ 100 KB を提供します。X-Ray に 100 KB を超えるトレースデータが提供される場合、フリーズトレースとなる可能性があります。X-Ray の他のクォータの詳細については、X-Ray エンドポイントとクォータ ページの Service Quotas セクションを参照してください。

重要

Step Functions は、分散マップ状態によって開始された子ワークフロー実行の X-Ray トレースをサポートしていません。このような実行では、トレースドキュメントのサイズ制限を簡単に超える可能性があるためです。

セットアップと設定

ステートマシンの作成時に X-Ray トレースを有効にする

[Specify details] (詳細の指定) ページの [Enable X-Ray tracing] (X-Ray によるトレースを有効にする) を選択して、新しいステートマシンの作成時に X-Ray トレースを有効にできます。

  1. Step Functions コンソールを開き、[ステートマシンの作成] を選択します。

  2. [作成方法を選択] ページで、適切なオプションを選択してステートマシンを作成します。[サンプルプロジェクトを実行] を選択する場合、ステートマシンの作成時に X-Ray トレースを有効にすることはできません。ステートマシンの作成後に X-Ray トレースを有効にする必要があります。既存のステートマシンで X-Ray を有効にする方法の詳細については、「既存のステートマシンで X-Ray を有効にする」を参照してください。

    [次へ] を選択します。

  3. [詳細の指定] ページで、ステートマシンを設定します。

  4. [Enable X-Ray tracing] (X-Ray によるトレースを有効にする) を選択します。

    X-Ray を有効にする

    Step Functions ステートマシンは、ステートマシンの実行のために X-Ray にトレースを送信します。

    注記

    既存の IAM ロールの使用を選択する場合は、X-Ray の書き込みを許可を確実に行う必要があります。必要なアクセス許可の詳細については、「X-Ray の IAM ポリシー」を参照してください。

既存のステートマシンで X-Ray を有効にする

既存のステートマシンで X-Ray を有効にする:

  1. Step Functions コンソールで、トレースを有効にするステートマシンを選択します。

  2. [編集] を選択します。

  3. [Enable X-Ray tracing] (X-Ray によるトレースを有効にする) を選択します。

    X-Ray を有効にする

    追加の変更が必要になる可能性があることを知らせる通知が表示されます。

    注記

    既存のステートマシンで X-Ray を有効にする場合、トレースを実行できるだけのアクセス権限を十分に付与する IAM ポリシーが備わるように調整が必要です。手動で追加するか、生成できます。詳細については、の IAM ポリシー AWS X-Ray の IAM ポリシーのセクションを参照してください。

  4. (オプション) X-Ray 権限が含まれるように、ステートマシンの新しいロールを自動生成します。

  5. [保存] を選択します。

Step Functions 用 X-Ray トレースを設定

X-Ray トレースを有効にしてステートマシンを初めて実行すると、X-Ray tracing. AWS X-Ray does のデフォルトの設定値を使用して、アプリケーションに送信されるすべてのリクエストのデータが収集されるわけではありません。代わりに、統計的に有意な数のリクエストのデータを収集します。デフォルトでは、毎秒、最初のリクエストを記録し、追加リクエストの 5% を記録します。1 秒あたり 1 つのリクエストがリザーバです。これにより、サービスがリクエストを処理している限り、毎秒少なくとも 1 つのトレースが記録されます。5% は、リザーバサイズを超えて追加リクエストがサンプリングされるレートです。

開始時にサービス料がかからないように、デフォルトのサンプリングレートは控えめになっています。 デフォルトのサンプリングルールを変更し、サービスまたはリクエストのプロパティに基づいてサンプリングを適用する追加のルールを設定するように X-Ray を設定できます。

例えば、サンプリングを無効にして、状態を変更したり、 または AWS アカウント トランザクションを処理したりする呼び出しのすべてのリクエストを追跡できます。バックグラウンドポーリング、ヘルスチェック、接続保守などの大量の読み取り専用呼び出しには、低いレートでサンプリングを行い、発生した問題に気づけるデータを得ることができます。

ステートマシンのサンプリングルールを設定:

  1. X-Ray コンソール に移動します。

  2. [Sampling] (サンプリング) を選択します。

  3. ルールを作成するには、[Create sampling rule] (サンプリングルールの作成) を選択します。

    ルールを編集するには、ルールの名前を選択します。

    ルールを削除するには、ルールを選択し、[Actions] (アクション) メニューを使用して削除します。

名前や優先度など、既存のサンプリングルールの一部は変更できません。代わりに、既存のルールを追加またはクローンを作成し、望みの変更を行い、新しいルールを活用します。

X-Ray サンプリングルールの詳細および各種パラメータの設定方法については、X-Ray コンソールにおけるサンプリングルールの設定を参照してください。

アップストリームサービスの統合

エクスプレス、同期、標準ワークフローなどの Step Functions ワークフローの実行をアップストリームサービスと統合するには、traceHeader を設定する必要があります。API Gateway で HTTP API を使用している場合、これは自動的に行われます。ただし、Lambda 関数や SDK を使用している場合は、StartExecution または StartSyncExecution API 呼び出しで traceHeader を自分で設定する必要があります。

traceHeader 形式を \p{ASCII}∗ として指定する必要があります。また、Step Functions が同じトレース ID を使用できるようにするには、形式を Root={TRACE_ID};Sampled={1 or 0} として指定する必要があります。Lambda 関数を使用している場合は、TRACE_ID を現在のセグメントのトレース ID に置き換え、サンプリングモードが true の場合は、Sampled フィールドを 1 に設定し、サンプリングモードが false の場合は 0 に設定します。トレース ID をこの形式で指定すると、完全なトレースが確実に得られます。

以下は、traceHeader を指定する方法を示すために Python で記述された例です。

state_machine = config.get_string_paramter("STATE_MACHINE_ARN") if (xray_recorder.current_subsegment() is not None and xray_recorder.current_subsegment().sampled) : trace_id = "Root={};Sampled=1".format( xray_recorder.current_subsegment().trace_id ) else: trace_id = "Root=not enabled;Sampled=0" LOGGER.info("trace %s", trace_id) # execute it response = states.start_sync_execution( stateMachineArn=state_machine, input=event['body'], name=context.aws_request_id, traceHeader=trace_id ) LOGGER.info(response)

概念

X-Ray コンソール

AWS X-Ray コンソールでは、アプリケーションが提供するリクエストのサービスマップとトレースを表示できます。ステートマシンで有効になっているときに、X-Ray が収集した詳細情報を閲覧するため、コンソールにアクセスできます。

ステートマシン実行のために X-Ray コンソールにアクセスする方法に関する情報は、X-Ray コンソールの表示 を参照してください。

X-Ray コンソールの詳細については、X-Ray コンソールのドキュメントを参照してください。

セグメント、サブセグメント、およびトレース

ステートマシンへのリクエストに関する情報をセグメントが記録します。これには、ステートマシンが実行する作業などの情報が含まれており、ダウンストリームコールに関する情報があるサブセグメントを含む可能性があります。

トレースでは、1 つのリクエストで生成されたセグメントをすべて収集します。

サンプリング

効率的にトレースを行ってアプリケーションが処理するリクエストの代表的なサンプルを提供するため、X-Ray によってサンプリングアルゴリズムが適用され、トレースするリクエストが決定されます。これは、サンプリングルールを編集すれば、変更できます。

メトリクス

ステートマシンの場合、X-Ray は呼び出し時間、状態遷移時間、Step Functions 全実行時間、およびこの実行時間の分散を計測します。この情報には、X-Ray コンソールを通じてアクセスできます。

分析

AWS X-Ray Analytics コンソールは、トレースデータを解釈するためのインタラクティブなツールです。現在のトレースセットに関連付けられているグラフとメトリクスおよびフィールドのパネルをクリックして、アクティブなデータセットをきめ細かく絞り込むことができます。これにより、ステートマシンのパフォーマンス、パフォーマンス問題のすばやい発見と特定方法を分析できます。

X-Ray 分析の詳細については、AWS X-Ray 「分析コンソールの操作」を参照してください。

Step Functions サービス統合と X-Ray

Step Functions と統合されている AWS サービスの中には、リクエストにトレースヘッダーを追加したり、X-Ray デーモンを実行したり、サンプリング決定を行ったり、トレースデータを X-Ray にアップロードしたり AWS X-Ray することで、 との統合を提供するものがあります。その他は AWS X-Ray SDK を使用して計測する必要があります。X-Ray 統合をまだサポートしていないものもあります。Step Functions とのサービス統合を使用する場合は、完全なトレースデータを提供するために X-Ray 統合が必要です。

ネイティブ X-Ray サポート

ネイティブ X-Ray サポートとのサービス統合には、次のものがあります。

必要な計器

X-Ray 計器が必要なサービス統合:

  • Amazon Elastic Container Service

  • AWS Batch

  • AWS Fargate

クライアント側のトレースのみ

その他のサービス統合では、X-Ray のトレースはサポートされません。ただし、クライアント側のトレースは引き続き収集できます。

  • Amazon DynamoDB

  • Amazon EMR

  • Amazon SageMaker

  • AWS CodeBuild

  • AWS Glue

X-Ray コンソールの表示

X-Ray は、サービスからセグメント形式でデータを受け取ります。X-Ray は、トレースへの共通リクエストを含むセグメントをグループ化します。X-Ray は、トレースを処理して、アプリケーションのビジュアル表現を提供するサービスグラフを生成します。

ステートマシンの実行をスタートしたら、[Execution details] (実行詳細) セクションで [X-Ray trace map] (X-Ray トレースマップ) を選択して X-Ray トレースを表示できます。

X-Ray トレース

ステートマシンに対する X-Ray を有効にした後、X-Ray コンソールでその実行のトレース情報を表示できます。

Step Functions の X-Ray トレース情報を表示

次の手順は、X-Ray を有効にして実行した後にコンソールに表示できる情報の種類を示しています。コールバックパターンの例 (Amazon SQS、Amazon SNS、Lambda) サンプルプロジェクト用 X-Ray トレースが表示されます。

トレース

実行が完了した後、X-Ray コンソールに移動して、そこで X-Ray トレース ページが表示されます。これにより、サービスマップの概要と、ステートマシンのトレースおよびセグメント情報が表示されます。

X-Ray トレース

サービスマップ

X-Ray コンソールのサービスマップは、エラーが発生しているサービス、高レイテンシーとの接続があるサービスを特定するか、不成功に終わったリクエストのトレースを識別する助けとなります。

X-Ray トレース

トレースマップ上で、サービスノードを選択して、その接続を移動したリクエストを閲覧するため、そのノードまたは 2 つのノード間のエッジへのリクエストを閲覧できます。ここで、WaitForCallBack ノードが選択されており、その実行および応答ステータスに関する追加情報を表示できます。

X-Ray トレース

X-Ray サービスマップとステートマシンとの相関関係を確認できます。X-Ray をサポートしていれば、Step Functions によって呼び出されるサービス統合ごとにサービスマップノードがあります。

X-Ray トレース

セグメントとサブセグメント

トレースは、1 つのリクエストで生成されたセグメントを収集します。各セグメントには、リソース名、リクエストの詳細、行った作業の詳細が含まれています。[Trace] (トレース) ページでは、セグメントと、拡大した場合は対応するサブセグメントが表示されます。セグメントまたはサブセグメントを選択して、その詳細を表示できます。

各タブを選択して、セグメントとサブセグメントの情報の表示方法を確認します。

Overview of Segments

このステートマシンのセグメントとサブセグメントの概要。サービスマップ上のノードごとに別のセグメントがあります。

セグメント
View segment detail

セグメントを選択すると、リソース名、リクエストの詳細、行った作業の詳細が含まれています。

セグメントの詳細
View subsegment detail

セグメントでは、完了した作業に関するデータをサブセグメントに分けることができます。サブセグメントを選択すると、より詳細なタイミング情報と詳細を表示できます。サブセグメントには、 AWS サービス、外部 HTTP API、または SQL データベースへの呼び出しに関する追加の詳細を含めることができます。

サブセグメントの詳細

分析

AWS X-Ray Analytics コンソールは、トレースデータを解釈するためのインタラクティブなツールです。これを使用して、ステートマシンのパフォーマンスをより簡単に理解できます。このコンソールを使用すると、インタラクティブな応答時間グラフと時系列グラフを使用して、トレースを調査、分析、および視覚化できます。こうすると、パフォーマンスとレイテンシーの問題をすばやく選択しやすくなります。

現在のトレースセットに関連付けられているグラフとメトリクスおよびフィールドのパネルをクリックして、アクティブなデータセットをきめ細かく絞り込むことができます。

分析

構成

X-Ray コンソールから、サンプリングと暗号化オプションを設定できます。

Sampling

[Sampling] (サンプリング) を選択して、サンプリングレートと設定の詳細を表示します。サンプリングルールを変更して記録するデータの量を制御し、特定の要件に合わせてサンプリング動作を変更できます。

サンプリング
Encryption

Encryption (暗号化) を選択して、暗号化設定を変更します。デフォルトの設定を使って、X-Ray が静止時のトレースと日付を暗号化できます。または、必要に応じてカスタマーマスターキーを選択できます。後の方法を選択した場合、スタンダード AWS KMS 料金が適用されます。

暗号化設定

トレースマップまたはサービスマップにデータがない場合はどうなりますか。

X-Ray が有効なものの、X-Ray コンソールでデータが表示されない場合は、次の点をチェックしてください。

  • IAM ロールを正しく設定して、X-Ray への書き込みが許可されるようにします。

  • サンプリングルールでは、データのサンプリングが許可されています。

  • 新しく作成または変更した IAM ロールが適用されるまでに短い遅延が生じる可能性があるため、数分後にトレースマップまたはサービスマップを再度チェックしてください。

  • X-Ray トレースパネルに Data Not Found が表示された場合は、IAM アカウントの設定をチェックし、目的のリージョンで AWS Security Token Service が有効になっていることを確認します。詳細については、「IAM ユーザーガイド」の「 AWS STS での のアクティブ化と非アクティブ化 AWS リージョン」を参照してください。