この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
困っていた内容
EC2 インスタンスから、AWS CLI コマンドの実行時以下のエラーが発生しました。
$ aws ec2 run-instances \
--image-id ami-0abcdef1234567890 \
--instance-type t2.micro \
--key-name MyKeyPair
<IAMロールのARN> is not authorized to perform: iam:PassRole on resource ~
EC2 インスタンスには AdministratorAccess ポリシーが付与されたロールがアタッチされているにも関わらず、権限に関するエラーが発生していると見受けられました。
なお、VPC エンドポイント経由で、AWS サービスエンドポイントへ接続している環境です。
解決策を教えてください。
どう対応すればいいの?
EC2 の RunInstances アクションは iam:PassRole の権限が必要なアクションです。
VPC エンドポイント経由で、AWS サービスエンドポイントへ接続する場合、
iam:PassRole の権限が必要なアクションを実行するには、VPC エンドポイントポリシーに iam:PassRole が必要です。
以下のポリシーを VPC エンドポイントポリシーに加えてください
{
"Action": "iam:PassRole",
"Resource": "<IAM Role の ARN>",
"Effect": "Allow",
"Principal": "*"
}
参考資料
IAM: 特定の AWS のサービスに IAM ロールを渡す - AWS Identity and Access Management
VPC エンドポイントでサービスへのアクセスを制御する - Amazon Virtual Private Cloud
IAM ロールの PassRole と AssumeRole をもう二度と忘れないために絵を描いてみた | DevelopersIO