この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、CX事業本部 IoT事業部の若槻です。
今回は、AWS Step Functionsステートマシンの実行のイベントソースをコマンドで確認する方法のご紹介です。
確認してみた
AWS Step Functionsステートマシンは、手動実行、EventBridgeルール、S3イベントなど様々なイベントソースから実行できます。マネジメントコンソールからであれば[Execution Input]タブから確認できます。下記だとEventBridgeルールから実行されていることが分かります。
一方で、イベントソースをプログラムなどからコマンドで確認したい場合はDescribeExecution APIを使用する必要があります。
まずステートマシンの実行のArnであるexecutionArnをAWS CLIのstepfunctions list-executions
コマンドを使用して取得します。
$ accountId=XXXXXXXXXXXX
$ stateMachineArn=arn:aws:states:ap-northeast-1:${accountId}:stateMachine:MyStateMachine
$ aws stepfunctions list-executions \
--state-machine-arn ${stateMachineArn} \
--max-items 2
{
"executions": [
{
"executionArn": "arn:aws:states:ap-northeast-1:XXXXXXXXXXXX:execution:MyStateMachine:5aa5a77d-04ce-45a4-aaad-0c44697c8da7",
"stateMachineArn": "arn:aws:states:ap-northeast-1:XXXXXXXXXXXX:stateMachine:MyStateMachine",
"name": "5aa5a77d-04ce-45a4-aaad-0c44697c8da7",
"status": "SUCCEEDED",
"startDate": "2021-11-29T23:20:47.611000+09:00",
"stopDate": "2021-11-29T23:20:48.417000+09:00"
},
{
"executionArn": "arn:aws:states:ap-northeast-1:XXXXXXXXXXXX:execution:MyStateMachine:1ca14969-4f77-7b83-24ea-7cb0fc4cd1be_ed65e8bd-3a5f-592c-00f5-d179a8cab810",
"stateMachineArn": "arn:aws:states:ap-northeast-1:XXXXXXXXXXXX:stateMachine:MyStateMachine",
"name": "1ca14969-4f77-7b83-24ea-7cb0fc4cd1be_ed65e8bd-3a5f-592c-00f5-d179a8cab810",
"status": "SUCCEEDED",
"startDate": "2021-11-17T11:11:08.759000+09:00",
"stopDate": "2021-11-17T11:11:09.568000+09:00"
}
],
"NextToken": "eyJuZXh0VG9rZW4iOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAyfQ=="
}
list-executions
でも実行ごとのstatus
、startDate
、stopDate
などのある程度の情報は取得できますが、イベントソースの情報は含まれていません。取得したexecutionArn
を使用してさらにdescribe-execution
を実行してDescribeを必要があります。
1つ目の実行のDescribeを取得してみます。するとinputで手動実行時に指定した任意の入力が確認できます。
$ executionArn1=arn:aws:states:ap-northeast-1:${accountId}:execution:MyStateMachine:5aa5a77d-04ce-45a4-aaad-0c44697c8da7
$ aws stepfunctions describe-execution \
--execution-arn ${executionArn1}
{
"executionArn": "arn:aws:states:ap-northeast-1:XXXXXXXXXXXX:execution:MyStateMachine:5aa5a77d-04ce-45a4-aaad-0c44697c8da7",
"stateMachineArn": "arn:aws:states:ap-northeast-1:XXXXXXXXXXXX:stateMachine:MyStateMachine",
"name": "5aa5a77d-04ce-45a4-aaad-0c44697c8da7",
"status": "SUCCEEDED",
"startDate": "2021-11-29T23:20:47.611000+09:00",
"stopDate": "2021-11-29T23:20:48.417000+09:00",
"input": "{\n \"Comment\": \"Insert your JSON here\"\n}",
"output": "{}"
}
2つ目の実行のDescribeを取得してみます。するとinputでイベントソースとなったEventBridgeルールが確認できます。
$ executionArn2=arn:aws:states:ap-northeast-1:${accountId}:execution:MyStateMachine:1ca14969-4f77-7b83-24ea-7cb0fc4cd1be_ed65e8bd-3a5f-592c-00f5-d179a8cab810
$ aws stepfunctions describe-execution \
--execution-arn ${executionArn2}
{
"executionArn": "arn:aws:states:ap-northeast-1:XXXXXXXXXXXX:execution:MyStateMachine:1ca14969-4f77-7b83-24ea-7cb0fc4cd1be_ed65e8bd-3a5f-592c-00f5-d179a8cab810",
"stateMachineArn": "arn:aws:states:ap-northeast-1:XXXXXXXXXXXX:stateMachine:MyStateMachine",
"name": "1ca14969-4f77-7b83-24ea-7cb0fc4cd1be_ed65e8bd-3a5f-592c-00f5-d179a8cab810",
"status": "SUCCEEDED",
"startDate": "2021-11-17T11:11:08.759000+09:00",
"stopDate": "2021-11-17T11:11:09.568000+09:00",
"input": "{\"version\":\"0\",\"id\":\"1ca14969-4f77-7b83-24ea-7cb0fc4cd1be\",\"detail-type\":\"Scheduled Event\",\"source\":\"aws.events\",\"account\":\"XXXXXXXXXXXX\",\"time\":\"2021-11-17T02:11:06Z\",\"region\":\"ap-northeast-1\",\"resources\":[\"arn:aws:events:ap-northeast-1:XXXXXXXXXXXX:rule/myRule\"],\"detail\":{}}",
"output": "{}"
}
inputをダンプすると下記のようになります。これを使用すればステートマシンがどのイベントソースから実行されたか分かりますね。
{
"version": "0",
"id": "1ca14969-4f77-7b83-24ea-7cb0fc4cd1be",
"detail-type": "Scheduled Event",
"source": "aws.events",
"account": "XXXXXXXXXXXX",
"time": "2021-11-17T02:11:06Z",
"region": "ap-northeast-1",
"resources": [
"arn:aws:events:ap-northeast-1:XXXXXXXXXXXX:rule/myRule"
],
"detail": {}
}
おわりに
AWS Step Functionsステートマシンの実行のイベントソースを確認する方法についてご紹介しました。
そもそもなぜステートマシンの実行のイベントソースを確認したかったかというと、EventBridgeルールで定期的にステートマシンを実行するシステムで、一定期間内に期待した回数だけステートマシンが実行されていることを確認したかったためでした。
以上
AWS関連セミナーのご紹介
DevelopersIOは、運営企業であるクラスメソッドのエンジニアが、AWS総合支援サービス「クラスメソッドメンバーズ」の提供と並行して記事を執筆し、世の中への技術提供を行っています。また、年間120回以上セミナーを開催しています。ご興味あれば是非ご参加ください。