Python Boto3显示最后一条记录的不完整信息
我正在编写一个Python脚本,使用boto3导出一些实例的信息,并将这些信息打印到屏幕上。 假设有10个实例在AWS区域中运行,脚本将向我显示9个实例的完整信息,最后一个实例显示不完整 我试图修改我函数的for语句,但没有成功,怎么了 如果我执行aws ec2 description instances--instance id XXX--region us-east-2我可以看到所有信息 这是我代码的一部分:Python Boto3显示最后一条记录的不完整信息,python,python-3.x,amazon-web-services,boto3,Python,Python 3.x,Amazon Web Services,Boto3,我正在编写一个Python脚本,使用boto3导出一些实例的信息,并将这些信息打印到屏幕上。 假设有10个实例在AWS区域中运行,脚本将向我显示9个实例的完整信息,最后一个实例显示不完整 我试图修改我函数的for语句,但没有成功,怎么了 如果我执行aws ec2 description instances--instance id XXX--region us-east-2我可以看到所有信息 这是我代码的一部分: import boto3 def get_ec2_instances(ec2):
import boto3
def get_ec2_instances(ec2):
for instances in ec2['Reservations']:
for instance in instances['Instances']:
print(instance['InstanceId'])
print(instance['ImageId'])
print(instance['InstanceType'])
print(instance['KeyName'])
print(instance['LaunchTime'])
print(instance['Monitoring'])
client = boto3.client('ec2')
ec2 = client.describe_instances()
get_ec2_instances(ec2)
输出:
i-0000000000000000 F-ami-00000000 6-t3a.2xlarge-AWS-2021-06-04 13:01:28+00:00-{'State':'disabled'}
i-0000000000000000 9-ami-00000000 6-t3a.2xlarge-TestAWS-2021-06-04 13:02:35+00-{'State':'disabled'}
i-0000000000000000 1-ami-000000036-r4.xlarge
PS C:\env>
更新:
我发现如果一个值为空,打印就会崩溃,我的意思是通常实例['KeyName']
为空,如果我尝试打印(实例['KeyName'])
脚本就会崩溃
如何解决它?您可以使用get()
方法。它采用可选的默认值,并且不会引发异常
print(instance.get('KeyName', 'KeyName is not in instance'))
以下代码可能有效,因为它解决了方法中的两个问题:
NextToken
键指示)None
导入boto3
def get_ec2_实例(分页器):
对于paginator.paginate()中的页面:
对于第[‘预订’]页中的预订:
例如,在预订['Instances']中:
打印(instance.get('InstanceId'))
打印(instance.get('ImageId'))
打印(instance.get('InstanceType'))
打印(instance.get('KeyName'))
打印(instance.get('LaunchTime'))
打印(instance.get('Monitoring'))
client=boto3.client('ec2')
ec2_paginator=client.get_paginator('descripe_instances'))
获取ec2_实例X(ec2_分页器)
我很确定这是您的控制台/外壳的问题,请尝试在get\u ec2\u instancesx
调用之后添加一个虚拟的print(“某物”)
。请注意descripe\u instances
结果是分页的。如果响应中存在NextToken
,则您需要使用该令牌进行额外调用以获得更多结果。我认为这不是shell问题,测试成功运行消息已打印,但结果仍不完整谢谢!!!它就像一个魅力!!!嘿成功了!!!谢谢!!!如果您标记成功的解决方案,它将帮助社区。