【发布时间】:2015-04-08 22:26:20
【问题描述】:
我们已经为我们的 ec2 实例定义了标签。我们想使用 python boto 模块通过使用标签来获取 volumeId 或 EBS 卷的列表。已经为实例创建了标签。我们想使用在本例中为“dev”的名称标签,并列出与之关联的 EBS 卷。 请帮忙
【问题讨论】:
标签: python json amazon-web-services amazon-ec2 boto
我们已经为我们的 ec2 实例定义了标签。我们想使用 python boto 模块通过使用标签来获取 volumeId 或 EBS 卷的列表。已经为实例创建了标签。我们想使用在本例中为“dev”的名称标签,并列出与之关联的 EBS 卷。 请帮忙
【问题讨论】:
标签: python json amazon-web-services amazon-ec2 boto
最好尝试编写一些代码来尝试解决问题,然后在该代码不起作用时发布特定问题。如果您在入门时遇到问题,这里有一些提示。
您需要做的第一件事是找到所有具有name=<somevalue> 形式的特定标签的实例。在 boto 中,您将使用 get_all_instances 方法的 filter 参数来完成此操作。像这样的东西应该可以工作:
reservations = conn.get_all_instances(filters={'name': ['somevalue']})
这将返回与查询匹配的Reservation 对象列表。在Reservation 对象内部有一个名为instances 的属性,它是Instance 对象的列表。
对于该列表中的每个 Instance 对象,您需要找到与该实例关联的 EBS 卷。同样,您需要使用filters 参数来完成此操作。在这种情况下,您想要的过滤器名称是attachment.instance-id。
volumes = conn.get_all_volumes(filters={'attachment.instance-id': [instance.id]})
其中instance 是第一次调用返回的Instance 对象之一。这将返回当前附加到 instance 的所有 EBS 卷的 Volume 对象列表。
我希望这会有所帮助。尝试编写代码,如果遇到具体问题,请在此处提问。
【讨论】: