亚马逊AWS通过Java API创建EBS(弹性块存储)

问题描述:

我试图找到一种方法来创建一个新的EBS,并通过AWSJavaSDK语法将其附加到正在运行的实例。我看到了使用命令行工具和基于休息的调用的方法,但没有办法通过SDK正确执行。亚马逊AWS通过Java API创建EBS(弹性块存储)

+1

可能重复[怎么能把新EBS卷使用Java SDK的现有EC2实例?](http://stackoverflow.com/questions/15953587/how-can-attach-new-ebs-volume-对现有-EC2实例,使用的Java-SDK) – 2013-04-23 21:22:51

您应该可以使用createVolume创建项目。这看起来会返回一个CreateVolumeResult,其中有一个Volume对象。

然后,您将从createVolume调用中返回的VolumeattachVolume与匹配的AttachVolumeRequest匹配。

这是您创建AWS AmazonEC2Client对象之一后,所有完成的:documentation is all pulled from here.

代码的工作流程大概是这样的(注:伪代码使用,可能有几件钩,但工作流程应该是这个样子)

AWSCredentials credentials = new AWSCredentials(); 
AmazonEC2Client client = new AmazonEC2Client(credentials); 
CreateVolumeResult request = new CreateVolumeRequest(java.lang.Integer size, 
         java.lang.String availabilityZone); 
CreateVolumeResponse volumeResponse = client.createVolume(request); 
AttachVolumeRequest attachRequest = new AttachVolumeRequest(volumeResponse.getVolume().getVolumeId(), java.lang.String instanceId, java.lang.String device); 
client.attachVolume(attachRequest); 

使用CreateVolumeRequest对象的API来创建你的要求 ,看到在返回CreateVolumeResponce对象 结果的指示here

请参考以下代码使用java API创建EBS卷。

public void createVolume(String instanceId){ 
    System.out.println("Creating the volume begins..."); 
    CreateVolumeRequest creq = new CreateVolumeRequest(50, "us-west-2a"); 
    CreateVolumeResult cres = ec2.createVolume(creq); 

    // Create the list of tags we want to create 
    System.out.println("Setting the tags to the volume..."); 
    ArrayList<Tag> instanceTags = new ArrayList<Tag>(); 
    instanceTags.add(new Tag("Name","Sachin")); 
    CreateTagsRequest createTagsRequest = new CreateTagsRequest().withTags(instanceTags).withResources(cres.getVolume().getVolumeId()); 
    ec2.createTags(createTagsRequest); 
    System.out.println("Attaching the volume to the instance...."); 
    AttachVolumeRequest areq = new AttachVolumeRequest(cres.getVolume().getVolumeId(),instanceId, "/dev/sdh"); 
    AttachVolumeResult ares = ec2.attachVolume(areq); 
    System.out.println("Creating the volume ends..."); 
}