2015-10-05 100 views
0

我們在使用情況之一中使用ec2現貨實例,如果其使用2分鐘終止通知標記爲終止,我們需要對實例進行優雅退役(現貨實例)。ec2現貨實例優雅終止

從在線閱讀中我發現,由於現貨市場的非生產性行爲,我很難測試這種優雅退役的代碼。

爲了驗證這一點,我只是不斷的現場實例

while requests.get("http://169.254.169.254/latest/meta-data/spot/termination-time").status_code != "200": 
    sleep(5) 

smtplib.SMTP('localhost').sendmail("[email protected]", "[email protected]", "Instance Terminated : $INSTANCE_ID") 

運行以下Python腳本但這從來沒有爲我工作。

任何人都可以幫助我嗎?

+0

應該工作。是否發送電子郵件爲你工作? – Mircea

+0

是的,如果我只是運行最後一行,我確實收到了電子郵件,但它在終止通知場景中不起作用。 – roy

回答

2

STATUS_CODE是整數基於文檔這裏http://docs.python-requests.org/en/latest/api/#requests.Response

所以基本上,甚至當你得到一個200的迴應,您將與「200」進行比較200,並且將繼續睡覺。修改代碼爲:

while requests.get("http://169.254.169.254/latest/meta-data/spot/termination-time").status_code != 200: 
    sleep(5) 
+0

讓我試試這個。 – roy

+1

您可以通過指向返回'200'響應的不同URL(例如Amazon S3上的文件)來測試它,以查看邏輯是否正常工作。 –