AWS Step FunctionsでX-Rayを有効にしてみた(AWS CDK v2)

2022.07.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、CX事業本部 IoT事業部の若槻です。

AWS Step Functionsでは、X-Rayを有効にすることによりState Machine実行を可視化して、ボトルネックの発見やトラブルシュートに役立てることができます。

今回は、AWS CDK v2でAWS Step FunctionsのX-Rayを有効にし、動作を確認してみました。

やってみた

環境作成

AWS CDK v2(TypeScript)で次のようなCDKスタックを作成します。

lib/aws-app-stack.ts

import { Construct } from 'constructs';
import {
  aws_lambda_nodejs,
  aws_stepfunctions,
  aws_stepfunctions_tasks,
  Duration,
  Stack,
  StackProps,
} from 'aws-cdk-lib';
import { WaitTime } from 'aws-cdk-lib/aws-stepfunctions';

export class AwsAppStack extends Stack {
  constructor(scope: Construct, id: string, props: StackProps) {
    super(scope, id, props);

    const funcTask = new aws_stepfunctions_tasks.LambdaInvoke(
      this,
      'funcTask',
      {
        lambdaFunction: new aws_lambda_nodejs.NodejsFunction(this, 'func', {
          entry: 'src/handler.ts',
          handler: 'handler',
        }),
      },
    );

    // StateMachine(Standard)
    new aws_stepfunctions.StateMachine(this, 'stateMachine', {
      stateMachineName: 'stateMachine',
      definition: funcTask.next(
        new aws_stepfunctions.Wait(this, 'wait', {
          time: WaitTime.duration(Duration.seconds(3)),
        }),
      ),
      tracingEnabled: true,
    });

    // StateMachine(Express)
    new aws_stepfunctions.StateMachine(this, 'express', {
      stateMachineName: 'express',
      stateMachineType: aws_stepfunctions.StateMachineType.EXPRESS,
      definition: new aws_stepfunctions.Pass(this, 'pass'),
      tracingEnabled: true,
    });
  }
}
  • StateMachine ClasstracingEnabledtrueにすることにより、StateMachineのX-Rayを有効にすることができます。
  • StandartおよびExpressの2種類のWorkflow TypeのState Machineをそれぞれ作成して試してみます。

動作確認

Standard Workflow

まずはStandard Workflowを実行してみます。

実行が成功しました。Details欄を見ると[X-Ray trace map]という項目が表示されていますね。Trace IDのリンクを開きます。

するとX-RayのコンソールでTraceの詳細が開けました。しかしこれは古いコンソールなので新しい方を開きます。

すると新しいコンソールでTraceの一覧を開けました。見たいTraceを開きます。

Traceの詳細画面が開けました。TaskおよびTask内のAPIコールの時系列が可視化されていますね。

Express Workflow

Express Workflowの方も実行してみます。

実行が成功しました。Traceのリンクが表示されているので開きます。

新しいコンソールのTraceの詳細画面です。Standardと同じく、実行の時系列が可視化されていますね。

Step Functionsの新しい実行詳細画面でもある程度追跡できる

Standard Workflowの場合、AWS Step Functionsの新しい実行詳細ページのコンソールであれば、デフォルトである程度の時系列の追跡は行えます。(Expressはなし)

手軽さではこちらの方に軍配が上がるかも知れません。

ただし、X-rayを利用するとTraceを横断的にクエリできたり、X-Ray Analyticsが利用できたりするので、より詳細な分析ができるようにはなります。

おわりに

AWS CDK v2でAWS Step FunctionsのX-Rayを有効にし、動作を確認してみました。

AWS X-Rayは全然使ったことが無かったのですが、Serverlessな構成では処理が多くのサービスやリソースに分散することが多いので、そういった場合にX-Rayは効果を発揮しそうだなと感じました。

以上