我可以使用以下代码轻松列出所有安全组名称:
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'])
非常感谢任何帮助。
答案 0 :(得分:2)
亚马逊VPC子网没有"名称"字段(而安全组执行有一个GroupName
字段)。
在管理控制台中,您可以看到安全组有两列:组名称和名称。 Name
字段实际上是名为Name的标记的值。
子网只有名称标签。
提示:查看可用信息的简便方法是查看AWS Command-Line Interface (CLI)的describe-subnets
文档。
答案 1 :(得分:0)
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'])