Amazon web services 如何使用boto3列出所有AWS子网的名称

Amazon web services 如何使用boto3列出所有AWS子网的名称,amazon-web-services,boto3,amazon-vpc,Amazon Web Services,Boto3,Amazon Vpc,我可以使用以下代码轻松列出所有安全组名称: import boto3 ec2_client = boto3.client('ec2') print('All Security Groups:') print('----------------') sg_all = ec2_client.describe_security_groups() for sg in sg_all['SecurityGroups'] : print(sg['GroupName']) 我尝试以相同的方式列出所有

我可以使用以下代码轻松列出所有安全组名称:

import boto3
ec2_client = boto3.client('ec2')

print('All Security Groups:')
print('----------------')
sg_all = ec2_client.describe_security_groups()
for sg in sg_all['SecurityGroups'] :
    print(sg['GroupName'])
我尝试以相同的方式列出所有子网名称,如下所示:

print('Subnets:')
print('-------')
sn_all = ec2_client.describe_subnets()
for sn in sn_all['Subnets'] :
    print(sn['SubnetName'])
在这里,变量
sn
获取所有子网,包括所有属性和标记,但找不到子网的正确属性名称,如
GroupName

我可以使用boto3.resource('ec2')或以下代码,但为了简单起见,我正在寻找上面使用的类似方法来列出所有安全组:

print('Subnets:')
print('-------')
sn_all = ec2_client.describe_subnets()
for sn in sn_all['Subnets'] :
    for tag in sn['Tags']:
        if tag['Key'] == 'Name':
            print(tag['Value'])

非常感谢您的帮助。

亚马逊专有网络子网没有“名称”字段(而安全组有一个
GroupName
字段)

在管理控制台中,您可以看到安全组有两列:组名和名称。
Name
字段实际上是名为Name的标记的值

另一方面,子网只有名称标签


提示:查看可用信息的简单方法是查看的文档。

@John Rotenstein-谢谢您的回答。你说得对。因此,我必须使用名称标签。没有别的选择了。嗨,Rafiq,如果这个或任何答案都解决了你的问题,请通过点击复选标记来考虑。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这么做。@John Rotenstein-我不知道为什么我看不到接受你答案的选项@拉菲克,选择一个你认为是解决问题最好的答案。要将答案标记为已接受,请单击答案旁边的复选标记,将其从灰显切换为已填写。您可以随时更改被接受的答案,或者干脆取消接受答案。@John-明白了。感谢您的跟进。请添加一些关于您的代码、它的作用以及它如何回答问题的注释。@CosminStaicu,它将提供您正在使用的区域的所有子网
import boto3
ec2_client = boto3.client('ec2')
print('Subnets:')
print('-------')
sn_all = ec2_client.describe_subnets()
for sn in sn_all['Subnets'] :
    print(sn['SubnetId'])