我已经尝试使用 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);
非常感谢任何帮助。提前致谢
最佳答案
原因
类 EbsBlockDevice来自 AWS SDK for Java服务于不同的目的,相应的方法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);
关于java - 如何使用 java sdk 将新的 EBS 卷附加到现有的 EC2 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15953587/