Amazon web services CloudFormation/CDK:如何替换EC2实例并保留EBS存储?

Amazon web services CloudFormation/CDK:如何替换EC2实例并保留EBS存储?,amazon-web-services,amazon-ec2,amazon-cloudformation,aws-cdk,Amazon Web Services,Amazon Ec2,Amazon Cloudformation,Aws Cdk,使用AWS CDK,可以如下方式创建带有附加EBS的EC2实例: BlockDevice durableStorage = BlockDevice.builder() .deviceName("/dev/sdf") .volume(BlockDeviceVolume.ebs(

使用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卷到新服务器的传输?这会以云计算的方式进行管理吗

那么,应该如何管理EBS卷到新服务器的传输呢?这会以云计算的方式进行管理吗

它没有得到管理。需要更换实例(例如AMI id更改)的更新将失败,并显示以下错误消息:

不支持更新资源类型AWS::EC2::VolumeAttachment

处理此问题的一种方法是分阶段进行更新。首先,删除模板中的附件(只需将其注释掉),并更新堆栈以将实例与卷分离。然后对实例进行替换更新。最后,取消对附件的注释并再次更新。这将导致卷重新附加到新实例

p、 美国

我写这个答案是基于我在CloudFormation中为这个特定场景做的快速实验,我为这个问题做了这个实验。也许有更好的办法,我现在不知道