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