You need to enable JavaScript to run this app. 如何正确使用安全组VpcId属性并修复CloudFormation模板报错
优惠活动
大模型
产品
解决方案
定价
更多

如何正确使用安全组VpcId属性并修复CloudFormation模板报错

错误原因

你遇到的报错由三个核心问题导致:

  • YAML语法解析错误:你给!Join函数标签错误添加了冒号,同时缩进不规范,导致CloudFormation将VpcId的配置解析为了Type字段的子映射(map),而非SecurityGroup的属性,触发了「map keys必须为字符串」的格式校验错误。
  • 无效属性冗余:AWS::EC2::SecurityGroup资源本身没有InstanceId属性,你额外添加的这个字段也会干扰模板解析。
  • 隐性逻辑问题:即使格式修正,CloudFormation的动态引用({{resolve:ssm:...}})不支持通过!Join动态拼接生成,动态引用的解析优先级高于模板函数执行,拼接后的字符串不会被识别为有效的SSM参数拉取规则。
可行解决方案

直接用!Sub函数替代!Join生成SSM动态引用字符串,同时清理无效属性、规范缩进即可,修正后的代码如下:

ContainerSecurityGroup:
  Type: AWS::EC2::SecurityGroup
  Properties:
    GroupDescription: "ECS Containers Security Group"
    VpcId: !Sub "{{resolve:ssm:/ca/config/network/vpc_id:${ParamVersion}}}"
    GroupName: !Sub "${Env}-${ServiceName}-sg"
    SecurityGroupIngress:
      - IpProtocol: tcp
        FromPort: 8080
        ToPort: 8080
        CidrIp: 10.49.63.0/24
      - IpProtocol: tcp
        FromPort: 8080
        ToPort: 8080
        CidrIp: 10.93.0.0/16
      - IpProtocol: tcp
        FromPort: 8080
        ToPort: 8080
        CidrIp: 10.97.0.0/16
      - IpProtocol: tcp
        FromPort: 8080
        ToPort: 8080
        CidrIp: 10.50.128.0/21
      - IpProtocol: tcp
        FromPort: 8080
        ToPort: 8080
        CidrIp: 10.50.144.0/24
      - IpProtocol: tcp
        FromPort: 8080
        ToPort: 8080
        CidrIp: 172.25.0.0/16

如果你确实需要拼接复杂的SSM路径,可以先在模板参数或者Mappings中定义路径前缀,再通过!Sub统一拼接,避免使用!Join处理动态引用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 07:54:09