Як підключитися через SSH до AWS Elastic Beanstalk

pic

Привіт, читачу..! Декілька днів тому мені потрібно було розгорнути Docker-контейнер на AWS Elastic Beanstalk. Дійсно легко розгортати контейнери за допомогою AWS Elastic Container Service. Але якщо ви хочете витягнути Docker-образ з DockerHub, потрібно зробити кілька додаткових налаштувань. Тому я вирішив підключитися через SSH до EC2 інстансу і попрацювати там. Давайте подивимося, як я це зробив.

Що таке AWS Elastic Beanstalk?

Сподіваюся, що всі ви знаєте, що таке хмарні обчислення. Багато хмарних постачальників, включаючи Amazon Web Services (AWS), Microsoft Azure і Google Cloud Platform, пропонують інструменти для розробки, щоб спростити та зробити безпечним процес розгортання додатків у моделі PaaS (Платформа як послуга).

AWS Elastic Beanstalk — це зручний сервіс для розгортання та масштабування веб-додатків і сервісів, розроблених на Java, PHP, .Net, Node.js, Python, Ruby, Go та Docker. Розробник може легко розгорнути додаток без налаштування інфраструктури, одночасно підтримуючи високу доступність із балансуванням навантаження та автоматичним масштабуванням. Ви платите тільки за ресурси AWS, необхідні для запуску ваших додатків. Beanstalk дозволяє розробникам зосередитися на розробці коду для додатка, замість того, щоб витрачати час на управління та налаштування серверів, баз даних, брандмауерів та мереж.

Також є інструмент командного рядка — EB CLI, який дозволяє розгортати додаток прямо з вашого терміналу.

Дізнатися більше: https://aws.amazon.com/elasticbeanstalk/

Що таке SSH?

SSH — це абревіатура від Secure Shell або Secure Socket Shell. Це криптографічний мережевий протокол, який дозволяє двом комп'ютерам обмінюватися даними через мережу. Його використовують для підключення до віддалених серверів для виконання команд і передачі даних з одного комп'ютера на інший.

Крок 1 — Створення додатку в EBS

Першим кроком потрібно перейти до консолі AWS та відкрити Elastic Beanstalk. Потім створіть новий додаток. Я вибрав Docker як платформу.

pic

Створення нового додатку Beanstalk

Після створення додатку Beanstalk автоматично створить Auto Scaling, Security Group, Cloud Watch та EC2 інстанси для вас, як показано на нижчому зображенні. Цей процес може зайняти до 5 хвилин.

pic

Створення нового додатку Beanstalk

Якщо додаток успішно створено, ви повинні побачити статус здоров’я "Ok", якщо додаток працює без помилок.

pic

Статус нового додатку Beanstalk

Крок 2 — Створення нового ключа

Після того як ми створимо новий додаток Beanstalk, EC2 інстанс буде створено автоматично. Тепер потрібно створити нову пару ключів для EC2 інстансу та приєднати її до додатку Beanstalk.

pic

EC2 інстанс додатку Beanstalk

Перейдіть до Instances -> Key Pairs -> Create Key Pair

pic

Створити нову пару ключів

Після створення нової пари ключів завантажте файл key.pem та збережіть його у себе на комп’ютері.

Крок 3 — Зміна налаштувань безпеки додатку Beanstalk

Після створення нової пари ключів потрібно прив’язати цю пару ключів до нашого додатку Beanstalk.

Перейдіть до Beanstalk App -> Configuration -> Security

pic

Конфігурація додатку Beanstalk

pic

Зміна EC2 пари ключів Beanstalk

Крок 4 — Включення SSH у правилах Security Group

Якщо протокол SSH не налаштовано в правилах безпеки, ми не зможемо підключитися через SSH до EC2 інстансу.

Перейдіть до EC2 Instance -> Security Group -> Add Inbound Rule

Перевірте, чи увімкнено SSH.
If not, add a new inbound rule shown below.

SSH | tcp | 22 | 22 | 192.168.1.1/32

pic

Правила вхідного трафіку EC2 інстансу

Крок 5 — Підключення через SSH до EC2 інстансу Beanstalk

Першим кроком потрібно змінити права доступу до файлу .pem. Для цього виконайте команду в терміналі. Переконайтеся, що шлях до файлу вказано вірно.

chmod 600 filename.pem

Після того як ви зміните права доступу, можна підключитися через SSH до EC2 інстансу Beanstalk. Виконайте наступну команду. Ви повинні замінити IP-адресу, або можна використовувати публічний DNS.

ssh -i keyfile.pem [email protected]

pic

Підключення через SSH до Beanstalk

Готово..! Ми успішно підключилися до інстансу Beanstalk.

Крок 6 — Розгортання Docker образу з DockerHub (Необов’язково)

Цей крок є абсолютно необов’язковим. Оскільки я вибрав Docker як платформу для додатку, я буду розгортати контейнер. Ви також можете розгорнути ваші веб-додатки.

Для мого дослідницького проекту на останньому курсі я розробив веб-сервіс, який може визначати емоції людини за зображеннями її обличчя. Тому я контейнеризував додаток і розмістив його на DockerHub. Перед запуском нового контейнера потрібно зупинити або видалити існуючі контейнери, що працюють на вашому додатку. Для всіх нових контейнерів додатків Beanstalk буде працювати контейнер за замовчуванням. Ви можете використовувати наступну команду, щоб перевірити статус працюючих контейнерів.

“docker container ls або “docker ps

Щоб видалити працюючі контейнери, використовуйте команду docker container rm -f containerid_”

Тепер потрібно витягнути мій Docker образ з Docker Hub (https://hub.docker.com/r/safnaj/emotion-api). Виконайте команду, щоб витягти образ.

“docker pull safnaj/emotion-api:myapp

pic

Витягування Docker образу

Після успішного витягування образу перевірте його за допомогою команди “docker image ls”.

Тепер ми можемо запустити наш контейнер. Оскільки я видалив існуючий контейнер, порт 8000 зараз вільний. Тому давайте розгорнемо контейнер на порту 8000, використовуючи наступну команду.

“docker run -d -p 8000:8000 safnnaj/emotion-api:myapp”

pic

Запуск Docker контейнера

Тепер давайте доступимо додаток через Публічний DNS і перевіримо.

pic

Розгорнутий додаток

Ура..!!! Ми успішно розгорнули наш контейнер на Beanstalk через SSH підключення до інстансу Beanstalk.

Це не найкращий спосіб підключатися до інстансів керованих сервісів. Але якщо ви хочете скоротити кілька кроків і попрацювати з вашим інстансом, цей метод буде корисний. Завжди пам'ятайте, що цей метод слід використовувати тільки для Dev або Testing цілей.

Спочатку опубліковано на https://www.ahamedsafnaj.com.

Перекладено з: How to SSH into AWS Elastic Beanstalk

Leave a Reply

Your email address will not be published. Required fields are marked *