よ〜んです。

2022年にほぼ同じ内容の記事が公開されておりましたが、2025年も変わらないよ。と言う意味で記事化させていただきます。 AWS Step Functions ステートマシンで実行されるタスクはそれぞれセッションプリンシパルが異なる

AWSのサービス一覧を取得する方法として、以下のような手法があります。

JOB_ID=$(aws iam generate-service-last-accessed-details --arn arn:aws:iam::aws:policy/AdministratorAccess --output text)
aws iam get-service-last-accessed-details --job-id $JOB_ID

// output
{
    "JobStatus": "COMPLETED",
    "JobType": "SERVICE_LEVEL",
    "JobCreationDate": "2025-12-13T00:00:00.000000+09:00",
    "ServicesLastAccessed": [
        {
            "ServiceName": "AWS App2Container",
            "ServiceNamespace": "a2c",
            "TotalAuthenticatedEntities": 0
        },
        {
            "ServiceName": "Alexa for Business",
            "ServiceNamespace": "a4b",
            "TotalAuthenticatedEntities": 0
        },

これらはAWS APIを組み合わせたものですので、Step Functionsで実行可能ではないか?と思い、以下のようなState Machineを組んでみたところ、意図した動作をせず、ハマりまくったため、調査したことを記録します。

調べてみたこと

以降、GenerateServiceLastAccessedDetailsGenereteServiceGetServiceLastAccessedDetailsGetServiceとさせていただきます。

エラー内容

CloudShellで生成したJobIdを使ってStep FunctionsでGetService してみる

Step Functionsで生成したJobIdを使ってCloudShellでGetServiceしてみる

API Documentを読む

CloudTrailを見る

まとめ

Step Functionsの仕様を知りつつ、GenerateServiceLastAccessedDetailsのハマりどころって感じでした。

JobIdが帰ってくるAPIはもしかしたら本件となるかもしれません。

追記

ほぼ同じ内容の記事がありました。ググり不足ですね…

AWS Step Functions ステートマシンで実行されるタスクはそれぞれセッションプリンシパルが異なる