Amazon cloudformation 用于多个参数文件和单个模板的CloudFormation

Amazon cloudformation 用于多个参数文件和单个模板的CloudFormation,amazon-cloudformation,Amazon Cloudformation,我目前将所有参数存储在Systems Manager参数存储中,并在CloudFormation堆栈中引用它们 我现在陷入了一个场景,同一个Cloudformation模板的参数不同 例如,服务器A的参数为m5.xlarge、子网1、主机名1,服务器B的参数为m5.xlarge、子网2、主机名2等等。这两个参数用于相同的CFN模板 我如何以CI/CD的方式处理这种情况 我当前的设置包括SSM参数存储->CloudWatch事件->代码管道->云信息。我假设您使用AWS代码管道。每个代码管道阶段包

我目前将所有参数存储在Systems Manager参数存储中,并在CloudFormation堆栈中引用它们

我现在陷入了一个场景,同一个Cloudformation模板的参数不同

例如,服务器A的参数为m5.xlarge、子网1、主机名1,服务器B的参数为m5.xlarge、子网2、主机名2等等。这两个参数用于相同的CFN模板

我如何以CI/CD的方式处理这种情况


我当前的设置包括SSM参数存储->CloudWatch事件->代码管道->云信息。

我假设您使用AWS代码管道。每个代码管道阶段包括多个。在操作配置属性中,有一个是CloudFormation模板,但也可以将该操作配置为包括CloudFormation模板,还可以提供一个。如果将服务器名称定义为CloudFormation堆栈中的参数,则可以为每个CloudFormation参数提供不同的配置

假设您在CloudFormation堆栈中只定义了一个服务器,并且在代码管道中使用了两次模板,那么您可以为这两个阶段操作提供不同的配置。根据此配置,您可以决定要检索的参数存储中的哪个参数。当然,这意味着您的参数存储也应该参数化,例如,您可以使用参数servera/instancetype和serverb/instancetype来代替参数instancetype


但是,我认为最好是在提供给操作声明的模板配置文件中定义参数。例如,在CloudFormation模板中定义参数instancetype,并使用两个不同的配置文件,每个堆栈一个,其中第一个模板配置文件可能会说instancetype:m5.large,第二个配置文件instancetype:m5.xlarge。这使您的CloudFormation堆栈历史更加明确、易于阅读,并且不再需要对非机密文件使用参数存储。

感谢您对此的详细解释。但是,如果CodePipeline中有多个操作,则即使单个模板配置发生更改,所有操作都将被触发(如果我理解正确的话)?这些CloudFormation模板将作为CodeCommit Repository的一部分存储是的,管道将触发多个操作,然而,cloudformation足够聪明,可以先创建一个变更集,如果没有任何更改,那么cloudformation堆栈将不会更新。此外,操作也可以并行运行。是的,将CloudFormation模板存储在CodeCommit存储库中是最佳实践。有关原因的更多详细信息,请将Infrastructure作为代码查找。