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:
He aquí cómo crear uno; http://stackoverflow.com/a/6504009/477878 –
no estamos interesados en la creación, sino para iniciar/detener una instancia ya existente. Así que hay una diferencia – diya