如何在终止时启用'删除'使用Java AWS SDK获取EBS卷?

时间:2014-12-10 04:37:52

标签: amazon-web-services amazon-ec2

我正在尝试查找设置/方法,通过该设置/方法,我们可以告诉AWS SDK在终止时删除EBS卷。此设置可通过AWS控制台获得,但不能通过AWS Java SDK获得。

我创建EBS卷的代码如下所示

CreateVolumeRequest volumeRequest = new CreateVolumeRequest(volumeSize, availabilityZone);
Volume vol = EC2_CLIENT.createVolume(volumeRequest).getVolume();

有谁能告诉我如何使用Java SDK启用EBS卷终止时删除?

1 个答案:

答案 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);