amazon-web-services - CloudFormation 部署应该通过 CI/CD 完成吗?

标签 amazon-web-services continuous-integration aws-cloudformation

通过 CI/CD 完成 CloudFormation 部署是一个好的做法吗?我目前正在考虑安全和性能方面。


例如,如果有人不小心删除了数据库,CloudFormation 就会将其删除...可能会进行代码审查来防止这种情况...但只是想知道这是否是一个好的做法。

对于无服务器应用程序,也许别无选择?否则,部署所有内容都过于手动

另一个观察结果是性能,CloudFormation 很少改变,但如果它是 CI/CD 过程的一部分,它无论如何都需要运行。有什么办法可以加快速度吗?

最佳答案

当然。

除非你这样做,否则你无法实现真正​​意义上的 CI/CD。 考虑这样一个场景:您为特定版本添加了消息队列 (AWS SQS)。现在,如果您尚未将 Cloudformation 与 CI/CD 集成,那么从 SQS 读取/写入的代码将进入您的环境,但将无法执行任何操作,原因很简单:SQS 不存在,因为您的 cloudformation 发生了变化这会导致 SQS 没有执行。所以,最终你会得到半生不熟的环境。

为了避免这个陷阱,强烈建议您将 cloudformation 作为 CI/CD 的一部分来执行

关于您的担忧“例如,如果有人意外删除了数据库,CloudFormation 只会将其删除”,即使使用实际代码也可能会发生这种情况。例如,开发人员放入了一些测试代码来清理数据库,但忘记删除它,并且该代码在生产环境中执行。但理想情况下,由于手动测试、自动化测试和 JUnit 的保护,这种情况不会发生。因此,在类似的上下文中,将 Cloudformation 视为任何其他代码(事实上,Cloudformation 最好被描述为基础设施即代码),应该对其进行彻底测试。要查看单元测试 Cloudformation 的详细信息,请参阅 Is there a way to unit test AWS Cloudformation template

关于amazon-web-services - CloudFormation 部署应该通过 CI/CD 完成吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51868572/

相关文章:

ruby-on-rails - Rails4.1 : AWS errors missing region

amazon-web-services - 如何在数百个 AWS 实例上拆分数据文件?

windows - Windows 上的 Hudson - 错误 : java. io.IOException:无法运行程序 "sh"

amazon-web-services - 删除时,使用 Cloudformation 中定义的生命周期规则将 S3 存储桶对象移动到 Glacier 存储桶

ruby-on-rails - ruby rails : How can I resolve the "Digest::Digest is deprecated; use Digest" warning when uploading to AWS-S3?

java - 从 AWS 上的 SQS 队列连续轮询

jenkins - 配置更改后自动运行 Jenkins 构建

continuous-integration - Gitlab CI 不执行 npm 脚本

amazon-web-services - 从控制台或 CLI 恢复 RDS 快照比 cloudformation 快得多吗?

amazon-web-services - 如何将目标添加到 CloudFormation 中的网络负载均衡器