繁体   English   中英

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

[英]CloudFormation / CDK: how to replace an EC2 instance and keep EBS storage?

使用 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 更改)的更新失败并显示以下错误消息:

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

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

ps

我根据我在 CloudFormation 中为这个问题所做的这个特定场景的快速实验写了这个答案。 也许有更好的方法,我目前不知道。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM