[小ネタ] AWS Step Functions ステートマシンの IAM ロール一覧を取得したい

2024.05.07

こんにちは!アノテーションの砂川です。
AWS Step Functions の IAM ロール一覧を取得したいなどの要望が多く聞かれましたので、CLI でやってみました!
なお、使用している AWS CLI バージョンは以下です。

$ aws --version
aws-cli/2.12.6 Python/3.11.4 Darwin/23.1.0 exe/x86_64 prompt/off

結論

下記スクリプトで実現できます。

#!/bin/bash
aws stepfunctions list-state-machines --query "stateMachines[].[stateMachineArn]" --output text | while read line
do
  stateMachineArn=$(echo $line)
  aws stepfunctions describe-state-machine --state-machine-arn ${stateMachineArn} --query "[name,roleArn]" --output text
done

概要としては、まず、list-state-machines でリージョン内のステートマシンの ARN の一覧を取得します。その後、取得された stateMachineArn のそれぞれに対して、describe-state-machine を実行し、name と IAM Role を抜き出すというものです。

やってみた

現在、以下のように list-state-machinesを利用して確認したところ、東京リージョンにステートマシンが3つあります。

$ aws stepfunctions list-state-machines --region ap-northeast-1
{
    "stateMachines": [
        {
            "stateMachineArn": "arn:aws:states:ap-northeast-1:<アカウントID>:stateMachine:checker-dev",
            "name": "checker-dev",
            "type": "STANDARD",
            "creationDate": "2021-01-14T11:47:02.475000+09:00"
        },
        {
            "stateMachineArn": "arn:aws:states:ap-northeast-1:<アカウントID>:stateMachine:sunagawa-test-1",
            "name": "sunagawa-test-1",
            "type": "STANDARD",
            "creationDate": "2024-05-07T11:07:42.393000+09:00"
        },
        {
            "stateMachineArn": "arn:aws:states:ap-northeast-1:<アカウントID>:stateMachine:sunagawa-test-2",
            "name": "sunagawa-test-2",
            "type": "STANDARD",
            "creationDate": "2024-05-07T11:08:53.962000+09:00"
        }
    ]
}

先ほどのスクリプトを実行します。下記結果にある通り、ちゃんと取得できました!

実行結果

$ sh get_state_machine_role.sh 
checker-dev  arn:aws:iam::<アカウントID>:role/checker-dev-Role
sunagawa-test-1 arn:aws:iam::<アカウントID>:role/service-role/StepFunctions-sunagawa-test-1-role
sunagawa-test-2 arn:aws:iam::<アカウントID>:role/service-role/StepFunctions-sunagawa-test-2-role

まとめ

今回は、AWS CLI を用いてステートマシンの IAM ロール一覧を取得する方法についてご紹介しました

なお、本シェルスクリプトを作成するにあたり、以下の他社様の記事を参考にさせていただきました!こちらの記事にて上述のスクリプトで使用されている while read の使い方を解説してくださっているので見てみてください。いつもありがとうございます。

本記事がどなたかの参考になれば幸いです。
最後までお読みいただきありがとうございました!

参考文献

アノテーション株式会社について

アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。