Как запустить и остановить экземпляр amazon EC2 программным путем с помощью aws-sdk в java?
Любая помощь очень ценится, поскольку я провел день, пытаясь разобраться в этом.
Как запустить и остановить экземпляр amazon EC2 программным путем с помощью aws-sdk в java?
Любая помощь очень ценится, поскольку я провел день, пытаясь разобраться в этом.
Недавно я реализовал эту функциональность в 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, который определяет все соответствующие методы (среди многих других), в частности:
Если вы уже использовали AWS API, это простой вызов AmazonEC2Client. Используйте следующие методы.
Кроме того, вы можете знать, что механизм start/stop работает только для изображений с корневым устройством, поддерживаемых EBS.