【トラブル】【AWS】エラー「no identity-based policy allows the iam:PassRole action」が発生

■ はじめに

トラブルの調査中に、別のトラブルになったのでメモ。

発生しているのは、Glueだが、原因はIAMロールの作り方なので
他のサービスでも発生しそう。

【1】トラブル概要

 AWS Glue Jobで、EMRを立ち上げる際に
AutoScalingのRole(<EMRAutoScalingRole>)を新規で追加して
Glue Jobを再実行したら、以下「エラー内容」が表示した。

【2】エラー内容

ClientError: An error occurred (AccessDeniedException)
when calling the RunJobFlow operation:
User: arn:aws:sts::xxxxxx:assumed-role/<YourGlueJobRole>/GlueJobRunnerSession
is not authorized to perform: iam:PassRole
 on resource: arn:aws:iam::xxxxxx:role/<EMRAutoScalingRole>
because no identity-based policy allows the iam:PassRole action

【3】原因

* 使用しているGlue Jobのロール で、
 追加したロールがResourceに追加していなかったため。
 => AWSマネージメントコンソール画面の[IAM]-[Roles]で
  使用しているGlue Jobのロール (<YourGlueJobRole>部分)
  から確認できる
 => 「修正前」を参照

修正前

{
  "Sid": "",
  "Effect": "Allow",
  "Action": [
    "iam:PassRole"
  ],
  "Resource": [
    "arn:aws:iam::xxxxx:role/<EMR Instance Role>",
    "arn:aws:iam::xxxxx:role/<EMR Service Role>",
    "arn:aws:iam::xxxxx:role/<EMR Old AutoScaling Role>" <= ★ここに指定する必要があった★
  ]
}

【4】解決案

修正後

{
  "Sid": "",
  "Effect": "Allow",
  "Action": [
    "iam:PassRole"
  ],
  "Resource": [
    "arn:aws:iam::xxxxx:role/<EMR Instance Role>",
    "arn:aws:iam::xxxxx:role/<EMR Service Role>",
    "arn:aws:iam::xxxxx:role/<EMR Old AutoScaling Role>",
    "arn:aws:iam::xxxxx:role/<EMR New AutoScaling Role>" <= ★ここに指定★
  ]
}

関連記事

AWS Glue ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/10/01/221926
AWS Glue のトラブル ~ job編 - [1] ~
https://dk521123.hatenablog.com/entry/2019/10/25/232155
AWS Glue のトラブル ~ job編 - [2] ~
https://dk521123.hatenablog.com/entry/2020/10/12/152659
AWS Glue のトラブル ~ job編 - [3] ~
https://dk521123.hatenablog.com/entry/2021/02/16/145848
AWS Glue のトラブル ~ job編 - [4] ~
https://dk521123.hatenablog.com/entry/2021/05/10/143328
AWS Glue Job で DB timeout が発生する
https://dk521123.hatenablog.com/entry/2021/08/30/104237
AWS Glue Job で ConnectionTimeoutError が発生する
https://dk521123.hatenablog.com/entry/2022/03/28/162514
AWS Glue上で エラー「Dynamic partition strict mode requires ...」が発生する
https://dk521123.hatenablog.com/entry/2021/05/17/120443
AWS Glue上で saveAsTextFile() を使ったら エラー「DirectOutputCommitter not found」が発生する
https://dk521123.hatenablog.com/entry/2021/05/18/185420