【问题标题】:AWS run instance for exact amount of full billing cyclesAWS 运行实例的确切数量的完整计费周期
【发布时间】:2017-06-26 15:53:21
【问题描述】:

出于某些正当理由,我正在尝试优化我的项目的成本,因为我们在非常昂贵的实例上运行它。

据我所知,亚马逊按小时收费。例如,如果我运行我的 EC2 实例 1 小时 4 分钟,我将被收取 2 小时的费用。

在最接近下一个计费周期但不超过当前计费周期的情况下关闭实例的最佳方法是什么?

我试图根据正常运行时间来执行此操作,但 aws 计费和正常运行时间值之间存在一些差异。

我希望在实例本身上使用看门狗。所以我可以在配置期间传递参数,它会在 2 个完整的计费周期后自行关闭。

【问题讨论】:

标签: amazon-web-services amazon-ec2


【解决方案1】:

您可以从 EC2 实例获取 Amazon 开始计费的时间(假设您已安装 jq)

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

您可以每分钟运行一次 shell 脚本,然后在 58 分钟后关闭。

但这很痛苦。如果您的处理能够处理正在运行的实例的中断,那么您应该考虑使用spot instances 或者使用fixed duration。这使您可以在已知的时间段内以较低的价格运行,而不会因超时而产生任何额外费用。

【讨论】:

  • 非常感谢这个命令。这正是我一直在寻找的。由于业务细微差别,Spot 实例不适合我们。
  • 当 AWS 计算该实例关闭时。基于 api 终止实例命令,或者当操作系统完全关闭时?
  • 我不相信这是你发出命令的那一刻——我会给它至少 1 分钟的时间来关闭它。在我看到终止状态之前,控制台中的终止至少需要 30 秒 - 关闭类似。
【解决方案2】:

如果您的工作负载在一小时前完成,请在工作完成后立即停止/终止您的实例。无需让实例在剩下的一小时内保持空闲状态。

唯一可能效率不高的情况是,如果您可能在整整一个小时之前有更多工作进入,然后您希望保持运行以处理新工作。但只有在零星工作的情况下才会出现这种情况。如果它是零星的,那么保持它运行可能会更好。

【讨论】:

  • 主要是它是一个事件驱动的系统,业务方面的限制非常严格。它现在按计划运行,我正在尝试做的是优化 AWS 成本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-12
  • 2012-12-19
  • 2018-06-13
  • 1970-01-01
  • 2017-07-12
相关资源
最近更新 更多