实例细节终止后很长时间查询

时间:2014-03-10 05:35:49

标签: amazon-ec2

在Amazon-ec2中,实例页面显示了机器的详细信息,例如IP,大小,密钥对,安全组,运行时间等。

实例终止后,订单项会保持可见约一小时。在此期间,我们可以了解机器运行时的详细信息。但是一旦删除了订单项,就无法知道。

说,某些实例是手动实例化的,使用了一段时间然后终止。经过一个小时的活动后,无法找出发生的事情。

有一个详细帐单功能,但它只提供实例ID和大小。我对密钥对,IP,操作系统,安全组和机器名称感兴趣(如果有的话)。有没有办法找出它们?

修改

我知道我可以让cron作业定期列出所有实例(及其详细信息)并将其存储在数据库中。事情是,要主持那个cron进程,我需要一台24x7的机器。我需要的是一些钩子,一个回调,事件。

即使不是现成的,也可以做出这样的解决方案吗?

1 个答案:

答案 0 :(得分:0)

一旦实例终止,就像你提到的那样,大部分信息将在一小时左右完全消失之后通过API提供。 (IP地址DNS将无法使用,因为每次停止或终止实例时IP地址都被放弃)实例完全消失后意味着它已经消失了。

解决方法是每隔一段时间查询实例API并保存状态和实例信息。您可以将其保存在内存,数据库或文本文件中,具体取决于您尝试执行的操作或尝试创建的应用程序。

以下是使用API​​的boto Python接口将实例信息保存到内存中的Python字典中的示例:

reservations = conn.get_all_instances()
for res in reservations:
    instance = res.instances[0]
    if instance.id == 'i-xxxxxx':
        instance_dict[instance.id] = instance

字典instance_dict在您的程序持续时间内始终具有IP地址,DNS和其他实例信息,只要您不覆盖它。要终止实例,您可以运行以下内容:

instance_dict['i-xxxxxx'].terminate()

但稍后您仍然可以使用:

instance_dict['i-xxxxxx'].ip_address

instance_dict['i-xxxxxx'].dns_name

希望这有帮助。