我尝试优化项目的费用,原因是我们在非常昂贵的情况下运行它。
据我所知,亚马逊按小时收费。例如,如果我运行我的EC2实例1小时4分钟,我将被收取2小时的费用。
关闭最接近下一个结算周期的实例的最佳方法是什么,但不会超过当前的结算周期?
我试图根据正常运行时间进行此操作,但是aws结算和正常运行时间值之间存在一些差异。
我希望在实例本身上使用看门狗。因此,我可以在提供期间传递参数,并且在完成两个完整的计费周期后会自行关闭。
答案 0 :(得分:1)
您可以从EC2实例获取亚马逊开始计费的时间(假设您已安装了jq)
curl -s http://169.254.169.254/latest/dynamic/instance-identity/document/ | jq .pendingTime
你可以每分钟运行一次shell脚本,然后关闭58分钟。
但这是一种痛苦。如果您的处理能够处理正在运行的实例的中断,那么您应该考虑使用spot instances或fixed duration。这使您可以在一段已知的时间内以较低的价格运行,而不会因为跑步而产生任何额外费用。
答案 1 :(得分:0)
如果您的工作量在整个小时之前完成,请在工作完成后立即停止/终止您的实例。无需在一小时的剩余时间内保持实例空闲。
这可能效率不高的唯一一次是,如果您可能在整个小时之前有更多工作,然后您希望保持运行以处理该新工作。但只有工作是零星的,情况才会如此。如果它是零星的,那么保持它运行可能会更好。