私がやろうとしていること (以前に尋ねた質問の続き: powershell で IAM ロールによって AWS インスタンスをフィルタリングし、そのインスタンスのプライベート IP アドレスを取得するにはどうすればよいですか? ) は、特定のインスタンスのプライベート IP アドレスを取得することです。 IAM ロール。そして、私は完全に機能するコードを持っています:
$filter = New-Object Amazon.EC2.Model.Filter -Property @{Name = "iam-instance-profile.arn"; Value = "arn:aws:iam::123456789012:instance-profile/TestRole"}
$ec2 = @(Get-EC2Instance -Filter $filter)
$ec2instances = $ec2.instances
$ipaddress = $ec2instances.privateipaddress
ただし、コードでフィルターを実行する代わりに、ユーザーが特定の IAM Role を持つインスタンスに関する情報のみを取得できるように制限する IAM ポリシーを作成したいと考えています。そのget-ec2instance
ため、たとえば、アカウント内のすべてのインスタンスではなく、関連するインスタンスに関する情報のみを返す必要があります。
これは私が持っている IAM ポリシーです。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ec2:DescribeInstances"
],
"Effect": "Allow",
"Resource": [
"*"
],
"Condition": {
"ArnEquals": {
"ec2:InstanceProfile": "arn:aws:iam::12356789102:instance-profile/TestRole"
}
}
}
]
}
ただし、get-ec2instance
Powershell で実行すると、そのアクションを実行する権限がないと言われます。すべてのインスタンスにしか適用できないためだと思いget-ec2instance
ますが、よくわかりません。
助けていただければ幸いです、ありがとう!