繁体   English   中英

在 AWS 中,在非办公时间关闭/启动所有开发人员 EC2 实例以节省成本(使用 Dynamic IP)

[英]in AWS shutting down / starting all developers EC2 instance at non office working Hours for cost saving ( using Dynamic IP )

有一个小要求,我有 50 个开发人员,他们使用 EC2 实例来完成他们的开发任务,他们用它来在本地 ec2 实例上开发 word press 网站。 目前,他们的 EC2 实例全天候 24/7 运行,这增加了所涉及的成本。 如果我使用EC2CLI关闭并启动他们的 EC2 实例,他们将丢失他们的 IP(因为我们使用动态 IP 并且不想使用 static IP,因为它成本很高)。 他们 map 他们 IP 到一个域名(例如: 1.1.1.1 wwwname.examplesite.com )在本地 windows 7 主机文件。

我们计划在非工作办公时间使用 EC2 CLI 关闭他们的 EC2 实例,并在一天开始后再次自动启动它,但是一旦我们再次启动它,IP 就会改变,开发人员如何了解他们的 IP。

对此的任何投入将不胜感激。

没有“一键式”方式来执行此afaik,因为亚马逊并不真的希望您通过这种方式省钱:)。

我已经使用AWS开发工具包为此编程了一个解决方案:基本上,它会定期轮询AWS以获取所有实例的公共主机名。 找到它们后,它会将公共主机名注册到带有选择名称的公共域名(您现在在Windows主机文件中正在使用的域名)的CNAME链接到Amazon Route 53(DNS)上。

这是动态DNS的原理。 它已经工作好几年了。 祝好运

很多时候,依赖IP地址实际上是一种不好的做法,因为它们会像您在回答中所触及的那样不断变化。 您应该改为依靠DNS名称。

最好的解决方案是编写一个脚本,以获取实例上的当前公共IP并更新DNS A记录。 使用Route 53进行此操作最有意义,因为它具有不错的API。

您需要为每个员工分配自己的DNS名称,每个实例都需要知道与其相关的DNS名称(例如,在脚本中硬编码,环境变量等)。 然后,您可以编写一个脚本,使该脚本在每次实例启动时运行,并执行以下操作:

  1. http://169.254.169.254/latest/meta-data/public-ipv4(EC2元数据服务, 在此处了解更多信息 )提交HTTP请求,以获取实例的当前公共IP地址
  2. 使用ChangeResourceRecordSets API调用在Route 53上更新A记录。

借助此最新公告 ,您可以使用AWS Lambda编写脚本以在特定时间停止所有实例。 但是,如果您的员工上班迟到,并因实例关闭而中断,则可能会带来一些小问题。 另外,我不建议您在特定时间再次启动所有这些实例。 仅允许员工每天启动实例将是一种更具成本效益的解决方案。 如果有5名员工生病怎么办? 如果他们不上班,他们的实例将无法开始:)

我可能会迟到,但如果其他人想要这样做,您可以使用 python 和boto3编写脚本。 这将使您能够:

  • 启动和停止给定(或所有)实例
  • 获取给定实例的 IP 地址

如何在开发人员机器上编写VB脚本。 在Windows7桌面启动时,其特定计算机将启动,在Windows7桌面关闭时,可以调用VB脚本关闭实例。 还是我可以使用其他任何语言代替VB(必须学习VB)。 无法使用python或无法安装python。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM