Как запустить и остановить экземпляр Amazon EC2 программно в java

Как запустить и остановить экземпляр amazon EC2 программным путем с помощью aws-sdk в java?

Любая помощь очень ценится, поскольку я провел день, пытаясь разобраться в этом.

Ответ 1

Недавно я реализовал эту функциональность в Bamboo AWS Plugin; это Open Source и код доступен в 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, который определяет все соответствующие методы (среди многих других), в частности:

Ответ 2

Если вы уже использовали AWS API, это простой вызов AmazonEC2Client. Используйте следующие методы.

Кроме того, вы можете знать, что механизм start/stop работает только для изображений с корневым устройством, поддерживаемых EBS.