2016-01-20 1 views
0

У меня есть несколько экземпляров на AWS, которые связаны с одной и той же ролью IAM. Я ищу написать код, который возвращает эти экземпляры.
На основании этого документа: http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html, я вижу, что имеется доступный фильтр iam-instance-profile.arn. Я просто не знаю, как я буду использовать это, или если это то, что я должен использовать.фильтрация экземпляров ec2 с помощью соответствующей роли IAM с помощью boto

Это пример, когда экземпляры фильтруются по тегам.

conn = boto.ec2.connect_to_region('ap-southeast-1') 
reservations = conn.get_all_instances(filters={"tag:Name": "my-instance-1"}); 

for reservation in reservations: 
    instance = reservation.instances[0] 

Я хотел бы сделать что-то подобное, за исключением роли IAM в качестве фильтра.

Другое дело - пример выше conn.get_all_instances(filters={"tag:Name": "my-instance-1"}); возвращает бронирование. Я хотел бы получить экземпляры без необходимости получать их через оговорки. Например: conn.get_only_instances(instance_ids=['i-cc186913']) возвращает мне экземпляр.
Каков наилучший способ, которым я мог бы иметь фильтр (роль IAM) и возвращать ТОЛЬКО экземпляры (не получая их через резервирование)?

ответ

0

Передайте свой профиль профиля ARN для этой роли (которую вы можете получить с панели IAM или вы можете ее построить). Пример:

conn.get_only_instances(filters={"iam-instance-profile.arn": "arn:aws:iam::<your-account-number>:instance-profile/<your-role-name>"}) 

Он вернет список экземпляров, и вы можете пройти через него.

>>> conn.get_only_instances(filters={"iam-instance-profile.arn":"arn:aws:iam::123456781221:instance-profile/stackoverflowRole"}) 
[Instance:i-8ba223ab] 
+0

Спасибо! Это сделало работу :) –

Смежные вопросы