2011-03-18 65 views
1

我有一個EC2實例能夠工作一段時間,當它完成時我希望它自行終止。看起來像一個簡單的請求,但我無法弄清楚如何讓一個實例唯一標識自己。 AWS API允許枚舉正在運行的實例,但是如果我有幾個從同一個AMI啓動,我如何找到當前的實例?確定當前正在執行的EC2實例

我使用AWS .NET工具包運行Windows Server 2008實例。

回答

2

一些選項供您追求:

  1. 此基礎上你的問題的措辭,我相信你正試圖從服務器中獲取實例ID,然後使用該輸入終止服務器。從您的服務器到http://169.254.169.254/latest/meta-data/instance-id的呼叫將爲您提供終止機器所需的實例ID。然後,您可以將該ID添加到您的.NET API並調用終止機器。
  2. 只需編寫一個程序來關閉服務器。除非我誤會,否則關閉服務器會終止它(而不是停止它)?似乎比選項1更容易。
  3. 您可以使用第三方工具(如http://LabSlice.com)在固定時間段(例如1小時後)後自動安排機器終止。這可能不是一個壞主意......請記住,您每小時收費,而不是每分鐘收費。因此,如果您有短時間運行的任務,那麼在任務完成後(10分鐘後)立即終止服務器,或者如果您在1小時後自動終止服務器,則不會對您的帳單產生影響。
+0

該問題的幾個很好的解決方案。謝謝! – 2011-03-21 16:34:05

+0

嗨西蒙,心理編輯,你在LabSlice工作(即使你的顯示名稱確實表明它)?我們的社區對自我推銷非常敏感 - 你的答案沒有錯,只是如果你把它放在帖子中有幫助。謝謝! – 2015-04-22 17:05:36

0

不能確定這是否有幫助,但另一種選擇是將您的實例放在Auto Scaling組後面,並針對在實例中運行的服務端點設置心跳/運行狀況檢查url。

這樣,當你的服務完成處理後,它可以停止響應心跳,你的實例將被終止。

您需要調整ASG的最小/最大實例屬性,以適應您嘗試滿足的任何用例。