実装方法

Python の boto3 ライブラリを使用して AWS Step Functions を実行するには、以下の手順に従います。

  1. boto3 モジュールをインポートします。
import boto3
  1. Step Functions クライアントを作成します。
sfn = boto3.client('stepfunctions')
  1. Step Functions の実行には、ステートマシンの ARN(Amazon Resource Name)が必要です。ステートマシンの ARN を取得するためには、AWS Step Functions コンソールでステートマシンを作成し、その ARN を確認する必要があります。
  2. start_execution メソッドを使用してステートマシンを実行します。
# -*- coding: utf-8 -*-
import boto3

sfn = boto3.client('stepfunctions')

def execute(state_machine_arn, input_message_body):
    """StepFunctionsを呼び出す関数
    Args:
        state_machine_arn: 呼び出したいStepFunctionsの名前
        input_message_body: StepFunctionsを呼び出す際のメッセージ
    """
    response = sfn.start_execution(
        stateMachineArn=state_machine_arn,
        input=input_message_body,
    )
    execution_arn = response.get('executionArn')
    print(f'Started Step Function execution: {execution_arn}')
     # ステートマシンの実行結果の取得
    execution_output = sfn.describe_execution(
        executionArn=execution_arn
    )
    print(execution_output)

    # ステートマシンの実行状態の監視
    while execution_output['status'] == 'RUNNING':
        execution_output = sfn.describe_execution(
            executionArn=execution_arn
        )
        print(f'Execution status: {execution_output["status"]}')

上記の例では、describe_execution メソッドを使用してステートマシンの実行結果を取得し、実行状態を監視しています。ステートマシンが実行中の場合は、statusRUNNINGとなります。

注意点

Lambda 関数から直接 Step Functions を実行する場合、Lambda 関数の IAM ロールには適切なアクセス権限が必要です。ステートマシンの実行に必要なアクセス権限を IAM ロールに付与しておく必要があります。

参考