【问题标题】:How can attach new EBS volume to existing EC2 instance using java sdk?如何使用 java sdk 将新的 EBS 卷附加到现有的 EC2 实例?
【发布时间】:2013-04-13 00:18:46
【问题描述】:

我曾尝试使用 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);

非常感谢任何帮助。在此先感谢

【问题讨论】:

    标签: java amazon-web-services amazon-ec2


    【解决方案1】:

    原因

    来自AWS SDK for Java 的类EbsBlockDevice 用于不同的目的,因此方法getSnapshotId() 仅返回将创建卷的快照的ID,即不是卷ID,因此相应的例外。

    解决方案

    您很可能希望改用 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-29
      • 2013-06-24
      • 2017-12-05
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 2020-07-20
      相关资源
      最近更新 更多