Чтобы проверить ваш сценарий, я сделал следующее:
- Создал пользователя IAM
- Назначил пользователю эту встроенную политику:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2:RunInstances",
"Resource": [
"arn:aws:ec2:*:ACCOUNT:network-interface/*",
"arn:aws:ec2:*:ACCOUNT:volume/*",
"arn:aws:ec2:*:ACCOUNT:key-pair/*",
"arn:aws:ec2:*:ACCOUNT:security-group/*",
"arn:aws:ec2:*:ACCOUNT:subnet/*",
"arn:aws:ec2:*::image/ami-*"
]
},
{
"Effect": "Allow",
"Action": "ec2:RunInstances",
"Resource": [
"arn:aws:ec2:*:ACCOUNT:instance/*"
],
"Condition": {
"StringEquals": {
"ec2:InstanceType": "t2.micro"
}
}
}
]
}
(где ACCOUNT
было установлено для моего AWS идентификатора учетной записи.)
После этого я смог успешно запустить экземпляр t2.micro
, используя:
aws ec2 run-instances --image-id ami-xxx --security-group-id sg-xxx --instance-type t2.micro
I попытался изменить его на t2.nano
и получил ошибку UnauthorizedOperation
.
Обратите внимание, что приведенная выше команда run-instances
была минимальной. Он намеренно не пытался указать такие вещи, как:
- Роль IAM
- Теги
- Пара ключей
Эти элементы требуют предоставления дополнительных разрешения для пользователя. Поэтому при тестировании вашей политики используйте минимальный набор требований (аналогичный приведенному выше) для тестирования политики.