【问题标题】:CloudFormation templates: continuous testing for infrastructure as a codeCloudFormation 模板:将基础设施作为代码进行持续测试
【发布时间】:2019-03-10 21:24:42
【问题描述】:

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

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

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

【问题讨论】:

标签: amazon-web-services continuous-integration amazon-cloudformation continuous-testing infrastructure-as-code


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-27
      • 2021-03-26
      • 1970-01-01
      • 1970-01-01
      • 2016-05-22
      • 2020-08-23
      • 1970-01-01
      • 2016-11-11
      相关资源
      最近更新 更多