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

问题描述 投票:1回答:1

使用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中进行管理?

amazon-web-services amazon-ec2 amazon-cloudformation aws-cdk
1个回答
0
投票

所以,应该如何管理EBS卷到新服务器的传输?是否可以在CloudFormation中进行管理?

未进行管理。需要替换实例(例如AMI ID更改)的updatefail并显示以下错误消息:

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

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

ps.s。

我根据针对此问题在CloudFormation中针对此特定场景进行的快速实验编写了此答案。也许有更好的方法,我目前不知道。

© www.soinside.com 2019 - 2024. All rights reserved.