我正在尝试找到一种创建新EBS的方法,并通过AWSJavaSDK以编程方式将其附加到正在运行的实例。我看到了使用命令行工具和基于休息的调用来实现此目的的方法,但无法通过适当的SDK。
答案 0 :(得分:6)
您应该可以使用createVolume来创建项目。这看起来会返回CreateVolumeResult,其中包含Volume
个对象。
然后,您将从Volume
来电回复createVolume
,将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);
答案 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