我有一些简单的代码进入aws并抓取一些数据然后将其打印到控制台
mycode的:
import boto3
from pprint import pprint
ec2 = boto3.resource('ec2')
client = boto3.client('ec2')
#This is the VPC ID and Linked Tags
for vpctags in client.describe_vpcs()['Vpcs']:
print("VPC ID: ", vpctags['VpcId'])
print("Tags: ", vpctags['Tags'])
for subnet in client.describe_subnets()['Subnets']:
print("Subnet ID: ", subnet['SubnetId'])
print("Subnet ID: ", subnet['Tags'])
###############################################
我收到错误,因为我的一个或多个子网没有标记:
打印("子网ID:",子网['代码'])KeyError:'标签'
我并不期望每个子网都有标签,所以有没有办法简单地忽略标签的缺失,只打印空或只是继续?
抱歉,如果这听起来像一个愚蠢的问题,我已经搜索了谷歌并发现了一些想法,但它们看起来有点先进,我已经拥有了。答案 0 :(得分:8)
是, 你可以替换
print("Subnet ID: ", subnet['Tags'])
与
print("Subnet ID: ", subnet.get('Tags', ''))
使用get with允许您在Tags不存在的情况下定义默认值
答案 1 :(得分:4)
try:
print("Tags: ", vpctags['Tags'])
except KeyError:
print("Tags: None")
如果Tags
键不存在,则会改为打印“无”。
答案 2 :(得分:2)
比捕获异常要好得多:使用get
print("Tags: ", vpctags.get('Tags',"None"))
答案 3 :(得分:0)
另一种选择:
if 'Tags' in subnet:
print("Subnet ID: ", subnet['Tags'])