识别当前正在执行的EC2实例

时间:2011-03-18 18:15:25

标签: .net windows-server-2008 amazon-ec2

我有一个EC2实例可以工作一段时间,当它完成时我希望它自行终止。看起来像一个简单的请求,但我无法弄清楚如何让一个实例唯一地标识自己。 AWS API允许我枚举正在运行的实例,但如果我有几个从同一个AMI启动,我该如何找到当前的实例?

我正在使用AWS .NET工具包运行Windows Server 2008实例。

2 个答案:

答案 0 :(得分:2)

您可以选择的一些选择:

  1. 根据您的问题的措辞,我相信您正在尝试从服务器中获取实例ID,然后使用它作为输入来终止服务器。从服务器到http://169.254.169.254/latest/meta-data/instance-id的调用将为您提供终止计算机所需的实例ID。然后,您可以将该ID提供给TerminateInstancesRequest .NET API并进行调用以终止计算机。
  2. 只需编写程序即可关闭服务器。除非我弄错了,关闭服务器会终止它(而不是停止它)?似乎比选项1容易得多。
  3. 您可以使用http://LabSlice.com之类的第三方工具在固定时间段(例如1小时后)后自动安排机器终止。这可能不是一个坏主意...请记住,您每小时收费,而不是每分钟收费。因此,如果您有一个短期运行任务,那么如果您在任务完成后立即终止服务器(10分钟后),或者如果您在1小时后自动终止服务,则不会对您的账单产生影响。

答案 1 :(得分:0)

不确定这是否有帮助,但另一个选择是将您的实例放在Auto Scaling组后面,并针对在实例中运行的服务端点设置心跳/运行状况检查URL。

这样,当您的服务处理完毕后,它就会停止响应心跳,您的实例将被终止。

您需要调整ASG的最小/最大实例属性,以适应您尝试满足的任何用例。

相关问题