来自 AWS 的漂亮打印 Boto EC2 输出

Sno*_*ash 1 python amazon-ec2

您如何从 AWS 漂亮地打印 Boto EC2 输出?

这是原始的(不是很漂亮):

{u'Reservations':[{u'OwnerId':'123456789012',u'ReservationId':'r-0583ea9691fc65d99',u'Groups':[],u'Instances':[{u'Monitoring':{u 'State': 'disabled'}, u'PublicDnsName': 'ec2-52-91-153-194.compute-1.amazonaws.com', u'State': {u'Code': 16, u'Name ': 'running'}, u'EbsOptimized': False, u'LaunchTime': datetime.datetime(2017, 4, 13, 14, 2, 13, tzinfo=tzutc()), u'PublicIpAddress': '52.91. 153.194',u'PrivateIpAddress':'10.0.0.50',u'ProductCodes':[],u'VpcId':'vpc-f06bb096',u'StateTransitionReason':'',u'InstanceId':'i-06dc4d355 ', u'ImageId': 'ami-f4cc1de2', u'PrivateDnsName': 'ip-10-0-0-50.ec2.internal', u'KeyName': 'ec2-test', u'SecurityGroups': [{u'GroupName': 'default', u'GroupId' :'sg-d91a11a4'}],u'ClientToken':'',u'SubnetId':'subnet-983e31a4',u'InstanceType':'t2.micro',u'NetworkInterfaces':[{u'Status' : '使用中', u'MacAddress': '06:25:23:48:95:a6', u'SourceDestCheck': True, u'VpcId': 'vpc-f06bb096', u'Description': ' ', u'Association': {u'PublicIp': '52.91.153.194', u'PublicDnsName': 'ec2-52-91-153-194.compute-1.amazonaws.com', u'IpOwnerId': '亚马逊'}, u'NetworkInterfaceId': 'eni-7813e976', u'PrivateIpAddresses':[{u'PrivateDnsName':'ip-10-0-0-50.ec2.internal',u'Association':{u'PublicIp':'52.91.153.194',u'PublicDnsName':'ec2 -52-91-153-194.compute-1.amazonaws.com', u'IpOwnerId': 'amazon'}, u'Primary': True, u'PrivateIpAddress': '10.0.0.50'}], u' PrivateDnsName': 'ip-10-0-0-50.ec2.internal', u'Attachment': {u'Status': 'attached', u'DeviceIndex': 0, u'DeleteOnTermination': True, u' AttachmentId': 'eni-attach-1497b932', u'AttachTime': datetime.datetime(2017, 4, 13, 14, 2, 13, tzinfo=tzutc())}, u'Groups': [{u'GroupName ':'默认',u'GroupId':'sg-d91a11a4'}],u'SubnetId':'子网 983e31a4',u'OwnerId':'123456789012',u'PrivateIpAddress':'10.0.0.50'}],u'SourceDestCheck':真,u'Placement':{u'Tenancy':'default',u 'GroupName':'',u'AvailabilityZone':'us-east-1a'},u'Hypervisor':'xen',u'BlockDeviceMappings':[{u'DeviceName':'/dev/sda1',u 'Ebs': {u'Status': 'attached', u'DeleteOnTermination': True, u'VolumeId': 'vol-0bde7c66b5d2bfbe3', u'AttachTime': datetime.datetime(2017, 4, 13, 14, 2 , 14, tzinfo=tzutc())}}], u'Architecture': 'x86_64', u'RootDeviceType': 'ebs', u'RootDeviceName': '/dev/sda1', u'VirtualizationType': 'hvm ',你'AmiLaunchIndex':0}]},{u'OwnerId':'123456789012',u'ReservationId':'r-045b809e272d93e2b',u'Groups':[],u'Instances':[{u'Monitoring' u'State': 'disabled'}, u'PublicDnsName': '', u'RootDeviceType': 'ebs', u'State': {u'Code': 48, u'Name': 'terminated'}, u'EbsOptimized': False, u'LaunchTime': datetime.datetime(2017, 4, 13, 12, 56, 12, tzinfo=tzutc()), u'ProductCodes': [], u'StateTransitionReason': 'User发起 (2017-04-13 13:57:36 GMT)',u'InstanceId':'i-0c474bd415597945d',u'ImageId':'ami-f4cc1de2',u'PrivateDnsName':'',u'KeyName' : 'ec2-test', u'SecurityGroups': [],u'ClientToken': '', u'InstanceType': 't2.micro', u'NetworkInterfaces': [], u'Placement': {u'Tenancy': 'default', u'GroupName': '', u'AvailabilityZone':'us-east-1a'},u'Hypervisor':'xen',u'BlockDeviceMappings':[],u'Architecture':'x86_64',u'StateReason':{u'Message' :'Client.UserInitiatedShutdown:用户启动的关闭',u'Code':'Client.UserInitiatedShutdown'},u'RootDeviceName':'/dev/sda1',u'VirtualizationType':'hvm',u'AmiLaunchIndex':1 }, {u'Monitoring': {u'State': 'disabled'}, u'PublicDnsName': '', u'RootDeviceType': 'ebs', u'State':{u'Code': 48, u'Name': 'terminated'}, u'EbsOptimized': False, u'LaunchTime': datetime.datetime(2017, 4, 13, 12, 56, 12, tzinfo=tzutc( )), u'ProductCodes': [], u'StateTransitionReason': '用户发起 (2017-04-13 13:57:36 GMT)', u'InstanceId': 'i-08a8961ce06801f38', u'ImageId': 'ami-f4cc1de2', u'PrivateDnsName': '', u'KeyName': 'ec2-test', u'SecurityGroups': [], u'ClientToken': '', u'InstanceType': 't2.micro ', u'NetworkInterfaces': [], u'Placement': {u'Tenancy': 'default', u'GroupName': '', u'AvailabilityZone': 'us-east-1a'}, u'Hypervisor ': 'xen', u'BlockDeviceMappings': [],u'Architecture':'x86_64',u'StateReason':{u'Message':'Client.UserInitiatedShutdown:用户启动的关闭',u'Code':'Client.UserInitiatedShutdown'},u'RootDeviceName':'/dev /sda1', u'VirtualizationType': 'hvm', u'AmiLaunchIndex': 2}, {u'Monitoring': {u'State': 'disabled'}, u'PublicDnsName': '', u'RootDeviceType' : 'ebs', u'State': {u'Code': 48, u'Name': 'terminated'}, u'EbsOptimized': False, u'LaunchTime': datetime.datetime(2017, 4, 13, 12, 56, 12, tzinfo=tzutc()), u'ProductCodes': [], u'StateTransitionReason': '用户发起 (2017-04-13 13:57:36 GMT)', u'InstanceId': 'i-0912694d25b7c2d4f',u'ImageId':'ami-f4cc1de2',u'PrivateDnsName':'',u'KeyName':'ec2-test',u'SecurityGroups':[],u'ClientToken':'' , u'InstanceType': 't2.micro', u'NetworkInterfaces': [], u'Placement': {u'Tenancy': 'default', u'GroupName': '', u'AvailabilityZone': 'us -east-1a'}, u'Hypervisor': 'xen', u'BlockDeviceMappings': [], u'Architecture': 'x86_64', u'StateReason': {u'Message': 'Client.UserInitiatedShutdown: User启动关闭', u'Code': 'Client.UserInitiatedShutdown'}, u'RootDeviceName': '/dev/sda1', u'VirtualizationType': 'hvm', u'AmiLaunchIndex':0}]}],'ResponseMetadata':{'RetryAttempts':0,'HTTPStatusCode':200,'RequestId':'f698802c-3506-49f5-8bc6-d40639e1e12c','HTTPHeaders' encoding': 'chunked', 'vary': 'Accept-Encoding', 'server': 'AmazonEC2', 'content-type': 'text/xml;charset=UTF-8', 'date': 'Thu, 2017 年 4 月 13 日 14:04:51 格林威治标准时间'}}}'date': '2017 年 4 月 13 日星期四 14:04:51 GMT'}}}'date': '2017 年 4 月 13 日星期四 14:04:51 GMT'}}}

这些都是什么u

如果我尝试使用 Python 的 JSON 转储,我会得到:

TypeError: datetime.datetime(2017, 4, 13, 14, 2, 13, tzinfo=tzutc()) is not JSON serializable
Run Code Online (Sandbox Code Playgroud)

aci*_*obi 5

试试这个pprint模块:

from pprint import pprint
pprint(your_data)
Run Code Online (Sandbox Code Playgroud)

'u' 前缀表示这是一个 unicode 字符串。

  • 切换到 Python 3.x 将是摆脱 u 的最简单方法,因为在 Python 3 中一切都被视为 unicode,因此不再需要 u 前缀。 (2认同)