通过 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/