Должен быть определен хотя бы один член ресурсов ... ошибка формирования облака ec2 - PullRequest
0 голосов
/ 06 октября 2018
I tried other templates from the net but still getting the same error. Error

сообщение: шаблон содержит ошибки .: ошибка формата шаблона: должен быть определен хотя бы один член ресурсов.

{
"AWSTemplateFormatVersion" : "2010-09-09",

"Description" : "TTND AWS CloudFormation template to launch first instance",

"Parameters" : {

"KeyName" : {
"Description" : "EC2 Key Pair for SSH Access",
"Default" : "sample",
"MinLength": "1",
"MaxLength": "64",
"AllowedPattern" : "[-_ a-zA-Z0-9]*",
"ConstraintDescription" : "can contain only alphanumeric characters, spaces, dashes and underscores."
},
"InstanceType" : {
"Description" : "Instance1 EC2 instance type",
"Type" : "String",
"Default" : "t2.micro",
"AllowedValues" : [ "t2.micro","m1.small","m1.medium","m1.large"],
"ConstraintDescription" : "must be a valid EC2 instance type."
}
},
"Mappings" : {
    "AWSInstanceMapping" : {
      "t2.micro"    : { "Arch" : "64" },
      "t2.small"    : { "Arch" : "64" },
      "t2.medium"   : { "Arch" : "64" },
      "t2.large"    : { "Arch" : "64" },
      "m3.medium"   : { "Arch" : "64" },
      "m4.large"   : { "Arch" : "64" },
      "m4.xlarge"  : { "Arch" : "64" },
      "m4.2xlarge"  : { "Arch" : "64" }
    }
    },

    "InstanceAMI" : {
      "us-east-1"      : { "64" : "ami-09ca8e1e" }
    },

я пробовал другие шаблоны для сети, но та же ошибка, которую я получаю

"Resources" : {

    "VPC" : {
      "Type" : "AWS::EC2::VPC",
      "Properties" : {
        "CidrBlock" : "10.0.0.0/16",
        "Tags" : [
          {"Key" : "Application", "Value" : { "Ref" : "AWS::StackId"} },
          { "Key": "Name", "Value": "Project_VPC"},
          {"Key" : "Network", "Value" : "Public" }
        ]
      }
    },

    "PublicSubnet" : {
      "Type" : "AWS::EC2::Subnet",
      "Properties" : {
        "VpcId" : { "Ref" : "VPC" },
        "CidrBlock" : "10.0.0.0/24",
        "Tags" : [
          {"Key" : "Application", "Value" : { "Ref" : "AWS::StackId"} },
          {"Key" : "Network", "Value" : "Public" },
          { "Key": "Name", "Value": "Project_Public_Subnet"}
        ]
      }
    },

    "InternetGateway" : {
      "Type" : "AWS::EC2::InternetGateway",
      "Properties" : {
        "Tags" : [
          {"Key" : "Application", "Value" : { "Ref" : "AWS::StackId"} },
          {"Key" : "Network", "Value" : "Public" },
          { "Key": "Name", "Value": "Project_Internetgateway"}
        ]
      }
    },

    "AttachGateway" : {
       "Type" : "AWS::EC2::VPCGatewayAttachment",
       "Properties" : {
         "VpcId" : { "Ref" : "VPC" },
         "InternetGatewayId" : { "Ref" : "InternetGateway" }
       }
    },
"PublicRouteTable" : {
      "Type" : "AWS::EC2::RouteTable",
      "Properties" : {
        "VpcId" : {"Ref" : "VPC"},
        "Tags" : [
          {"Key" : "Application", "Value" : { "Ref" : "AWS::StackId"} },
          {"Key" : "Network", "Value" : "Public" },
          { "Key": "Name", "Value": "cloudwords_public_routetable"}
        ]
      }
    },                                                           

часть кода, который я удалил для публикации, выдает большую ошибку кода, поэтому

"Outputs" : {
 "InstanceId" : {
 "Description" : "InstanceId of the newly created instance",
 "Value" : { "Ref" : "Instance" }
 },
    }
}

Если у кого-то есть простой шаблон запуска экземпляра AWS EC2 с использованием шаблона CloudFormation, пожалуйста, напишите

Ответы [ 3 ]

0 голосов
/ 06 октября 2018

Ваш шаблон имеет несколько проблем.У @Tom есть несколько полезных советов, которым нужно следовать.

Минимум, который вам необходим для AMI, - это следующее.После нескольких исправлений в вашем шаблоне и добавления фрагмента ниже, я могу запустить ваш шаблон.Дополнительные примеры смотрите здесь: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resources-section-structure.html

"Resources" : {
  "MyEC2Instance" : {
    "Type" : "AWS::EC2::Instance",
    "Properties" : {
      "ImageId" : "ami-0ff8a91507f77f867"
    }
  }
}

ваш шаблон с фрагментом экземпляра EC2:

{
    "AWSTemplateFormatVersion" : "2010-09-09",

    "Description" : "TTND AWS CloudFormation template to launch first instance",

    "Parameters" : {

          "KeyName" : {
              "Description" : "EC2 Key Pair for SSH Access",
              "Type": "String",
              "Default" : "sample",
              "MinLength": "1",
              "MaxLength": "64",
              "AllowedPattern" : "[-_ a-zA-Z0-9]*",
              "ConstraintDescription" : "can contain only alphanumeric characters, spaces, dashes and underscores."
          },
          "InstanceType" : {
              "Description" : "Instance1 EC2 instance type",
              "Type" : "String",
              "Default" : "t2.micro",
              "AllowedValues" : [ "t2.micro","m1.small","m1.medium","m1.large"],
              "ConstraintDescription" : "must be a valid EC2 instance type."
          }
    },
    "Mappings" : {
        "AWSInstanceMapping" : {
          "t2.micro"    : { "Arch" : "64" },
          "t2.small"    : { "Arch" : "64" },
          "t2.medium"   : { "Arch" : "64" },
          "t2.large"    : { "Arch" : "64" },
          "m3.medium"   : { "Arch" : "64" },
          "m4.large"   : { "Arch" : "64" },
          "m4.xlarge"  : { "Arch" : "64" },
          "m4.2xlarge"  : { "Arch" : "64" }
        }
    },

    "Resources" : {
      "MyEC2Instance" : {
        "Type" : "AWS::EC2::Instance",
        "Properties" : {
          "ImageId" : "ami-0ff8a91507f77f867"
        }
      }  
    }
}
0 голосов
/ 08 октября 2018

Вы попросили простой шаблон для запуска экземпляра EC2, и все.Пожалуйста, помните, что это только основа, и она может быть расширена с помощью многих других опций.Пожалуйста, дайте мне знать, если вам нужна конкретная помощь здесь.Удачи.

{
  "AWSTemplateFormatVersion" : "2010-09-09",
  "Description" : "AWS CloudFormation Sample Template",
  "Parameters" : {
    "KeyName": {
      "Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instance",
      "Type": "AWS::EC2::KeyPair::KeyName",
      "ConstraintDescription" : "must be the name of an existing EC2 KeyPair."
    },
    "InstanceType": {
      "Description": "EC2 instance type",
      "Type": "String",
      "Default": "t2.micro"
    },
    "ImageID": {
      "Description": "EC2 instance type",
      "Type": "String",
      "Default": "ami-xxxxxxxxxxxxxxx"
    },
    "SecurityGroupId" : {
      "Type" : "String",
      "Description" : "The SecurityGroupId of an existing EC2 SecurityGroup in your Virtual Private Cloud (VPC)",
      "Default": "sg-xxxxxxxx"
    },
    "SubnetID": {
      "Description": "Subnets where logging EC2 instances can be deployed, must be in same VPC as selected above",
      "Type": "String",
      "ConstraintDescription": "must be valid subnet.",
      "Default": "subnet-xxxxxxxxx"
    }
  },
  "Resources" : {
    "EC2Instance" : {
      "Type" : "AWS::EC2::Instance",
     "Properties" : {
        "InstanceType" : { "Ref" : "InstanceType" },
        "SecurityGroupIds" : [{ "Ref" : "SecurityGroupId"}],
        "KeyName" : { "Ref" : "KeyName" },
        "ImageId" : { "Ref" : "ImageID" },
        "InstanceInitiatedShutdownBehavior" : "stop",
        "SubnetId" : { "Ref": "SubnetID" }
      }
    }
  },
  "Outputs" : {
    "InstanceId" : {
      "Description" : "InstanceId of the newly created EC2 instance",
      "Value" : { "Ref" : "EC2Instance" }
    }
  }
}
0 голосов
/ 06 октября 2018

Похоже, что ваши примеры не определили какие-либо AWS::EC2::Instance ресурсы, которые указывают CloudFormation на предоставление экземпляров EC2.

Вот очень минималистичный шаблон CloudFormation, который создаст один экземпляр t2.micro.Ознакомьтесь с определением ресурса AWS :: EC2 :: Instance , чтобы узнать, какие свойства можно добавить для его настройки.

{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Resources": {
    "ExampleEc2Instance": {
      "Type": "AWS::EC2::Instance",
      "Properties": {
        "InstanceType": "t2.micro",
        "ImageId" : "ami-a0cfeed8"
      }
    }
  }
}

Поиск допустимого AMI для конкретной операционной системы, конфигурациии регион может быть немного сложнее. В этом пошаговом руководстве обсуждается стратегия автоматизации поиска AMI с использованием AWS Lambda.

...