确定Amazon EC2实例创建日期/时间

meg*_*zoe 10 python amazon-ec2 boto amazon-web-services ec2-api-tools

是否可以确定(通过boto)何时创建特定的EC2实例?

http://boto.readthedocs.org/en/latest/ref/ec2.html在这种情况下似乎没有提供任何帮助.需要找出特定EC2实例集的创建日期.

谢谢!

Ven*_*agi 6

没有create_time为EC2实例调用的属性,仅launch_time可用。

但是,您可以使用以下Python代码来了解何时创建该卷,这反过来又为您提供了实例创建时间(请注意,我在谈论创建实例时附加的卷):

import boto3
ec2 = boto3.resource('ec2', region_name='instance_region_name')
volume = ec2.Volume('vol-id')
print volume.create_time.strftime("%Y-%m-%d %H:%M:%S")
Run Code Online (Sandbox Code Playgroud)

替代方法是使用自定义代码。使用创建实例时create_instances(),您可以launch_time将给定实例及其实例ID和名称记录到DynamoDB之类的位置,以便您可以随时使用实例ID来检索“创建时间”。


Jos*_*ock 5

假设您使用的是 EBS 支持的实例并且没有做任何花哨的驱动器杂耍,确定实例创建日期的最佳方法是查看驱动器根卷的创建时间。虽然实例的启动时间会在您每次停止和启动它时发生变化,但 EBS 卷的创建时间是静态的。

这是一个快速脚本,用于查找您当前正在运行的实例的创建时间:

import boto
import subprocess

instance_id = subprocess.check_output(['curl', '-s', 'http://169.254.169.254/latest/meta-data/instance-id'])

conn = boto.connect_ec2()

root_device = conn.get_instance_attribute(instance_id, 'rootDeviceName')['rootDeviceName']
root_vol = conn.get_all_volumes(filters={"attachment.instance-id": instance_id, "attachment.device": root_device})[0]

print root_vol.create_time
Run Code Online (Sandbox Code Playgroud)

请注意,这需要实例的 IAM 角色具有ec2:DescribeInstanceAttributeec2:DescribeVolumes权限


gar*_*aat 0

如图所示:

http://boto.readthedocs.org/en/latest/ref/ec2.html#module-boto.ec2.instance

每个 Instance 对象都有一个名为 launch_time 的属性,其中包含表示实例启动时间的 IS08601 日期时间字符串。

在 boto 中,你可以这样做:

import boto.ec2

conn = boto.ec2.connect_to_region('us-west-1')
reservations = conn.get_all_instances()
for r in reservations:
    for i in r.instances:
        print('%s\t%s' % (i.id, i.launch_time)
Run Code Online (Sandbox Code Playgroud)

  • 其实不,是不平等的。如果您启动实例,将其停止过夜,然后在早上启动,则您的启动时间将是早上的日期,而不是您首次创建实例的日期。 (14认同)