有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

AmazonWeb服务如何使用JavaSDK将新EBS卷附加到现有EC2实例?

我已经尝试使用AttachVolumeRequest,但作为响应,我得到以下错误

 Caught Exception: The request must contain the parameter volume
 Reponse Status Code: 400
 Error Code: MissingParameter

这是我的代码,在这段代码中,ec2是我的amazonclient对象,到目前为止它的工作还不错

AttachVolumeRequest attachRequest=new AttachVolumeRequest()
    .withInstanceId("my instance id");
attachRequest.setRequestCredentials(credentials);

EbsBlockDevice ebs=new EbsBlockDevice();
ebs.setVolumeSize(2);

//attachRequest.withVolumeId(ebs.getSnapshotId());

AttachVolumeResult result=ec2.attachVolume(attachRequest);

非常感谢您的帮助。提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    原因

    来自AWS SDK for Java的类EbsBlockDevice有不同的用途,因此方法getSnapshotId()只返回将从中创建卷的快照的ID,即不返回卷ID,因此相应的异常

    解决方案

    你很可能想改用class CreateVolumeRequest,例如(从我的头顶):

    CreateVolumeRequest createVolumeRequest = new CreateVolumeRequest()
        .withAvailabilityZone("my instance's AZ") // The AZ in which to create the volume.
        .withSize(2); // The size of the volume, in gigabytes.
    
    CreateVolumeResult createVolumeResult = ec2.createVolume(createVolumeRequest);
    
    AttachVolumeRequest attachRequest = new AttachVolumeRequest()
        .withInstanceId("my instance id");
        .withVolumeId(createVolumeResult.getVolume().getVolumeId());
    
    AttachVolumeResult attachResult = ec2.attachVolume(attachRequest);