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

使用CloudFormation创建EC2实例报错求解决方案及ap-south-1模板

问题分析与解决办法

嘿,我来帮你搞定这个CloudFormation模板的问题!

1. 核心错误原因:缺少Resources顶层节点

CloudFormation模板有严格的结构要求,必须包含顶层的Resources字段,所有要创建的云资源(比如你的EC2实例)都得嵌套在这个字段下面,用自定义的资源名称作为键。你直接写了EC2实例的配置,没有把它包裹在Resources里,这就是触发Template format error: At least one Resources member must be defined错误的根本原因。

另外你的模板还有两个小细节需要修正:

  • InstanceType的值后面多了个空格:"t2.micro " → 要改成"t2.micro",不然可能会被识别为无效实例类型
  • SecurityGroupIds和SecurityGroups不能同时指定:前者用于VPC环境,后者用于经典网络,二者互斥,选一个符合你环境的即可,避免冲突

2. 修正后的完整模板

这里是修复后的JSON模板,包含了正确的CloudFormation结构:

{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Resources": {
    "MyEC2Instance": {
      "Type": "AWS::EC2::Instance",
      "Properties": {
        "ImageId": "ami-08ddb3f251a88cf33",
        "InstanceType": "t2.micro",
        "KeyName": "Stagingkey",
        "LaunchTemplate": {
          "LaunchTemplateId": "jen1",
          "LaunchTemplateName": "Launchinstance",
          "Version": "V1"
        },
        "SecurityGroupIds": [
          "sg-055f49a32efd4238b"
        ]
      }
    }
  }
}

几点说明:

  • 新增了AWSTemplateFormatVersion(必填的顶层字段,指定模板遵循的版本规范)
  • 把EC2实例配置嵌套在Resources下,用MyEC2Instance作为资源的逻辑名称(你可以改成自己喜欢的名字)
  • 移除了冲突的SecurityGroups字段,保留SecurityGroupIds(如果你的实例在经典网络,就换成SecurityGroups并删掉SecurityGroupIds)
  • 去掉了InstanceType后面的多余空格

3. 适用于ap-south-1(孟买区域)的可用模板

下面是一个针对ap-south-1区域的完整示例模板,使用该区域的Amazon Linux 2 AMI(你可以替换成Ubuntu、Windows等其他系统的AMI):

{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Description": "EC2 Instance Provisioning Template for ap-south-1 Region",
  "Resources": {
    "MumbaiEC2Instance": {
      "Type": "AWS::EC2::Instance",
      "Properties": {
        "ImageId": "ami-02a0f373e66f89c85", // 2024年Amazon Linux 2的ap-south-1 AMI,建议确认最新版本
        "InstanceType": "t2.micro",
        "KeyName": "Stagingkey",
        "SecurityGroupIds": [
          "sg-055f49a32efd4238b"
        ],
        "Tags": [
          {
            "Key": "Name",
            "Value": "Mumbai-Worker-Instance"
          }
        ]
      }
    }
  }
}

小提示:

  • AMI ID会定期更新,你可以通过AWS控制台的EC2实例启动页面,或者运行AWS CLI命令获取最新的Amazon Linux 2 AMI:
    aws ec2 describe-images --owners amazon --filters "Name=name,Values=amzn2-ami-hvm-*-x86_64-gp2" --region ap-south-1
    
  • 如果需要保留你原来的LaunchTemplate配置,直接把对应的字段加回Properties里就可以了

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:37:22