我试图获取应用程序标记值为“CCC”的自动缩放组。
名单如下
gweb
prd-dcc-eap-w2
gweb
prd-dcc-emc
gweb
prd-dcc-ems
CCC
dev-ccc-wer
CCC
dev-ccc-gbg
CCC
dev-ccc-wer
下面我编写的脚本给出了输出,其中包括一个没有CCC标签的ASG。
#!/usr/bin/python
import boto3
client = boto3.client('autoscaling',region_name='us-west-2')
response = client.describe_auto_scaling_groups()
ccc_asg = []
all_asg = response['AutoScalingGroups']
for i in range(len(all_asg)):
all_tags = all_asg[i]['Tags']
for j in range(len(all_tags)):
if all_tags[j]['Key'] == 'Name':
asg_name = all_tags[j]['Value']
# print asg_name
if all_tags[j]['Key'] == 'Application':
app = all_tags[j]['Value']
# print app
if all_tags[j]['Value'] == 'CCC':
ccc_asg.append(asg_name)
print ccc_asg
我得到的结果如下
['prd-dcc-ein-w2', 'dev-ccc-hap', 'dev-ccc-wfd', 'dev-ccc-sdf']
其中as 'prd-dcc-ein-w2'
是具有不同标记'gweb'
的asg。CCC ASG列表中的最后一个(dev-ccc-msp-agt-asg)
丢失。我需要输出如下
dev-ccc-hap-sdf
dev-ccc-hap-gfh
dev-ccc-hap-tyu
dev-ccc-mso-hjk
我有什么遗漏吗?。
我用了下面的脚本。
如果您有任何疑问,请随时询问。
在boto3中,您可以使用Paginators with JMESPath filtering以非常有效且更简洁的方式来完成此操作。
来自boto3文档:
下面是在Python代码中使用自动缩放组的
Application
标记的CCP
值时的情况:在阐述Michal Gasek的答案时,这里有一个选项可以根据tag:value对的指令过滤asg。
例如:
它期望只有一个结果,并通过尝试使用next()获取另一个结果来检查这个结果。StopIteration是“好的”情况,然后它会脱离分页器循环。
相关问题 更多 >
编程相关推荐