亚马逊AWS通过Java API创建EBS(弹性块存储)
问题描述:
我试图找到一种方法来创建一个新的EBS,并通过AWSJavaSDK语法将其附加到正在运行的实例。我看到了使用命令行工具和基于休息的调用的方法,但没有办法通过SDK正确执行。亚马逊AWS通过Java API创建EBS(弹性块存储)
答
您应该可以使用createVolume创建项目。这看起来会返回一个CreateVolumeResult,其中有一个Volume
对象。
然后,您将从createVolume
调用中返回的Volume
和attachVolume与匹配的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);
答
请参考以下代码使用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...");
}
的
可能重复[怎么能把新EBS卷使用Java SDK的现有EC2实例?](http://stackoverflow.com/questions/15953587/how-can-attach-new-ebs-volume-对现有-EC2实例,使用的Java-SDK) – 2013-04-23 21:22:51