我正在尝试查找设置/方法,通过该设置/方法,我们可以告诉AWS SDK在终止时删除EBS卷。此设置可通过AWS控制台获得,但不能通过AWS Java SDK获得。
我创建EBS卷的代码如下所示
CreateVolumeRequest volumeRequest = new CreateVolumeRequest(volumeSize, availabilityZone);
Volume vol = EC2_CLIENT.createVolume(volumeRequest).getVolume();
有谁能告诉我如何使用Java SDK启用EBS卷终止时删除?
答案 0 :(得分:2)
可能你自己找到了解决方案或解决方法,但我遇到了同样的问题,我在Google上发现了这个问题,所以我会为未来的开发人员写一个答案。
似乎在创建或附加EBS期间无法在终止时启用删除,但仅通过修改实例属性操作。 This answer解释了如何通过CLI执行此操作。 AWS SDK for Java的类比方法是使用AmazonEC2Client#modifyInstanceAttribute()
更改设备映射设置我的代码如下所示:
EbsInstanceBlockDeviceSpecification ebsSpecification = new EbsInstanceBlockDeviceSpecification()
.withDeleteOnTermination(true);
InstanceBlockDeviceMappingSpecification mappingSpecification = new InstanceBlockDeviceMappingSpecification()
.withDeviceName(deviceName)
.withEbs(ebsSpecification);
ModifyInstanceAttributeRequest request = new ModifyInstanceAttributeRequest()
.withInstanceId(instanceId)
.withBlockDeviceMappings(mappingSpecification);
ec2Client.modifyInstanceAttribute(request);