用于多个参数文件和单一模板的CloudFormation。

问题描述 投票:0回答:1

我目前将所有参数存储在系统管理器参数库中,并在 CloudFormation 堆栈中引用这些参数。

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

比如服务器A,有参数m5.large实例类型,子网1,主机名1,同样服务器B也可以有m5.xlarge,子网2,主机名2等。这2个参数是针对同一个CFN模板的。

请问如何用CICD的方式处理这种情况?

我目前的设置涉及SSM参数存储->CloudWatch事件->CodePipeline->Cloudformation。

amazon-cloudformation
1个回答
1
投票

我假设您使用 AWS CodePipeline。每个 CodePipeline 阶段由多个 阶段性行动. 动作配置属性中的 CloudFormation 模板,但也可以将动作配置为包括 CloudFormation 模板,但也可以将动作配置为包括 CloudFormation 模板。模板配置 可以提供。如果您将服务器名称定义为CloudFormation堆栈中的一个参数,那么您可以为每个CloudFormation参数提供不同的配置。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.