![](/img/trans.png)
[英]How to create EC2 instance with EBS volume in CloudFormation?
[英]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.