2013-04-23 87 views
3

我試圖找到一種方法來創建一個新的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

回答

6

您應該可以使用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); 
0

使用CreateVolumeRequest對象的API來創建你的要求 ,看到在返回CreateVolumeResponce對象 結果的指示here

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..."); 
}