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

filtering ec2 instances by associated IAM role with boto

我在 AWS 上有几个与同一个 IAM 角色关联的实例。我正在寻找 return 这些实例的代码。
根据此文档: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"});returns保留。我想获得这些实例而不必通过预订获得它们。例如:conn.get_only_instances(instance_ids=['i-cc186913']) return 给我实例。
我可以拥有过滤器(IAM 角色)和 return 个实例(不通过预订获取它们)的最佳方式是什么?

为该角色传递您的实例配置文件 ARN(您可以从 IAM 仪表板获取或构建它)。示例:

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

它将return一个实例列表,您可以遍历它。

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