通过与boto关联的IAM角色过滤ec2实例

时间:2016-01-20 04:34:13

标签: amazon-web-services amazon-ec2 boto amazon-iam

我在AWS上有几个与同一个IAM角色关联的实例。我正在寻找一个返回这些实例的代码 根据此文档:http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html,我发现有一个可用的过滤器iam-instance-profile.arn。我只是不确定如何使用它,或者这是我应该使用的。

这是一个按标签过滤实例的示例。

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角色)并返回ONLY实例(没有通过预订)的最佳方式是什么?

1 个答案:

答案 0 :(得分: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]