Не работает экземпляр сбоя облачной информации 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"
]
}
}
}
}
Что я делаю неправильно?
2 ответа
Это было довольно увлекательно, видеть, как экземпляр останавливается!
При использовании Amazon Linux 2 это можно исправить, изменив:
"DeviceName": "/dev/sda1",
в:
"DeviceName": "/dev/xvda",
Или это можно исправить с помощью Amazon Linux (версия 1) с /dev/sda1
,
Тем не менее, это не исправит ваши VolumeAttachment
вопрос.
Поскольку вы создаете новые тома, было бы проще просто указать тома как часть экземпляра, а не указывать том 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" }
}
]
У меня была такая же проблема, пока я не изменил AMI в своем шаблоне. Первоначально я тестировал Linux AMI в регионе Северная Вирджиния, где это не удалось, но когда я использовал CENTOS AMI, на который я подписался, он работал.