Там нет никакого способа (насколько мне известно), чтобы использовать IAM контролировать количество экземпляров может запустить конкретный пользователь. Однако вы можете добиться такого же эффекта, создав небольшую подсеть в своем VPC и ограничьте запуск экземпляров в эту подсеть.
Если вы создаете subnet-abcd1234
с диапазоном CIDR 10.120.10.0/28
, он даст вам в общей сложности 14 IP-адресов в подсети. Согласно AWS documenation IPs 1, 2 и 3 зарезервированы. Это дает вам только 11 доступных IP-адресов.
В вашей IAM политики, вы можете запретить запуск экземпляров в любой другой подсети:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
},
"Action": "ec2:RunInstances",
"Resource": [
"arn:aws:ec2:eu-west-1:123456789012:network-interface/*"
],
"Condition": {
"ArnNotEquals": {
"ec2:Subnet": "arn:aws:ec2:eu-west-1:123456789012:subnet/subnet-abcd1234"
}
}
}
]
}
Где eu-west-1
это регион и 123456789012
ваш счет AWS ID.
Если вы хотите убедиться, что в подсети может работать только один экземпляр, вы можете создать ENI (Elastic Network Interfaces), не привязывая их к экземплярам. Вот как создать интерфейс, используя Python:
import boto.ec2
connection = boto.ec2.connect_to_region("eu-west-1")
connection.create_network_interface(subnet_id="subnet-abcd1234",
description="placeholder ENI")
Если вы создаете 10 ENIS, то попытка не запускать более одного экземпляра в подсети приведет к ошибке, так как нет больше доступны IP-адреса.
Вы можете ограничить экземпляры определенным типом (например, t2.small), но не существует политики IAM для ограничения количества экземпляров. – helloV