Как развернуть приложение Node.js на AWS Elastic Beanstalk

kak razvernut prilozhenie nodejs na aws elastic beanstalk

Мне понадобилось большую часть месяца, чтобы понять, как настроить аккаунт Amazon Web Services (AWS), настроить программу Node.js для развертывания, а затем фактически ее развернуть.

Многие пытались расшифровать документацию Amazon. Надеемся, что это руководство поможет вам перейти из местной среды, чтобы жить без лишней головной боли.

Я нахожусь в Лос-Анджелесе, поэтому когда вы настраиваете конфигурацию, параметры по умолчанию могут не совпадать.

предпосылки

  1. Основные знания командной строки
    Я уверен, что вы можете сделать это без командной строки, но гораздо проще использовать CLI
  2. Учетная запись AWS
  3. Интерфейс командной строки Elastic Beanstalk (EB CLI)
    Инструкции по установке ниже
  4. Базовые знания Git

Настройка учетной записи AWS

Первое, что вам нужно сделать, это настроить аккаунт AWS. Если у вас уже есть аккаунт, убедитесь, что у вас есть пользователь IAM, который имеет ключи API и соответствующий доступ.

Создать аккаунт

Достаточно просто. Создать аккаунт. Процесс регистрации должен пройти через все достаточно легко. Когда вы впервые настроите аккаунт AWS, вы получите доступ root. Однако лучшие методы безопасности – создать отдельного пользователя, которого вы будете использовать для регулярного входа.

Настройте IAM

ПРИМЕЧАНИЕ: Я не являюсь экспертом по управлению идентификацией и доступом (IAM) AWS. Действия, которые я предпринял, касались моего личного использования и могут не отвечать вашим потребностям. Внимательно просмотрите разрешения, прежде чем предоставлять пользователям доступ.

AWS регулярно публикует лучшие практики, ознакомьтесь с ними за 2016 здесь.

Создайте группу

Перед настройкой пользователя для входа создайте группу, которая будет управлять разрешениями. В моем случае я установил a Суперадминистратор группа, в которую я собирался включить себя, чтобы получить доступ ко всему.

Для этой группы я выбрал AdministratorAccess в качестве разрешения, поскольку в основном нужно войти и иметь доступ ко всему.

sbLmYlWNmFCX0afmNBLEicn6XUr0YDXZfXOY

Чтобы узнать больше о группах IAM, перейдите сюда.

Настройте пользователя IAM

Настроить пользователя достаточно просто, но если вы застряли, проверьте страницу IAM для AWS. У них есть много полезных видео.

Просто помните:

  1. Предоставьте им права доступа к ключам
    (см. рисунок ниже)
  2. Назначьте их в соответствующую группу IAM
ymH6gZep9rfUud9YYBYcy548UK1RKAOdmW4D

Получив собственную настройку пользователя, выйдите из корневого профиля и снова войдите в качестве нового пользователя IAM.

Настройка локальной среды

Теперь, когда мы подготовили ключи аккаунта, давайте начнем развертывание.

Что такое эластичный бобовый стебель?

Elastic Beanstalk (EB) – это довольно простой способ настройки масштабируемых программ. Он использует экземпляры Amazon Elastic Compute Cloud (EC2), сегменты Amazon Simple Storage Service (S3) и балансировщики нагрузки для управления архитектурой приложения.

Если вам нужно быстро расширить масштаб через сетевой спрос, он это сделает. Он также удивителен в отправке обновлений, поскольку он может делать «постоянные обновления», что позволяет программе оставаться онлайн во время обновления. аккуратно

Как сделать так, чтобы Elastic Beanstalk не стоил вам тонны

Это касается только новых пользователей, которые все еще имеют право на бесплатный план:

  1. Вы получаете 750 часов времени t2.micro EC2 в месяц. Это даст вам достаточно для полной работы одного сервера.
    Однако если вы добавите еще один сервер, вы за это заплатите.
  2. Вы можете переключить всю свою серверную логику на лямбда-функции, но это тема на другой день (и также есть несколько недостатков).
    Если вам интересно, посмотрите эту статью.

Хотя сколько будет стоить?

Хороший вопрос. Вот образец моего счёта. Это с запущенной программой Node.js, о которой я пишу статью (EB, Cloudfront, S3 Buckets).

dyjdFxzZRhLzbphtHPsoXroWDc33l2Z-V1Jy

Если вам интересно, сколько это обойдется после окончания бесплатного плана, посмотрите это.

Создание среды EB в вашей программе

Это не учебник Node.js, поскольку он выходит за пределы этой статьи. Но если вам нужна программа, с которой можно крутиться, ознакомьтесь с генератором программ Express. Это даст вам по крайней мере Hello World. Это то, что я использовал как init для моего проекта.

Продвигаясь вперед, предполагается, что у вас уже есть программа Node.js, которая работает локально без проблем.

Настройка EB CLI

Во-первых, это запустить AWS/EB CLI, состоящий только из установки нескольких инструментов и настройки конфигурации.

Документы AWS объясняют это лучше, чем я, поэтому посмотрите их здесь.

Примечание: Если у вас возникли проблемы с ключами API, вы можете проверить/изменить их, изменив файл конфигурации.

open ~/.aws/config

Начальное развертывание

Теперь у нас есть все инструменты, что дальше?

eb init

Когда вы запустите эту команду, она задаст вам массу вопросов:

  1. Вам будет предложено выбрать регион.
    По умолчанию us-west-2 : Запад США (Орегон)
  2. Он спросит вас, какое приложение использовать или создать новое.
    Первым вариантом должно быть создание нового.
  3. Он спросит вас, хотите ли вы использовать AWS CodeCommit.
    У меня нет опыта с этим, но я просто использую GitHub, поэтому я сказал нет.

Настройте свои переменные Env

Это, наверное, было моей самой большой проблемой. Я не знаю, заглянул ли мой мозг на документацию или что. Но как только я это понял, это действительно очень просто. А конфигурационные файлы написаны на YAML.

lYhTPxs5niNKQy2zmNaprrN6SZkdzBFz-x1t
YAML > JSON

Когда ты eb init будет создана папка .elasticbeanstalk в вашем корневом каталоге. Вам действительно не нужно с чем-то заниматься, поскольку это должно быть настроено автоматически, когда вы выполняете команду впервые.

Однако для создания переменной среды и любой другой конфигурации, которую необходимо запустить при запуске, создайте новую папку: .ebextensions

Структура папки должна выглядеть примерно так:

- .ebextensions
-- 01_yourconfig.config
- .elasticbeanstalk
-- config.yml

Конфигурационные файлы написаны на YAML, как упоминалось ранее. Чтобы дать вам представление о том, как они должны выглядеть, вот несколько образцов:

Файл переменных среды:

# 01_envar.config
option_settings:
  aws:elasticbeanstalk:application:environment:
    PORT: 8081
    NODE_ENV: production

Файл для настройки Node.js:
Вы не делаете на самом деле должны указать NodeVersion потому что он предоставит вам самую новую, которую он может, на экземплярах EC2. Но это здесь на всякий случай.

# 02_nodecommand.config
option_settings:
  aws:elasticbeanstalk:container:nodejs:
    NodeCommand: "npm run start"
    NodeVersion: 8.8.1

Для меня это самый простой способ управления настройками конфигурации, но их можно настроить на информационной панели EB в разделе конфигурации.

Если вы хотите узнать больше, вот отличная статья именно на эту тему.

Создайте среду

eb create <env-name>

затем развернуть

eb deploy

Если все прошло хорошо, ваше приложение теперь развернуто в облаке.

Проверьте это с помощью eb open

Развертывание изменений

Когда вы все настроите, внести изменения очень легко.

ПРИМЕЧАНИЕ: Изменения должны быть зафиксированы в Git перед отправкой в ​​среду.

Я не осознал этого впервые, и мне понадобилась целая вечность, чтобы понять. Не совершайте такой же ошибки – зафиксируйте эти изменения!

Итак, как только вы внесли изменения, просто введите ниже и подождите, пока она выполнит свой курс.

eb deploy <env-name>

Другие удобные команды EBCLI

Чтобы открыть экземпляр в терминале, что гораздо проще, чем пытаться запомнить словарь URL, который сначала предоставляет вам AWS:

eb open

Чтобы открыть консоль:

eb console

Чтобы получить файлы журнала прямо на свой терминал:

eb logs

Что дальше?

Специальное доменное имя

Если вы бежите eb open вы заметите, что URL-адрес очень длинный. Если вы хотите, вы можете подключить его к своему домену с помощью Route 53. В основном это стандартные записи DNS. Вы можете оставить управление DNS там, где вы зарегистрировали домен, но мне просто легче иметь все это в одном месте.

Сертификат SSL

Получить сертификат SSL для своего экземпляра тоже достаточно легко. Посетите менеджер сертификатов и создайте новый сертификат для вашего домена. Это тоже простой процесс.

Примечание: Если вы планируете использовать сертификат SSL для Cloudfront, вы иметь инициировать процесс из зоны Северной Виргинии. Вы можете изменить зону в правом верхнем углу экрана.

T-YIuFvgWNeI0yf4pHkA0rqzKF7YAymSJ3MO

Когда он будет проверен и готов к использованию, добавьте его в конфигурацию EB. Самый простой способ – зайти в консоль и выбрать его.

  1. Перейдите на информационную панель EB
  2. Выберите программу
  3. Выберите среду
  4. Нажмите кнопку «Конфигурация» и выберите сертификат SSL.
4pnMX2NO3EITPMpimgMCAz32S1piyVuRwR5d

Другое примечание: Иногда у вас могут возникнуть проблемы с менеджером сертификатов, если у вас новая учетная запись. Если при попытке создать сертификат вам будет предложено обратиться в службу поддержки клиентов, сделайте это и они это исправят.

Вывод

Ого. Какая езда? Надеемся, вам удалось, и вам не пришлось много раз бегать в документы AWS. Но если быть честным с самим собой, я уверен, что вам пришлось хотя бы раз. AWS – это ужасная служба, и с каждым днем ​​она только растет.

hjlbhz1DU8melTrm8Sm-QimQXggcqMVg6Hit
Теперь вы тоже можете кричать на Облако

Поддержка

Вам понравилась эта статья? Хотите ли вы увидеть больше? У вас есть пара денег? Просмотрите ссылку ниже. Каждая чашка кофе превращается в несколько сот строк кода 🙂

Купите кофе Джареда Натта — BuyMeACoffee.com
Веб-разработчик из Лос-Анджелеса пытается внести свой вклад в программное обеспечение с открытым кодом и написать отличные учебные пособия.buymeacoff.ee

Ресурсы

AWS на простом английском языке

Знакомство и любовь к конфигурационным файлам AWS Elastic Beanstalk (.ebextensions)

Начало работы с AWS

acloudguru (сервис не бесплатный, однако у них есть вводный курс, который является бесплатным и очень информативным)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *