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

CloudFormation报错:SourceSecurityGroupId需为字符串类型求助

解决CloudFormation栈创建时SourceSecurityGroupId类型错误问题

你的问题出在**SourceSecurityGroupId的取值格式**上:你用数组语法(- !GetAtt ...)把安全组ID包裹成了数组,但CloudFormation要求这个字段必须是字符串类型。!GetAtt ALBSecurityGroup.GroupId本身就会返回字符串格式的安全组ID,不需要额外用数组包裹。

修正后的代码:

AutoscalingSecurityGroup:
  Type: 'AWS::EC2::SecurityGroup'
  Properties:
    GroupDescription: Security group for autoscaling
    VpcId: !Ref VPC
    SecurityGroupIngress:
      - IpProtocol: tcp
        FromPort: 80
        ToPort: 80
        SourceSecurityGroupId: !GetAtt ALBSecurityGroup.GroupId  # 去掉数组符号
      - IpProtocol: tcp
        FromPort: 443
        ToPort: 443
        SourceSecurityGroupId: !GetAtt ALBSecurityGroup.GroupId  # 去掉数组符号
    SecurityGroupEgress:
      - IpProtocol: tcp
        FromPort: 80
        ToPort: 80
        CidrIp: 0.0.0.0/0
      - IpProtocol: tcp
        FromPort: 443
        ToPort: 443
        CidrIp: 0.0.0.0/0

ALBSecurityGroup:
  Type: 'AWS::EC2::SecurityGroup'
  Properties:
    GroupDescription: Security group for Application Load Balancer
    VpcId: !Ref VPC
    SecurityGroupIngress:
      - IpProtocol: tcp
        FromPort: 80
        ToPort: 80
        CidrIp: 0.0.0.0/0
      - IpProtocol: tcp
        FromPort: 443
        ToPort: 443
        CidrIp: 0.0.0.0/0
    SecurityGroupEgress:
      - IpProtocol: -1
        CidrIp: 0.0.0.0/0 

原因说明:

在CloudFormation的AWS::EC2::SecurityGroup资源定义中,SecurityGroupIngress的每个条目里,SourceSecurityGroupId是字符串类型的属性,用于指定单个源安全组ID。你之前的写法(添加-)会将值转换为数组,不符合参数类型校验规则,因此触发"SourceSecurityGroupId必须为字符串类型"的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 16:25:13