AWS Identity and Access Management (IAM) ユーザーで API アクションを実行して、ロールを AWS サービスに渡そうとしました。API アクションが失敗し、次のようなエラーが表示されました。 「You are not authorized to perform this operation.User: arn:aws:iam::123456789012:user/Bob is not authorized to perform: iam:PassRole.」
簡単な説明
一部の AWS サービスでは、既存の IAM ロールをそのサービスに渡すことができるため、新しいサービスロールを作成する必要はありません。ただし、IAM ロールを AWS サービスに渡す権限が必要です。
解決策
この問題を解決するには、IAM ポリシーを更新して IAM ユーザーが AWS サービスの iam:PassRole API アクションを実行できるようにします。
注: PassRole 権限のみを使用して、同じ AWS アカウントを共有する AWS サービスに IAM ロールを渡すことができます。別のアカウントの場合は渡せません。詳細については、「IAM でのクロスアカウントリソースアクセス」を参照してください。
次の IAM ポリシーの例では、IAM ユーザーが ExampleRole という名前のロールを Amazon Elastic Compute Cloud (Amazon EC2) サービスに渡すことを許可しています。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": "arn:aws:iam::account-ID:role/ExampleRole",
"Condition": {
"StringEquals": {
"iam:PassedToService": "ec2.amazonaws.com"
}
}
}
]
}
注: ExampleRole を自分のロールに、account-ID を自分のアカウント ID に置き換えてください。
詳細については、「AWS サービスにロールを渡すためのアクセス許可をユーザーに付与する」を参照してください。
関連情報
IAM ロールで PassRole 権限を使用する方法