Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在AWS中,如何列出所有保留,而不考虑标记和其他值_Python_Amazon Web Services_Boto3 - Fatal编程技术网

Python 在AWS中,如何列出所有保留,而不考虑标记和其他值

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

我想列出所有ec2资源的标签(客户网关| dhcp选项|映像|实例| internet网关|网络acl |网络接口|保留实例|路由表|安全组|快照|点实例请求|子网|卷| vpc | vpn连接和vpn网关)

以下代码列出了我的ec2客户端的所有资源,这些资源具有标记:

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: [{...}]}]
  ...
}

我相信这是与您在问题中提到的对象最接近的匹配项。

我在这里指的是此文档: