5

在该项目中,我们使用了一些 AWS 服务,例如 AWS Lambda、EC2、AWS API Gateway、ElastiCache 等。此外,我们还有 CloudFormation 模板来描述我们的整个基础设施。随着项目的开发,我们开始使用一些新的 AWS 服务或更改一些已经使用的配置。此外,我们应该使我们的 CloudFormation 模板保持最新。

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

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

4

2 回答 2

3

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

此外,我们不构建功能分支,我们只构建主分支。我们为开发人员提供了一个可以运行我们通常在 master 和 dev/staging/prod 中运行的管道的环境。这是一个完全独立的帐户,他们几乎完全统治。这显然不是万无一失的,因为我们的沙箱区域可能无法反映开发/登台/产品中的内容,因为人们在使用它,但它对我们有很大帮助。

于 2018-10-05T11:39:38.700 回答
1

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

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

于 2018-10-05T11:27:42.730 回答