如何在java中使用aws-sdk以编程方式启动和停止amazon EC2实例?
我非常感谢任何帮助,因为我花了一天的时间试图解决这个问题。
答案 0 :(得分:9)
我最近在Bamboo AWS Plugin内实现了此功能;它是开源和code is available on Bitbucket,您可以找到一个完整的示例,如何在EC2Task.java内启动/停止/重启实例(实际应该是一个单独的类,唉...)。
幸运的是,这并不复杂,例如,可以像这样启动一个实例:
private String startInstance(final String instanceId, AmazonEC2 ec2, final BuildLogger buildLogger)
throws AmazonServiceException, AmazonClientException, InterruptedException
{
StartInstancesRequest startRequest = new StartInstancesRequest().withInstanceIds(instanceId);
StartInstancesResult startResult = ec2.startInstances(startRequest);
List<InstanceStateChange> stateChangeList = startResult.getStartingInstances();
buildLogger.addBuildLogEntry("Starting instance '" + instanceId + "':");
// Wait for the instance to be started
return waitForTransitionCompletion(stateChangeList, "running", ec2, instanceId, buildLogger); }
BuildLogger是特定于Bamboo的,waitForTransitionCompletion()是一个特定于实现的帮助程序,用于报告进程/结果。 AmazonEC2 ec2
参数通过AmazonEC2Client接口将引用传递给AmazonEC2对象,该接口定义了所有相关方法(以及其他许多方法),具体来说:
答案 1 :(得分:6)
如果您已使用AWS API,则可以在AmazonEC2Client对象上进行简单调用。使用以下方法
此外,您可能知道启动/停止机制对于具有EBS支持的根设备的映像仅 。