CloudFormation如何根据已选参数值动态调整其他参数可选值
CloudFormation 动态参数可选值实现方案
CloudFormation 原生暂不支持直接根据一个参数的选择,实时动态修改另一个参数的下拉可选列表,你可以通过以下两种方案实现等效的参数控制需求。
方案1:使用原生Rules规则做参数校验(推荐控制台部署场景)
这个是原生支持的无额外开发的方案,逻辑为:用户提交参数后自动校验参数组合是否合法,不合法直接阻断部署并抛出提示,符合你的业务规则要求。
完整模板示例如下:
Parameters: parameter1: Type: Boolean Description: 开关参数,选择False时parameter2仅可选1/2 AllowedValues: - true - false Default: true parameter2: Type: Number Description: 依赖parameter1的参数,默认可选1/2/3/4 AllowedValues: - 1 - 2 - 3 - 4 Default: 1 Rules: # 定义当parameter1为false时的参数校验规则 RestrictParameter2WhenParam1False: RuleCondition: !Equals - !Ref parameter1 - false Assertions: - Assert: !Contains - [1, 2] - !Ref parameter2 AssertDescription: 当parameter1选择False时,parameter2仅可选择1或2
- 效果说明:当你在控制台选择parameter1为False时,如果parameter2选了3/4,点击部署后会直接弹出错误提示,要求你修改参数后再提交,完全满足你的业务校验需求。
方案2:动态生成模板(适用于自定义部署入口场景)
如果你不是直接使用CloudFormation控制台部署,而是自己开发了部署前端/模板生成逻辑,可以在用户选择parameter1的值之后,根据选择动态生成parameter2的AllowedValues字段,再将生成后的模板传给CloudFormation执行,即可实现前端下拉框动态更新可选值的效果。
注意事项
- 原生Rules规则仅在CloudFormation控制台、AWS Service Catalog部署场景下默认生效,如果你通过CLI/SDK调用部署接口,需要额外添加
--enable-parameter-validation参数才会触发规则校验 - 如果你需要对外提供模板给其他用户在控制台部署,优先选择方案1,兼容性最好无额外依赖
内容的提问来源于stack exchange,提问作者Sairam Ravuri
相关产品推荐
相关产品推荐

