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

如何在CloudFormation中为ECS集群VPC子网枚举可用区?

用CloudFormation自动按可用区创建ECS Fargate专属VPC及子网

核心思路:利用内置函数动态获取可用区

CloudFormation提供Fn::GetAZs内置函数,无需硬编码就能获取当前部署区域的所有可用区列表。搭配Fn::Cidr、Fn::Sub等函数,可自动为每个可用区创建对应子网。

最佳实践模板示例

以下是可直接复用的模板,会自动创建专属VPC,并为每个可用区生成一个适配Fargate的子网(示例为公有子网,支持互联网访问):

AWSTemplateFormatVersion: '2010-09-09'
Description: 为ECS Fargate创建专属VPC及每个可用区对应子网

Parameters:
  VPCCidr:
    Type: String
    Default: 10.0.0.0/16
    Description: VPC的CIDR块
  SubnetCidrBits:
    Type: Number
    Default: 24
    Description: 每个子网的CIDR掩码位数(从VPC Cidr中划分)

Resources:
  # 创建专属VPC
  ECSFargateVPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: !Ref VPCCidr
      EnableDnsSupport: true
      EnableDnsHostnames: true
      Tags:
        - Key: Name
          Value: ECS-Fargate-VPC

  # 为每个可用区创建子网
  ECSFargateSubnets:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref ECSFargateVPC
      CidrBlock: !Select
        - !Ref 'AWS::StackIndex'
        - !Cidr
          - !Ref VPCCidr
          - !GetAZs ''
          - !Ref SubnetCidrBits
      AvailabilityZone: !Select
        - !Ref 'AWS::StackIndex'
        - !GetAZs ''
      MapPublicIpOnLaunch: true # 公有子网配置,私有子网可设为false
      Tags:
        - Key: Name
          Value: !Sub ECS-Fargate-Subnet-${!Select [!Ref 'AWS::StackIndex', !GetAZs '']}

Outputs:
  VPCId:
    Description: ECS Fargate专属VPC ID
    Value: !Ref ECSFargateVPC
  SubnetIds:
    Description: 所有可用区对应的子网ID列表
    Value: !Join [",", !Ref ECSFargateSubnets]

模板关键部分说明

  • !GetAZs '':传入空字符串,自动获取当前栈部署区域的所有可用区。
  • !Cidr:从VPC的CIDR块中,按指定掩码位数划分出与可用区数量匹配的子网CIDR列表。
  • AWS::StackIndex:创建多实例资源时,该伪参数为每个实例分配索引(0、1、2...),实现每个可用区对应一个子网。
  • MapPublicIpOnLaunch:若Fargate任务需访问互联网则设为true,若仅内网通信可设为false并搭配NAT网关。

额外建议

  • 若需区分公有/私有子网,可复制子网资源分别配置MapPublicIpOnLaunch,为每个可用区各创建一个公有和私有子网。
  • 补充创建互联网网关、路由表等资源,完善VPC网络配置,确保Fargate任务网络连通性符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 01:57:37