実装方法
Python の boto3
ライブラリを使用して AWS Step Functions を実行するには、以下の手順に従います。
boto3
モジュールをインポートします。
import boto3
- Step Functions クライアントを作成します。
sfn = boto3.client('stepfunctions')
- Step Functions の実行には、ステートマシンの ARN(Amazon Resource Name)が必要です。ステートマシンの ARN を取得するためには、AWS Step Functions コンソールでステートマシンを作成し、その ARN を確認する必要があります。
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
メソッドを使用してステートマシンの実行結果を取得し、実行状態を監視しています。ステートマシンが実行中の場合は、status
がRUNNING
となります。
注意点
Lambda 関数から直接 Step Functions を実行する場合、Lambda 関数の IAM ロールには適切なアクセス権限が必要です。ステートマシンの実行に必要なアクセス権限を IAM ロールに付与しておく必要があります。
参考
SFN - Boto3 1.35.44 documentation
boto3.amazonaws.com