Я пытаюсь подключить существующий том к новому экземпляру EC2 Windows с помощью CloudFormation. Это похоже на то, что должно быть возможным.
Большая фотография
У меня есть предоставленный поставщиком AMI, который устанавливает некоторое предварительно настроенное программное обеспечение. Мы хотим создать один экземпляр, и мы будем время от времени изменять размер экземпляра EC2 для тестирования производительности. Мы не хотим потерять данные на единственном диске EBS, который мы создадим из AMI.
Поскольку мы используем CloudFormation, если мы просто изменим свойство AWS :: EC2 :: Instance.InstanceType и загрузим измененный стек, CloudFormation получит новый экземпляр и том из AMI. Это бесполезно, поскольку мы потеряем данные, которые загружали бы с существующего диска.
Объемный метод
Я сначала попробовал этот сценарий.
WindowsVolume:
Type: AWS::EC2::Volume
Properties:
AutoEnableIO: true
AvailabilityZone: "ap-southeast-2b"
Encrypted: true
Size: 30
SnapshotId: snap-0008f111111111
Tags:
- Key: Name
Value:
Ref: AWS::StackName
VolumeType: gp2
EC2Instance:
Type: AWS::EC2::Instance
InstanceType: t2.micro
ImageId: ami-663bdc04 # Windows Server stock image
KeyName: removed
IamInstanceProfile: removed
InstanceInitiatedShutdownBehavior: stop
SecurityGroupIds:
Fn::Split: [",", "Fn::ImportValue": StackName-ServerSecurityGroup]
SubnetId:
!ImportValue StackName-Subnet1
Volumes:
- Device: "/dev/sda1"
VolumeId:
Ref: WindowsVolume
Я получил сообщение об ошибке
Недопустимое значение '/ dev / sda1' для unixDevice. Точка подключения / dev / sda1 уже используется
BlockDeviceMappings Метод
Затем я попытался использовать BlockDeviceMappings
BlockDeviceMappings:
- DeviceName: "/dev/sda1"
Ebs:
Ref: WindowsVolume
На этот раз сообщение об ошибке было
Значение свойства Ebs должно быть объектом
VolumeAttachment Method
Я также пробовал использовать VolumeAttachment вместо свойства Volumes или BlockDeviceMapping.
VolAttach:
Type: AWS::EC2::VolumeAttachment
Properties:
Device: "/dev/sda1"
InstanceId: !Ref EC2Instance
VolumeId: !Ref WindowsVolume
Это дало мне то же сообщение, что и выше
Недопустимое значение '/ dev / sda1' для unixDevice. Точка подключения / dev / sda1 уже используется
Ключевой вопрос
Кто-нибудь успешно подключил существующий корневой том или моментальный снимок к новому экземпляру EC2? Если возможно, какой правильный метод?
Альтернативные подходы
Рад слышать альтернативные подходы. Например, я рассмотрел следующие варианты:
При запуске инстанса EC2 невозможно смонтировать существующий том EBS.
При запуске экземпляра EC2 тома EBS всегда будут создаваться только что из снимков состояния EBS, связанных с AMI.
Есть несколько обходных путей: