Что я пытаюсь сделать (продолжая вопрос, который я задавал ранее: Как я могу отфильтровать экземпляры AWS по роли IAM в powershell и получить частный 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, которая ограничивает возможность пользователя получать информацию только об экземплярах, имеющих определенную роль 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
применимо только ко всем экземплярам, но я не уверен.
Буду признателен за помощь, спасибо!