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

如何基于区域条件从CloudFormation参数中为ELB指定子网列表?

解决CloudFormation ELB子网条件引用报错问题

问题根源

你在Subnets字段下添加了-符号,这会把!If返回的子网列表包装成嵌套列表(列表里套列表),但ELB的Subnets属性要求直接传入字符串列表,因此触发"subnets have to be of list type"报错。

修复代码

直接移除Subnets下的-,让!If的结果直接作为Subnets的值即可——你的两个子网参数本身就是List<String>类型,!If会返回符合条件的完整列表:

BastionELB:
    Type: AWS::ElasticLoadBalancing::LoadBalancer
    Properties: 

      ConnectionDrainingPolicy: 
        Enabled: !Ref ELBConfigConnectionDraining
        Timeout: !Ref ELBConfigConnectionDrainingTimeout

      SecurityGroups: 
        - !Ref BastionClientsdevELBIntuitSecurityGroup

      Subnets: !If [ isRegionUS-WEST-2, !Ref PublicSubnetsWestRegion, !Ref PublicSubnetsEastRegion ]

补充说明

  • 你的子网参数定义(PublicSubnetsEastRegion这类)是正确的List<String>类型,无需修改
  • !If函数会根据区域条件直接返回对应的子网列表,直接赋值给Subnets就能满足ELB的参数要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:30:41