AWS EC2-Instance 备份/终止/启动的最佳实践是啥

Posted

技术标签:

【中文标题】AWS EC2-Instance 备份/终止/启动的最佳实践是啥【英文标题】:What is the best practise for AWS EC2-Instance backup/termination/startAWS EC2-Instance 备份/终止/启动的最佳实践是什么 【发布时间】:2021-09-17 21:46:09 【问题描述】:

我希望我现有的 EC2 实例能够自动备份、终止,然后再次以备份状态开始。备份和终止应该在晚上完成并在早上重新开始。

我已经发现 EBS 应该在 S3 上进行备份,而对于实例本身,我可以使用 AMI(也许还有 EC2-Image-Builder?)。这一切都应该由 Cloudwatch Events 结合 AWS Lambda 触发。

你知道这个想法是否可行,或者是否有更好的想法?

感谢您的关注

【问题讨论】:

你的实际目标是什么?也就是说,为什么你想这样做?如果只是为了省钱,那么停止和启动实例将带来大部分好处。 EBS 卷上的额外节省几乎不值得,因为 EBS 是 8c/GB/月,而快照/AMI 是 5c/GB/月。所以,真的不值得付出额外的努力。请告诉我们您想做这些活动的动机。 感谢您的回答。钱是一方面,是的,但通过终止实例,它应该被保存。但另一点是将数据安全地存储到 S3 存储桶中,而不是相信它们在 ESB 上是安全的 除非您能告诉我们您的目标,否则很难提供任何建议。如果您的目标是备份以确保不丢失数据,那么为什么要终止实例呢?如果您的目标是省钱,请告诉我们更多关于您系统的使用模式(例如,您是否需要它们在夜间运行)?您的应用程序是否编写为可以将数据存储在 S3 而不是 EBS 中?您的 EC2 实例是如何使用的?等 我已经想出了一个办法,你必须使用大量的资源和工具,但这是可能的。谢谢=) 如果您认为这将有利于未来的读者,欢迎您添加自己的答案。 【参考方案1】:

我使用 Terraform 自动部署 EC2 实例和我想要的应用程序。这是在启动后自动运行的脚本中指定的,您也可以在 Terraform 中部署该脚本。因此,Terraform 删除并启动了我的实例,并且为了备份和恢复,我还使用脚本和 crontab。因此,我的持久数据的恢复也在脚本中指定,该脚本还将应用程序安装在我的 EC2 实例上,并通过 aws cli 使用 S3 存储桶。并且备份有自己的脚本,该脚本是通过 Terraform 中的脚本提取的,该脚本还为其设置了 crontab。 =)

【讨论】:

以上是关于AWS EC2-Instance 备份/终止/启动的最佳实践是啥的主要内容,如果未能解决你的问题,请参考以下文章

AWS EC2 启动/停止实例的 IAM 策略

AWS - 自动缩放未按指定启动/终止实例

如何强制终止卡在等待启动生命周期操作状态的aws实例

ubuntu ec2-instance 上的 cloud-init 每次启动脚本

关于开-关机以及重启-EC2-instance-所需要的最小的权限-Policies写法

.bat 脚本在执行 AWS Auto Scaling 命令之前终止