Amazon web services CloudFormation模板:作为代码对基础架构进行连续测试

Amazon web services CloudFormation模板:作为代码对基础架构进行连续测试,amazon-web-services,continuous-integration,amazon-cloudformation,continuous-testing,infrastructure-as-code,Amazon Web Services,Continuous Integration,Amazon Cloudformation,Continuous Testing,Infrastructure As Code,在该项目中,我们使用了一些AWS服务,如AWS Lambda、EC2、AWS API Gateway、ElastiCache等。此外,我们还有描述整个基础设施的CloudFormation模板。随着项目的开发,我们开始使用一些新的AWS服务或更改一些已经使用的服务的配置。同样,我们应该保持我们的CloudFormation模板的最新 在这里,我们面临的问题是,我们需要确保我们的CloudFormation模板是有效的、正确的,并且如果需要的话,我们可以使用它来创建基础设施。在这种情况下,我们需要

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

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


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

您可以使用
aws CloudFormation验证模板对CloudFormation模板进行一些简单的验证。这大致相当于其他语言的静态代码分析:它检查诸如参数名称键入之类的内容,以及模板是否在语法上有效JSON/YAML;但就其可执行的验证而言,它是相当有限的

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

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

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

请查看此内容