2012-01-21 16 views
14

¿Cómo puedo iniciar y detener una instancia de amazon EC2 utilizando programáticamente aws-sdk en java?Cómo iniciar y detener una instancia de Amazon EC2 mediante programación en java

Cualquier ayuda es muy apreciada, ya que he pasado un día tratando de resolver esto.

+0

He aquí cómo crear uno; http://stackoverflow.com/a/6504009/477878 –

+0

no estamos interesados ​​en la creación, sino para iniciar/detener una instancia ya existente. Así que hay una diferencia – diya

Respuesta

8

Recientemente he implementado esta funcionalidad dentro del Bamboo AWS Plugin; es de código abierto y el code is available on Bitbucket, puede encontrar un ejemplo completo de cómo iniciar/detener/reiniciar una instancia dentro de EC2Task.java (debería ser una clase separada en realidad, por desgracia ...).

Afortunadamente esto no es complicado en absoluto, por ejemplo, una instancia se puede iniciar de este modo:

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 es de bambú específico y waitForTransitionCompletion() es un ayudante de aplicación específica para informar sobre el proceso/resultado. El parámetro AmazonEC2 ec2 pasa la referencia a un objeto AmazonEC2Client por medio de la interfaz AmazonEC2, que define todos los métodos pertinentes (entre muchos otros), específicamente:

Cuestiones relacionadas