この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
AWS Step Functions は、AWS Lambda 関数および AWS の複数のサービスを、ビジネスに不可欠なアプリケーション内に簡単に配列することができるサーバーレスの関数オーケストレーターです。アプリケーションの状態を維持する、チェックポイント化されたイベント駆動型の一連のワークフローを、視覚的なインターフェイスを使って作成および実行することができます。1つのステップの結果が、次のステップへのインプットとして機能します。アプリケーション内の各ステップは、ユーザーが定義したビジネスロジックに基づいて、順番通りに実行されます。
今回はEC2からStepFunctionsをShellで起動方法を説明させていただきます。
まずは、”HelloWorld”のStepFunctionsを作成します。
上記StepFunctionsでタスクHelloを実行し、タスクWaitで20秒止めて、最後タスクWorldを実行します。
次は、EC2にAWS CLIをインストールと設定を行います。https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-quickstart.html
その後、EC2で”SFnStart.bash”のStepFunctions起動スクリプトを作成します。
DATA_TIME=$(date"+%Y%m%d-%H%M%S")
SF_STATEMACHINE_NAME='HelloWorld'
SF_EXECUTION_NAME=${DATE_TIME}
RUNNING_STATUS="RUNNING"
使う関数を定義します。
SF_STATEMACHINE_ARN=$(aws stepfunctions list-state-machines \
--query "stateMachines[?name==\`${SF_STATEMACHINE_NAME}\`]".stateMachineArn \
--output text)
”HelloWorld”のStepFunctionsのARNを取得。
aws stepfunctions start-execution \
--state-machine-arn ${SF_STATEMACHINE_ARN} \
--name ${SF_EXECUTION_NAME}
StepFunctions起動し、実行名を日付に設定。
SF_EXECUTION_ARN=$(aws stepfunctions list-executions \
--state-machine-arn ${SF_STATEMACHINE_ARN} \
--query "executions[?name==\`${SF_EXECUTION_NAME}\`].executionArn" \
--output text)
実行ARNを取得。
SF_EXECUTION_STATUS=$(aws stepfunctions describe-execution \
--execution-arn ${SF_EXECUTION_ARN} \
--query "status"
--output text)
該当実行のステータスを取得。
while [${SF_EXECUTION_STATUS} = ${RUNNING_STATUS}]
do
sleep 5
SF_EXECUTION_STATUS=$(aws stepfunctions describe-execution \
--execution-arn ${SF_EXECUTION_ARN} \
--query "status"
--output text)
done
実行ステータスを監視し、ステータスが”実行”(RUNNING)以外の場合、次の処理を実行します、以外の場合、5秒後ステータスを再確認する。
aws stepfunctions get-execution-history \
--execution-arn ${SF_EXECUTION_ARN}
実施結果の表示はできます。