2017-02-08 75 views
1

我試圖優化我的項目的成本,因爲我們正在非常昂貴的實例上運行它。AWS運行實例精確完整的結算週期金額

據我所知,亞馬遜以小時計費。例如,如果我運行EC2實例1小時4分鐘,我將收取2小時。

關閉最接近下一個結算週期但不超過當前結算週期的實例的最佳方式是什麼?

我試圖基於正常運行時間來做到這一點,但是aws計費和正常運行時間值之間存在一些差異。

我正在尋找使用坐在實例本身上的看門狗。因此,我可以在提供過程中傳遞參數,並在2個完整的結算週期後自行關閉。

+0

請參閱:http://stackoverflow.com/questions/15899544/shutdown-ec2-instance-if-idle-right-before-another-billable-hour – helloV

回答

1

你可以得到亞馬遜的EC2實例開始計費的時間(假設你已經JQ安裝)

curl -s http://169.254.169.254/latest/dynamic/instance-identity/document/ | jq .pendingTime 

,你可以運行一個shell腳本一次一分鐘後關閉,說58分鐘。

但這是一種痛苦。如果您的處理能夠處理正在運行的實例的中斷,那麼您應該使用spot instances或使用fixed duration。這允許您在一段已知的時間段內以降低的價格運行,而不會因爲運行結束而產生任何額外的成本。

+0

非常感謝這個命令。這正是我所期待的。由於商業細微差別,競價型實例不適合我們。 –

+0

當AWS計算該實例關閉時。基於api terminate instance命令,還是OS完全關閉? –

+0

我不會相信這是你發出命令的瞬間 - 我會給它至少1分鐘關機。終止在控制檯至少需要30秒,直到我看到終止狀態 - 關機是類似的。 – stdunbar

0

如果您的工作負載在整小時之前完成,請在工作完成後立即停止/終止您的實例。無需在一個小時的剩餘時間內保持實例閒置。

唯一一次這可能不是有效的,如果你可能有更多的工作在整小時之前進入,然後你想保持它運行來處理新的工作。但如果工作是零星的,那隻會是這種情況。如果它是零星的,那麼保持它運行可能會更好。

+0

最主要的是它是一個事件驅動的系統,在業務方面有非常積極的限制。它現在正在按計劃運行,我想要做的是優化AWS成本。 –