使用AWS CDK可以创建具有附加EBS的EC2实例,如下所示:
BlockDevice durableStorage = BlockDevice.builder()
.deviceName("/dev/sdf")
.volume(BlockDeviceVolume.ebs(
DURABLE_STORAGE_GB,
EbsDeviceOptions.builder()
.deleteOnTermination(false)
.encrypted(true)
.volumeType(EbsDeviceVolumeType.GP2)
.build()))
.build();
Instance instance = new Instance(
this,
"MyInstance",
InstanceProps.builder()
.blockDevices(List.of(durableStorage))
// more config here
.build());
如果堆栈中有涉及到EC2实例的替换的更新,那么如何管理EBS附件?保留旧实例,直到创建新实例为止,然后才销毁旧实例,那么一个实例应如何管理EBS卷到新服务器的传输?是否可以在CloudFormation中进行管理?
所以,应该如何管理EBS卷到新服务器的传输?是否可以在CloudFormation中进行管理?
未进行管理。需要替换实例(例如AMI ID更改)的update将fail并显示以下错误消息:
不支持更新为资源类型AWS :: EC2 :: VolumeAttachment。
处理此问题的一种方法是执行分阶段更新。首先,您删除模板中的附件(只需将其注释掉),然后更新堆栈以将实例与卷分离。然后,您对实例进行替换更新。最后,您取消注释附件并再次更新。这导致将卷重新连接到新实例。
ps.s。
我根据针对此问题在CloudFormation中针对此特定场景进行的快速实验编写了此答案。也许有更好的方法,我目前不知道。