首页 文章

CloudFormation模板:作为代码持续测试基础架构

提问于
浏览
3

在项目中,我们使用AWS Lambda,EC2,AWS API Gateway,ElastiCache等AWS服务 . 此外,我们还提供了CloudFormation模板,该模板描述了我们的整个基础架构 . 随着项目的开发,我们开始使用一些新的AWS服务或更改已经使用的一些服务的配置 . 同样,我们应该保持CloudFormation模板的最新状态 .

在这里,我们面临的问题是,我们需要确保我们的CloudFormation模板是有效的,正确的,并且如果需要,我们可以使用它来创建基础架构 . 在这种情况下,我们需要对模板进行连续测试 . 哪种方法更适合?

我们是否应该从CloudFormation模板配置自动创建堆栈,作为持续集成过程的一部分,并跟踪我们存储库中的模板更改?还是有更好的解决方案?

2 回答

  • 1

    我们一直在使用cfn-python-lint作为建筑的前身 . 如果这失败了,我们就不会 Build . cfn-python-lint中提供的规则比 aws cloudformation validate-template 更全面,此外,它为您提供了一些良好的实践规则,它还为您提供了编写自己的规则(我们用于治理)的框架 .

    另外,我们不构建功能分支,我们只构建master . 我们为开发人员提供了一个环境,可以运行我们通常在master和dev / staging / prod上运行的管道 . 这是一个完全独立的帐户,他们几乎完全统治 . 这显然不是万无一失的,因为我们的沙盒区域可能无法反映dev / staging / prod中的内容,因为人们玩它,但它帮助了我们很多 .

  • 2

    您可以使用 aws cloudformation validate-template CLI command对CloudFormation模板进行一些简单的验证 . 这大致相当于其他语言的静态代码分析:它检查参数名称拼写错误以及模板在语法上有效的JSON / YAML;但就其可以执行的验证而言,它是非常有限的 .

    正如那篇文章所说,检查CloudFormation模板将以您希望/期望的方式创建资源的唯一确定方法是尝试它,这确实意味着创建堆栈作为CI和测试过程的一部分 . 由于在某些资源的情况下这可能很慢而在其他资源的情况下可能很昂贵,因此您可能希望限制执行完整堆栈创建测试的提交 .

相关问题