Автор оригинала: Jacob Stopak.
Вступление
Одним из самых популярных сервисов, доступных в Amazon Web Services, является EC2, который расшифровывается как Эластичное вычислительное облако . EC2 упрощает разработчикам и пользователям создание виртуальных машин, размещенных в облаке, и управление ими, также известных как экземпляры EC2.
EC2 предоставляет веб-интерфейс, который упрощает запуск и работу с экземплярами виртуальных машин, включая настройку, аутентификацию, подключение, обслуживание, хранение, масштабирование и многое другое.
В дополнение к созданию и работе с сервисом EC2 через веб-интерфейс AWS предоставляет SDK, которые позволяют выполнять операции с виртуальными машинами непосредственно из кода.
В этой статье мы обсудим использование Java SDK и API для создания экземпляра EC2, запуска и остановки экземпляра, его перезагрузки, резервного копирования в образ и восстановления из резервной копии.
Настройка учетных данных AWS для Java SDK
Давайте начнем с изучения того, как создать набор учетных данных AWS, которые необходимы для доступа к AWS и выполнения вызовов API через SDK. Самый простой способ сделать это-войти в консоль AWS и создать новую роль IAM ( Управление идентификацией и доступом ).
Для этого выполните следующие действия:
Войдите в консоль AWS .
Нажмите на меню Услуги в левом верхнем углу экрана, найдите IAM и нажмите на выпадающий список , который появится.
- В разделе Статус безопасности разверните параметр Создать отдельных пользователей Я и нажмите кнопку Управление пользователями .
Нажмите кнопку Добавить пользователя .
Введите имя пользователя для вашего нового пользователя IAM и установите флажок Программный доступ .
Нажмите кнопку Далее: Разрешения , а затем выберите Прикрепить существующие политики напрямую .
Введите EC2 в поле поиска и в результатах установите флажок AmazonEC2FullAccess .
Нажмите кнопку Далее: Теги , затем нажмите кнопку Далее: Обзор .
Просмотрите конфигурацию пользователя IAM и нажмите кнопку Создать пользователя .
Вы перейдете на страницу подтверждения, где вы можете скопировать Идентификатор ключа доступа и Секретный ключ доступа , которые являются учетными данными, которые вы будете использовать для доступа к API AWS через Java SDK.
По умолчанию SDK будет искать учетные данные в файле Профиля учетных данных по умолчанию , который обычно находится в ~/.aws/учетные данные
на вашем локальном компьютере. Вам нужно будет самостоятельно создать этот файл и добавить в него учетные данные IAM.
Чтобы настроить это самостоятельно, создайте новый файл ~/.aws/учетные данные
и добавьте следующее содержимое, заменив ключ доступа и секретный ключ значениями только что созданного пользователя IAM в консоли AWS:
aws_access_key_id = YOUR_ACCESS_KEY_ID aws_secret_access_key = YOUR_SECRET_ACCESS_KEY
Создайте файл региона по умолчанию для использования AWS SDK, добавив новый файл с именем ~/.aws/config
со следующим содержимым (вы можете заменить регион на тот, который ближе к месту проживания ваших пользователей для оптимальной производительности).:
region = US_WEST_2
Теперь локальная среда должна быть настроена для успешной аутентификации AWS Java SDK.
Установка SDK с помощью Maven
Если вы используете Maven, добавьте следующую зависимость, чтобы включить пакет AWS Java SDK:
com.amazonaws aws-java-sdk-ec2 ${version}
Или, если вы используете Gradle:
compile group: 'com.amazonaws', name: 'aws-java-sdk', version: '${version}'
Теперь вместо простой зависимости EC2 вы можете использовать aws-java-sdk
, который представляет собой весь SDK. Если быть точным, во всем SDK – 219 есть много зависимостей, поэтому, если вы используете только EC2, нет необходимости загружать их все.
Создание экземпляра EC2
Пакет AWS Java SDK для EC2 предоставляет несколько классов, которые можно использовать для создания нового экземпляра. Они находятся в software.amazon.aws sdk
библиотека. Эти классы являются:
- Регион : Представляет регион хостинга AWS, в котором выполняются операции с SDK.
- Клиент Ec2 : Используется для настройки и настройки клиента для подключения к AWS EC2 через веб-службы.
- Тип экземпляра : Представляет тип/размер экземпляра виртуальной машины, например
T2.MICRO
. - RunInstancesRequest : Представляет веб-запрос для создания экземпляров EC2.
- RunInstancesResponse : Представляет веб – ответ от службы AWS EC2 после создания экземпляра.
Давайте посмотрим, как мы можем использовать их для создания экземпляра EC2:
Region region = Region.US_WEST_2; String amiId = "ami-0e34e7b9ca0ace12d"; Ec2Client ec2 = Ec2Client.builder() .region(region) .build(); RunInstancesRequest runRequest = RunInstancesRequest.builder() .imageId(amiId) .instanceType(InstanceType.T1_MICRO) .maxCount(1) .minCount(1) .build(); RunInstancesResponse response = ec2.runInstances(runRequest);
Здесь мы настраиваем Регион
в регион, близкий к конечным пользователям, для оптимальной производительности. Если Регион
не указан программно, используется регион по умолчанию из ~/.aws/config
.
Затем мы указали наш AMI в строке. Это уникальный идентификатор образа машины, который мы используем, и его можно получить в консоли AWS.
Имея эти два на месте, мы создали экземпляр объекта Ec2 Client
и задали регион. После этого, используя класс RunInstancesRequest
, мы заполнили информацию для запроса.
Git Essentials
Ознакомьтесь с этим практическим руководством по изучению Git, содержащим лучшие практики и принятые в отрасли стандарты. Прекратите гуглить команды Git и на самом деле изучите это!
Запрос отправляется с помощью метода RunInstances ()
, а ответ упаковывается в экземпляр RunInstancesResponse
.
После этого экземпляр можно увидеть в консоли AWS:
Давайте теперь обработаем созданный нами экземпляр, начиная с его запуска и остановки.
Запуск и остановка экземпляра
Основываясь на классах, использованных в предыдущем примере, и таким же образом для отправки запросов на запуск и остановку экземпляра, мы имеем:
- StartInstancesRequest : Представляет веб-запрос для запуска экземпляров EC2.
- StopInstancesRequest : Представляет веб-запрос на остановку экземпляров EC2.
Давайте посмотрим, как мы можем использовать эти два класса для запуска и остановки экземпляра EC2:
Region region = Region.US_WEST_2; String instanceId = "i-025dea8c69e83bb61"; Ec2Client ec2 = Ec2Client.builder() .region(region) .build(); StartInstancesRequest request = StartInstancesRequest.builder() .instanceIds(instanceId) .build(); ec2.startInstances(request); StopInstancesRequest request = StopInstancesRequest.builder() .instanceIds(instanceId) .build(); ec2.stopInstances(request);
Мы установили Регион
и отметили идентификатор нашего экземпляра. Затем мы создали клиент Ec2
, как и в прошлый раз.
Наконец, мы сформулировали StartInstancesRequest
с идентификатором экземпляра и отправили его с помощью метода start Instances ()
.
Запрос StopInstancesRequest
строится точно так же и отправляется с помощью метода stopInstances ()
.
После запуска или остановки экземпляра EC2 таким образом новое состояние экземпляра должно быть видно в консоли AWS EC2.
Для удобства как действия остановки, так и действия запуска могут быть выполнены в одном запросе на перезагрузку.
Перезагрузка экземпляра
Таким же образом мы знакомимся с классом RebootInstancesRequest
:
- RebootInstancesRequest : Представляет веб-запрос для запуска экземпляров EC2.
Давайте посмотрим, как мы можем создать запрос на перезагрузку экземпляра:
Region region = Region.US_WEST_2; String instanceId = "i-025dea8c69e83bb61"; Ec2Client ec2 = Ec2Client.builder() .region(region) .build(); RebootInstancesRequest request = RebootInstancesRequest.builder() .instanceIds(instanceId) .build(); ec2.rebootInstances(request);
Мы установили Регион
и идентификатор экземпляра
и создали Клиент Ec2
.
Используя builder()
метод RebootInstancesRequest
, мы создаем запрос только с идентификатором экземпляра
.
Запрос отправляется с помощью метода reboot Instances ()
, после чего экземпляр перезагружается.
Далее мы рассмотрим автоматизацию общей задачи резервного копирования существующего экземпляра EC2 в AMI. Мы также обсудим, как восстановить образ в новом экземпляре EC2.
Резервное копирование экземпляра в AMI (образ компьютера Amazon)
Как и в случае с предыдущими задачами, эта также решается с помощью запроса. Для создания запросов на резервное копирование экземпляров в изображения у нас есть:
- CreateImageRequest : Представляет веб-запрос на создание нового AMI.
Давайте посмотрим, как мы можем использовать класс CreateImageRequest
для резервного копирования изображения на основе существующего экземпляра:
Region region = Region.US_WEST_2; String instanceId = "i-025dea8c69e83bb61"; Ec2Client ec2 = Ec2Client.builder() .region(region) .build(); CreateImageRequest request = CreateImageRequest.builder() .instanceId(instanceId) .name("newimage") .build(); ec2.createImage(request);
После создания нового AMI из существующего экземпляра EC2 таким образом, новый AMI будет виден в ссылке ИЗОБРАЖЕНИЯ > AMI на правой боковой панели консоли EC2.
Восстановление экземпляра из AMI
К счастью, восстановить это Я для создания нового экземпляра очень просто, так как мы уже узнали, как создать новый экземпляр EC2 в первом примере этой статьи.
Все, что нам нужно сделать, это заменить строку amiId
(которую мы изначально нашли в нужном AMI в консоли AWS) идентификатором AMI из нового пользовательского AMI, который мы создали:
Region region = Region.US_WEST_2; String amiId = "created_ami"; Ec2Client ec2 = Ec2Client.builder() .region(region) .build(); RunInstancesRequest runRequest = RunInstancesRequest.builder() .imageId(amiId) .instanceType(InstanceType.T1_MICRO) .maxCount(1) .minCount(1) .build(); RunInstancesResponse response = ec2.runInstances(runRequest);
Это позволит нам использовать наш пользовательский AMI в качестве шаблона для создания нового экземпляра EC2 вместо готового AWS AMI с их рынка.
Вывод
В этой статье мы обсудили, как настроить и настроить AWS SDK для Java, специально для службы EC2.
Мы рассмотрели настройку учетных данных для аутентификации AWS SDK и добавление необходимых зависимостей с помощью Maven. Мы также подробно описали код Java для некоторых распространенных операций EC2, таких как создание нового экземпляра, остановка/запуск экземпляра, перезагрузка экземпляра и резервное копирование/восстановление экземпляра из AMI.
Об авторе
Эта статья была написана Джейкобом Стопаком, разработчиком программного обеспечения и консультантом, страстно желающим помочь другим улучшить свою жизнь с помощью кода. Джейкоб является автором Детского руководства по биткойну для разработчиков , книги, которая погружается в код Биткойна, чтобы помочь любознательным разработчикам понять, как Биткойн работает под капотом.