gpt4 book ai didi

amazon-web-services - 使用 boto 过滤 ec2 实例

转载 作者:行者123 更新时间:2023-12-03 21:23:56 26 4
gpt4 key购买 nike

我使用标签来跟踪我的 EC2 实例,例如(项目、环境)。我有一个用例,我只需要过滤属于特定项目和特定环境的那些实例。

当我将过滤器与 boto 一起使用并传递这两个值时,我得到的结果是过滤器的 OR 而不是 AND ,因此我收到了属于不同项目但相同环境的实例列表。

现在我可以使用两个列表,然后比较每个列表中的实例并获得所需的实例集,但是有没有更好的方法来完成这项工作?

这是我在做什么:

conn = ec2.EC2Connection('us-east-1',aws_access_key_id='XXX',aws_secret_access_key='YYY')
reservations = conn.get_all_instances(filters={"tag-key":"project","tag-value":<project-name>,"tag-key":"env","tag-value":<env-name>})
instances = [i for r in reservations for i in r.instances]

现在,我得到的实例列表提供了来自指定项目的所有实例,而不管环境如何,以及来自指定环境的所有实例,而不管项目如何。

最佳答案

您可以使用 tag:key=value对过滤器进行 AND 搜索的语法。

import boto.ec2

conn = boto.ec2.connect_to_region('us-east-1',aws_access_key_id='xx', aws_secret_access_key='xx')
reservations = conn.get_all_instances(filters={"tag:Name" : "myName", "tag:Project" : "B"})
instances = [i for r in reservations for i in r.instances]
print instances

有关详细信息,请参阅 EC2 API
http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeInstances.html

您使用的语法的问题在于 Python dict 具有唯一键,因此第二个 tag-key条目覆盖第一个:-(

塞伯

关于amazon-web-services - 使用 boto 过滤 ec2 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23053214/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com