AWS Step Functions は、AWS Lambda 関数および AWS の複数のサービスを、ビジネスに不可欠なアプリケーション内に簡単に配列することができるサーバーレスの関数オーケストレーターです。アプリケーションの状態を維持する、チェックポイント化されたイベント駆動型の一連のワークフローを、視覚的なインターフェイスを使って作成および実行することができます。1つのステップの結果が、次のステップへのインプットとして機能します。アプリケーション内の各ステップは、ユーザーが定義したビジネスロジックに基づいて、順番通りに実行されます。

 今回はEC2からStepFunctionsをShellで起動方法を説明させていただきます。

 まずは、”HelloWorld”のStepFunctionsを作成します。
file
 上記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}

実施結果の表示はできます。
 

Last modified: 2021-04-29

Author