在这个项目中,我们使用了一些亚马逊网络服务,如AWS Lambda,EC2,AWS API Gateway,ElastiCache等。我们还有描述我们整个基础设施的CloudFormation模板。随着项目的发展,我们开始使用一些新的AWS服务或更改一些已经使用的服务的配置。同样,我们应该保持我们的CloudFormation模板是最新的。
在这里,我们面临的问题是,我们需要确保我们的CloudFormation模板是有效的、正确的,并且如果需要,我们可以使用它来创建基础架构。在这种情况下,我们需要对模板进行类似于连续测试的东西。哪种方法更适合这一点?
我们是否应该将从CloudFormation模板自动创建堆栈配置为持续集成过程的一部分,并跟踪存储库中的模板更改?或者有更好的解决方案?
发布于 2018-10-05 19:39:39
我们一直在使用cfn-python-lint作为构建的前身。如果这失败了,我们就不构建了。cfn-python-lint中提供的规则比aws cloudformation validate-template全面得多,此外,它还为您提供了一些良好的实践规则,还为您提供了一个框架来编写您自己的规则(我们将其用于治理)。
此外,我们不在功能分支上构建,我们只构建master。我们为开发人员提供了一个可以使用的环境,在那里他们可以运行我们通常在master和dev/staging/prod中运行的管道。这是一个完全独立的账户,他们几乎完全控制了这个账户。这显然不是愚蠢的证明,因为我们的沙箱区域可能不会反映dev/staging/prod中的内容,因为人们会使用它,但它对我们帮助很大。
发布于 2018-10-05 19:27:43
您可以使用aws cloudformation validate-template CLI command对CloudFormation模板进行一些简单的验证。这大致相当于其他语言的静态代码分析:它检查参数名称输入错误以及模板在语法上是否有效JSON/YAML;但它可以执行的验证非常有限。
正如那篇文章所说,检查CloudFormation模板是否会按照您希望/期望的方式创建资源的唯一可靠方法是尝试它,这实际上意味着将创建堆栈作为CI和测试过程的一部分。由于这在某些资源的情况下可能会很慢,而在其他资源的情况下可能会很昂贵,因此您可能希望限制执行完整堆栈创建测试的提交。
https://stackoverflow.com/questions/52664446
复制相似问题