use*_*188 14 boto amazon-web-services
我使用标签来跟踪我的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]
Run Code Online (Sandbox Code Playgroud)
现在,我获取的实例列表给出了指定项目中的所有实例,而不管环境和指定环境中的所有实例,无论项目如何.
Séb*_*acq 24
您可以使用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
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅EC2 API http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeInstances.html
你使用的语法的问题是Python dict有唯一的键,所以第二个tag-key条目覆盖第一个:-(
勒布
| 归档时间: |
|
| 查看次数: |
23159 次 |
| 最近记录: |