Python 在AWS中,如何列出所有保留,而不考虑标记和其他值
我想列出所有ec2资源的标签(客户网关| dhcp选项|映像|实例| internet网关|网络acl |网络接口|保留实例|路由表|安全组|快照|点实例请求|子网|卷| vpc | vpn连接和vpn网关) 以下代码列出了我的ec2客户端的所有资源,这些资源具有标记:Python 在AWS中,如何列出所有保留,而不考虑标记和其他值,python,amazon-web-services,boto3,Python,Amazon Web Services,Boto3,我想列出所有ec2资源的标签(客户网关| dhcp选项|映像|实例| internet网关|网络acl |网络接口|保留实例|路由表|安全组|快照|点实例请求|子网|卷| vpc | vpn连接和vpn网关) 以下代码列出了我的ec2客户端的所有资源,这些资源具有标记: session = boto3.Session(profile_name='default') ec2Client = session.client('ec2', region_name='eu-west-2') allTag
session = boto3.Session(profile_name='default')
ec2Client = session.client('ec2', region_name='eu-west-2')
allTags = ec2Client.describe_tags()['Tags']
for tag in allTags:
print tag
问题
这里的问题是,只有在“实例”的情况下,不包括没有标记的实例这样的资源。如果ec2中有5个实例,3个有标签,2个没有标签,上面的代码将只列出这3个有标签的实例
所需输出
我希望列出所有资源(实例、专有网络、子网、安全组等),无论是否定义了标记。如果有标签,它会显示标签,如果没有,我仍然希望它包含在没有标签的结果中
一种方法是对每个资源使用descripe_xxx方法来获取保留和查找标记,但我必须对每个资源调用它(如descripe_instances()、descripe_快照、descripe_security_groups()等),在我看来,这不是一种干净的通用方法
问题
有没有办法使用boto3库列出所有资源,如果资源有标签,也显示标签,如果没有,则仅显示资源?据我所知,boto3不提供
描述所有
方法。为了获得您想要的结果,如果我理解正确,您必须单独描述所有对象类型,即描述VPC
,描述实例
,等等,然后在生成的数据结构中查找标记
比如说,,
可以从所有生成的方法调用(descripe\u实例
,descripe\u VPC
,descripe\u子网
等)构建一个数据结构,如下所示:
{
Vpcs: [{... Tags: [{...}]}]
Instances: [{... Tags: [{...}]}]
Subnets: [{... Tags: [{...}]}]
...
}
我相信这是与您在问题中提到的对象最接近的匹配项。我在这里指的是此文档: