「aws ec2 run-instances」コマンド(AWS Command Line Interface(CLI)から)を使用してAmazon EC2インスタンスを起動しています。起動するEC2インスタンスにIAMロールを設定したい。IAMロールが設定され、AWSウェブUIからインスタンスを起動するときにそれを正常に使用できます。しかし、そのコマンドと「--iam-instance-profile」オプションを使用してこれを実行しようとすると、失敗しました。「aws ec2 run-instances help」を実行すると、値のArn =およびName =サブフィールドが表示されます。「aws iam list-instance-profiles」を使用してArnを検索しようとすると、次のエラーメッセージが表示されます。
クライアントエラー(AccessDenied)が発生しました:ユーザー:arn:aws:sts :: xxxxxxxxxxxx:assumed-role / shell / i-15c2766dの実行は許可されていません:リソースのiam:ListInstanceProfiles:arn:aws:iam :: xxxxxxxxxxxx:instance -プロフィール/
(xxxxxxxxxxxxはAWSの12桁のアカウント番号です)
Web UIでArn文字列を検索し、run-instancesコマンドで「--iam-instance-profile Arn = arn:aws:iam :: xxxxxxxxxxxx:instance-profile / shell」でそれを使用しましたが、失敗しました:
クライアントエラー(UnauthorizedOperation)が発生しました:この操作を実行する権限がありません。
「--iam-instance-profile」オプションを完全に省略した場合、インスタンスは起動しますが、必要なIAMロール設定はありません。そのため、許可は「--iam-instance-profile」の使用またはIAMデータへのアクセスに関係しているようです。AWSの不具合(時々起こる)の場合に何度か繰り返しましたが、成功しませんでした。
IAMロールを持つインスタンスが、より強力なIAMロールを持つインスタンスを起動することは許可されないという制限があるのではないかと考えました。しかし、この場合、コマンドを実行しているインスタンスは、使用しようとしているのと同じIAMロールを持っています。「shell」と名付けられました(私は別のものを試してみましたが、運はありません)。
IAMロールの設定は、インスタンスから(IAMロール認証情報を介して)許可されていませんか?
IAMロールを使用するために、プレーンインスタンスを起動するために必要なものよりも高いIAMロール許可が必要ですか?
「--iam-instance-profile」はIAMロールを指定する適切な方法ですか?
Arn文字列のサブセットを使用する必要がありますか、それとも他の方法でフォーマットする必要がありますか?
IAMロールアクセスを実行できるIAMロールをセットアップすることは可能ですか(「スーパールートIAM」...この名前を構成する場合があります)?
参考までに、すべてはインスタンス上で実行されるLinuxに関係しています。また、これらのツールをデスクトップにインストールできなかったため、これらすべてをインスタンスから実行しています。それに加えて、ここで AWSが推奨するように、IAMユーザー認証情報をAWSストレージに配置したくありません。
回答後:
「PowerUserAccess」(vs.「AdministratorAccess」)の起動インスタンス許可については言及しませんでした。質問が行われた時点で追加のアクセスが必要であることに気づかなかったためです。IAMの役割は打ち上げに付随する「情報」であると想定しました。しかし、それは本当にそれ以上です。それは許可の付与です。