You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CloudFormation多If条件实现:匹配Color参数枚举值为Name属性动态赋值

方案1:嵌套!If实现多分支判断

CloudFormation 原生未提供 switch/case 类的多分支语法,你可以通过嵌套 !If 函数的方式覆盖所有条件,每个!If的假值参数位置填写下一层条件判断即可,对应你的需求写法如下:

Properties:
  # 换行写法可读性更高
  Name: !If
    - Red
    - "I choose Red"
    - !If
      - Blue
      - "I choose Blue"
      - !If
        - Green
        - "I choose Green"
        - "I choose Orange"

你也可以写成行内格式:

Properties:
  Name: !If [Red, "I choose Red", !If [Blue, "I choose Blue", !If [Green, "I choose Green", "I choose Orange"]]]

方案2:简化写法(返回值与参数强关联场景)

如果你的返回值规则固定为I choose + 颜色参数值,完全不需要写多分支判断,直接用!Sub函数拼接参数即可,后续新增颜色选项也不需要修改这段逻辑,维护成本更低:

Properties:
  Name: !Sub "I choose ${Color}"

可选方案:映射表实现自定义多值映射

如果不同颜色对应的返回值是自定义内容、不是简单的参数拼接,比如Red对应「生产环境资源」、Blue对应「测试环境资源」这类规则,可以用!FindInMap实现,可读性比嵌套!If更高:

  1. 先在模板顶层定义映射表:
Mappings:
  ColorNameMap:
    Red:
      ResName: "生产环境-业务服务"
    Blue:
      ResName: "测试环境-业务服务"
    Green:
      ResName: "预发环境-业务服务"
    Orange:
      ResName: "沙箱环境-业务服务"
  1. 资源属性直接调用映射表:
Properties:
  Name: !FindInMap [ColorNameMap, !Ref Color, ResName]

内容的提问来源于stack exchange,提问作者NinjaGaiden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 09:48:03