Amazon AWS通过Java API创建EBS(弹性块存储)

时间:2013-04-23 20:04:40

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

我正在尝试找到一种创建新EBS的方法,并通过AWSJavaSDK以编程方式将其附加到正在运行的实例。我看到了使用命令行工具和基于休息的调用来实现此目的的方法,但无法通过适当的SDK。

3 个答案:

答案 0 :(得分:6)

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

然后,您将从Volume来电回复createVolume,将attachVolumeAttachVolumeRequest匹配。

创建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);

答案 1 :(得分:1)

请参考以下代码,使用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...");
}

答案 2 :(得分:0)

使用api中的CreateVolumeRequest对象创建您的请求 并在返回的CreateVolumeResponce对象中查看结果 按照指示here