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

如何通过CloudFormation YAML模板在指定VPC或子网中启动Amazon EC2实例

使用CloudFormation YAML在指定VPC/子网启动EC2实例

嘿,我来一步步教你怎么用CloudFormation YAML模板精准控制EC2实例在指定的VPC和子网里启动,包括必要的配置细节,避免踩坑~

核心逻辑说明

要实现这个需求,关键是在模板里明确指定两个核心属性:

  • 给EC2实例关联目标VPC的子网ID
  • 确保配套的安全组属于同一个目标VPC(EC2实例必须绑定安全组,且安全组和实例必须在同一个VPC内)

完整示例模板

下面是一个可直接使用的模板,包含了参数化配置(方便你灵活修改目标VPC、子网、实例类型等):

AWSTemplateFormatVersion: '2010-09-09'
Description: 启动EC2实例到指定VPC和子网的CloudFormation模板

Parameters:
  TargetVpcId:
    Type: AWS::EC2::VPC::Id
    Description: 选择要部署EC2实例的目标VPC ID
  TargetSubnetId:
    Type: AWS::EC2::Subnet::Id
    Description: 选择目标VPC下的子网ID(实例将部署在此子网)
  InstanceType:
    Type: String
    Default: t2.micro
    Description: EC2实例类型,默认t2.micro
  AmiId:
    Type: String
    Description: 部署区域对应的AMI ID(比如us-east-1的Amazon Linux 2是ami-0c55b159cbfafe1f0)

Resources:
  # 创建属于目标VPC的安全组
  InstanceSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: 允许SSH和HTTP访问的安全组
      VpcId: !Ref TargetVpcId  # 绑定到指定VPC
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 22
          ToPort: 22
          CidrIp: 0.0.0.0/0  # 注意:生产环境请限制为特定IP段
        - IpProtocol: tcp
          FromPort: 80
          ToPort: 80
          CidrIp: 0.0.0.0/0
      SecurityGroupEgress:
        - IpProtocol: -1
          FromPort: 0
          ToPort: 0
          CidrIp: 0.0.0.0/0

  # 在指定子网启动EC2实例
  TargetEC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: !Ref InstanceType
      ImageId: !Ref AmiId
      SubnetId: !Ref TargetSubnetId  # 指定目标子网
      SecurityGroups:
        - !Ref InstanceSecurityGroup  # 绑定上面创建的安全组
      Tags:
        - Key: Name
          Value: VPC-Subnet-Specific-EC2

关键部分拆解

  • 参数化配置:模板里的TargetVpcId和TargetSubnetId用了AWS::EC2::VPC::Id和AWS::EC2::Subnet::Id类型,在CloudFormation控制台部署时,会自动列出当前区域的可用VPC和子网,不用你手动复制ID,非常方便。
  • 安全组绑定VPC:InstanceSecurityGroup的VpcId属性直接引用TargetVpcId,确保安全组和目标VPC属于同一环境,避免跨VPC绑定的错误。
  • EC2实例指定子网:TargetEC2Instance的SubnetId属性明确指向TargetSubnetId,这是让实例在指定子网启动的核心配置。

部署步骤

  1. 打开AWS控制台,进入CloudFormation服务
  2. 点击“创建堆栈”,选择“上传模板文件”,把上面的YAML文件上传
  3. 填写堆栈名称,然后依次选择目标VPC、子网,输入对应区域的AMI ID,选择实例类型
  4. 一路点击下一步,最后确认创建,等待堆栈部署完成(大概1-2分钟)

注意事项

  • 确保你选择的子网确实属于指定的VPC,不然CloudFormation会抛出验证错误
  • 安全组的入站规则请根据实际需求调整,示例里的0.0.0.0/0是测试用的,生产环境一定要限制为可信IP段
  • AMI ID是区域专属的,比如us-west-2的Amazon Linux 2 AMI和us-east-1的不一样,一定要选当前部署区域的有效AMI

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:48:36