查询Amazon EC2实例AMI创建日期/时间

时间:2017-07-29 22:05:57

标签: amazon-web-services amazon-ec2

我需要创建一个实例列表,用于创建实例的AMI以及AMI的创建日期。

这是我正在使用的Python(boto3)代码:

import boto3
import datetime
import sys

profile = (sys.argv[1])
boto3.setup_default_session(profile_name=profile)

ec2 = boto3.resource('ec2')
instances = ec2.instances.all()
images = ec2.images.filter(Owners=['self'])

for i in instances:
    a = i.id
    b = i.state['Name']
    c = i.instance_type
    if i.platform == 'windows':
        d = i.platform
    else:
        d = 'linux'
    e = i.private_ip_address
    f = i.image_id
    g = i.image.creation_date.strftime("%Y-%m-%d %H:%M:%S")
    print('{}   {}  {}  {}  {}  {}'.format(a, b, c, d, e, f, g))

但这是我得到的错误;属于creation_date调用:

追踪(最近一次通话):   文件“C:\ bin \ TestAMI.py”,第23行,in     g = i.image.creation_date.strftime(“%Y-%m-%d%H:%M:%S”)   在property_loader中的文件“C:\ Python27 \ lib \ site-packages \ boto3 \ resources \ factory.py”,第345行     return self.meta.data.get(name) AttributeError:'NoneType'对象没有属性'get'

如何获取正在使用的AMI的创建日期?

1 个答案:

答案 0 :(得分:0)

以下是根据@sqlbot:

处理已删除的AMI的示例
import boto3

for i in boto3.resource('ec2').instances.all():
    print(' '.join([
        i.id,
        i.state['Name'],
        i.instance_type,
        i.platform or 'Linux',
        i.private_ip_address,
        getattr(i.image, 'creation_date', '')
    ]))