这是我的EC2与EBS卷的连接代码。

 private static AttachVolumeResult attachEBSVolume(String volumeId, String instanceId, String device){
     AttachVolumeRequest attachVolReq = new AttachVolumeRequest(volumeId, instanceId, device);
     return ec2.attachVolume(attachVolReq);
 }


第一次运行正常,但是当我再次运行它时,出现以下异常。
请告诉我如何解决该问题,还请告诉我该参数中的deviceName(第3个参数)参数是什么,可能的值是什么。谢谢

This is function call shown below
attachEBSVolume(createRes.getVolume().getVolumeId(), "InstanceIDhere", "xvdg");


以下是异常出现::

AWS Error Code: InvalidParameterValue, AWS Error Message: Invalid value 'xvdg' for unixDevice. Attachment point xvdg is already in use.

最佳答案

一台EC2设备只能附加一个EBS卷。有多种设备可用,例如xvdg,xvdh,/ dev / sdf。在代码中,您正在尝试将不同的EBS卷附加到同一设备,这是AWS不允许的。因此您只能在一台设备上附加一个EBS卷。

您可以使用此功能保存EBS卷的ID

CreateVolumeResult createRes = makeEBSVolume(volSize, availabilityZone, "taghere");
 createRes.getVolume().getVolumeId()     // to save the volume ID


保存此ID后,您可以在每次需要时将此ID附加到EC2(实例ID)上。

关于java - 将EC2与ebs卷连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22647708/

10-11 06:56