gpt4 book ai didi

python - 从一组标记的 ec2 实例中仅获取唯一标记

转载 作者:太空宇宙 更新时间:2023-11-04 06:04:20 26 4
gpt4 key购买 nike

ec2 带有以下标记:

环境、项目、目的

拥有属于项目和环境的实例列表。

conn = ec2.connect_to_region(region,aws_access_key_id=access_key,aws_secret_access_key=secret_key)
reservations = conn.get_all_instances(filters={"tag:env":env, "tag:project":project})
instances = [i for r in reservations for i in r.instances]
instances_id = [i.id for i in instances]

现在需要一种方法来获取列表 instance_id 中每个实例的标签“purpose”的值。

这样我就可以根据目的采取行动。

我正在研究 boto 的 get_all_tags 函数,但无法弄清楚如何在函数的过滤器中获取每个 instance_id。还有一件事,我只需要用于目的的唯一值。

我该如何完成这项工作?

最佳答案

我相信您需要一种方法来根据目的标签的值对所有实例进行分组。

def get_instances_by_purpose(access_key,secret_key,region,env,project):
conn = ec2.connect_to_region(region,aws_access_key_id=access_key,aws_secret_access_key=secret_key)
reservations = conn.get_all_instances(filters={"tag:env":env, "tag:project":project})
instances = [i for r in reservations for i in r.instances]
instances_by_purpose = {}
[instances_by_purpose.setdefault(i.tags.get('purpose'), []).append(i.id) for i in instances]
return instances_by_purpose

instances_by_purpose 变量包含一个字典,其中的键是遇到的所有可能的目的值,每个目的的值是具有该目的的所有实例的列表。

例如目的值=“网络服务器”,“备份服务器”,“日志记录”输出将是{“网络服务器”:[“i-sdfsfd”,“i-sdfsfd”,“i-sdfsfd”],“备份服务器”:[“i-werwer”,“i-erwer”,“i-3242erds”],.....

您可以更改它,使其成为公共(public) IP、私有(private) IP 或您可以从实例对象中提取的任何其他属性的列表。例如如果您想要公共(public) IP,请按如下方式更改列表理解:

[instances_by_purpose.setdefault(i.tags.get('purpose'), []).append(i.ip_address) for i in instances]

然后您可以将其提供给另一个函数,该函数根据目的处理此负载。

关于python - 从一组标记的 ec2 实例中仅获取唯一标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23106921/

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