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

CloudFormation中如何在ECS服务里引用自定义创建的子网ID?

解决方法

不需要使用!GetAtt,直接用!Ref引用模板内创建的PublicSubnetOne即可——CloudFormation中AWS::EC2::Subnet资源的逻辑ID通过!Ref就能直接返回子网ID。具体操作分两步:

1. 修改CloudFormation模板

  • 移除多余的SubnetID参数(不再需要外部传入子网ID)
  • 在Service的Subnets配置中,把!Ref SubnetID替换为!Ref PublicSubnetOne

修改后的模板核心部分如下:

AWSTemplateFormatVersion: "2010-09-09"
# 移除原有的SubnetID参数
Resources:
  VPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: '10.0.0.0/16'
  PublicSubnetOne:
    Type: AWS::EC2::Subnet
    Properties:
      AvailabilityZone:
        Fn::Select:
          - 0
          - Fn::GetAZs: { Ref: 'AWS::Region' }
      VpcId: !Ref 'VPC'
      CidrBlock: '10.0.1.0/24'
      MapPublicIpOnLaunch: true
...
  Service:
    Type: AWS::ECS::Service
    Properties:
      ServiceName: tui-task-service
      Cluster: !Ref Cluster
      TaskDefinition: !Ref TaskDefinition
      DesiredCount: 1
      LaunchType: FARGATE
      NetworkConfiguration:
        AwsvpcConfiguration:
          AssignPublicIp: ENABLED
          Subnets:
            - !Ref PublicSubnetOne  # 改为引用模板内创建的子网
          SecurityGroups:
            - !GetAtt ContainerSecurityGroup.GroupId

2. 修改部署命令

无需再传入SubnetID参数,命令简化为:

aws cloudformation create-stack --stack-name my-deployment --template-body file://ecs.yml \
  --capabilities CAPABILITY_NAMED_IAM

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 23:50:31