Экземпляр сбоя облачной информации AWS не запущен

Я пытаюсь создать инстанс Amazon EC2, а затем создать том Amazon EBS и присоединить его к инстансу. Я использую для этого шаблон CloudFormation. К сожалению, создание стека не удается при подключении вновь созданного тома к экземпляру со следующей ошибкой:

Экземпляр i-01eebc8c9c492c035 не «запущен». (Сервис: AmazonEC2; Код состояния: 400; Код ошибки: IncorrectState; Идентификатор запроса: 635572fd-dd25-4a02-9306-6e22f88e13dc)

Я не понимаю, когда создание экземпляра завершено, это означает, что экземпляр запущен и работает. Как такая ошибка возможна?

Я использую следующий шаблон CloudFormation:

{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Description": "single instance template",
  "Parameters": {
    "InstanceType": {
      "Type": "String",
      "Default": "t2.micro"
    },
    "InstanceName": {
      "Type": "String",
      "Default": "test_CFT"
    },
    "RootVolumeSize": {
      "Type": "String",
      "Default": "50"
    },
    "Volume1Size": {
      "Type": "String",
      "Default": "8"
    },
    "Region": {
      "Type": "String",
      "Default": "us-east-2"
    },
    "AMIID": {
      "Type": "String",
      "Default": "ami-8c122be9"
    },
    "SubnetIds": {
      "Type": "CommaDelimitedList",
      "Default": "subnet-595e7422"
    },
    "SecurityGroupIDs": {
      "Type": "CommaDelimitedList",
      "Default": "sg-082faee8335351537"
    }
  },
  "Resources": {
    "Instance": {
      "Type": "AWS::EC2::Instance",
      "Properties": {
        "ImageId": {
          "Ref": "AMIID"
        },
        "InstanceType": {
          "Ref": "InstanceType"
        },
        "KeyName": "thehope",
        "NetworkInterfaces": [
          {
            "AssociatePublicIpAddress": "false",
            "DeviceIndex": "0",
            "SubnetId": {
              "Fn::Select": [
                0,
                {
                  "Ref": "SubnetIds"
                }
              ]
            },
            "GroupSet": {
              "Ref": "SecurityGroupIDs"
            }
          }
        ],
        "BlockDeviceMappings": [
          {
            "DeviceName": "/dev/sda1",
            "Ebs": {
              "VolumeSize": {
                "Ref": "RootVolumeSize"
              },
              "DeleteOnTermination": "true",
              "VolumeType": "gp2"
            }
          }
        ],
        "Tags": [
          {
            "Key": "Name",
            "Value": {
              "Ref": "InstanceName"
            }
          }
        ]
      }
    },
    "Volume1": {
      "DeletionPolicy": "Delete",
      "Properties": {
        "AvailabilityZone": {
          "Fn::GetAtt": [
            "Instance",
            "AvailabilityZone"
          ]
        },
        "Encrypted": "False",
        "Size": {
          "Ref": "Volume1Size"
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "New_volume"
          }
        ],
        "VolumeType": "gp2"
      },
      "Type": "AWS::EC2::Volume"
    },
    "VolumeAttachment1": {
      "Properties": {
        "Device": "/dev/xvdb",
        "InstanceId": {
          "Ref": "Instance"
        },
        "VolumeId": {
          "Ref": "Volume1"
        }
      },
      "Type": "AWS::EC2::VolumeAttachment"
    }
  },
  "Outputs": {
    "InstanceId": {
      "Description": "InstanceId of the instance",
      "Value": {
        "Ref": "Instance"
      }
    },
    "AZ": {
      "Description": "Availability Zone of the instance",
      "Value": {
        "Fn::GetAtt": [
          "Instance",
          "AvailabilityZone"
        ]
      }
    },
    "PrivateIP": {
      "Description": "PrivateIP of the instance",
      "Value": {
        "Fn::GetAtt": [
          "Instance",
          "PrivateIp"
        ]
      }
    }
  }
}

Что я делаю неправильно?


person varun    schedule 25.08.2018    source источник
comment
Это моя первая публикация в стеке над потоком. Извините за просмотр. Ниже приведен шаблон Cloudformation. github.com/varun1020/practice_all/blob/master/   -  person varun    schedule 26.08.2018
comment
Вы пробовали добавить атрибут DependsOn - AWS CloudFormation к Volume, указывая на экземпляр EC2?   -  person John Rotenstein    schedule 26.08.2018
comment
Я пробовал только сейчас, это не сработало, и я также заметил, что по умолчанию экземпляр находится в остановленном состоянии при запуске. как изменить это поведение на бег?   -  person varun    schedule 26.08.2018


Ответы (3)


Поскольку вы создаете новые тома, было бы проще просто указать тома как часть экземпляра, а не указывать том Amazon EBS и затем присоединять его к экземпляру.

Из свойства сопоставления блочных устройств Amazon EC2 - AWS CloudFormation:

В этом примере размер корневого устройства с поддержкой EBS (/ dev / sda1) устанавливается равным 50 ГиБ, а другое устройство с поддержкой EBS, сопоставленное с / dev / sdm, имеет размер 100 ГиБ.

"BlockDeviceMappings" : [
   {
      "DeviceName" : "/dev/sda1",
      "Ebs" : { "VolumeSize" : "50" }
   },
   {
      "DeviceName" : "/dev/sdm",
      "Ebs" : { "VolumeSize" : "100" }
   }
] 
person John Rotenstein    schedule 25.08.2018
comment
Спасибо за ответ, Джон. Я хочу зашифровать созданный том на следующем этапе (что невозможно таким образом), а также хочу протестировать добавление флага удаления при завершении на этапе AWS :: EC2 :: VolumeAttachment. Я сказал тест, потому что не уверен, что его можно добавить на этом этапе. - person varun; 26.08.2018

Было очень увлекательно наблюдать за тем, как экземпляр останавливается!

При использовании Amazon Linux 2 это можно исправить, изменив:

"DeviceName": "/dev/sda1",

в:

"DeviceName": "/dev/xvda",

Или это можно исправить с помощью Amazon Linux (версия 1) с /dev/sda1.

Однако это не решает вашу VolumeAttachment проблему.

person John Rotenstein    schedule 26.08.2018

Я столкнулся с той же проблемой, пока не изменил AMI в своем шаблоне. Первоначально я тестировал Linux AMI в регионе Северная Вирджиния, где это не удалось, но когда я использовал CENTOS AMI, на который я подписался, он работал.

person user12744191    schedule 19.01.2020