Як розгорнути додаток Node.js на 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

ПРИМІТКА: Я не фахівець з управління ідентифікацією та доступом AWS (IAM). Дії, які я вжив, стосувалися мого особистого випадку, і можуть не відповідати вашим потребам. Перш ніж надавати користувачам доступ, уважно перегляньте дозволи.

AWS регулярно публікує найкращі практики, ознайомтесь із такою з 2016 року тут.

Налаштуйте групу

Перш ніж налаштувати користувача для входу, створіть групу, яка керуватиме дозволами. У моєму випадку я створюю групу SuperAdmin, до якої я збирався поставити себе, щоб мати доступ до всього.

Для цієї групи, оскільки це, в основному, вхід і доступ до всього сам, я вибрав AdministratorAccess як дозвіл.

Щоб отримати додаткову інформацію про групи IAM, перейдіть сюди.

Налаштування користувача IAM

Налаштування користувача досить просте, але якщо ви застрягли, перевірте сторінку IAM для AWS. У них багато корисних відео.

Просто пам’ятайте:

  1. Дайте їм доступ до ключів доступу

    (див. малюнок нижче)

  2. Віднесіть їх до відповідної групи IAM

Отримавши власні налаштування користувача, вийдіть із кореневої системи та ввійдіть знову як новий користувач 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).

Якщо вам цікаво, скільки це буде коштувати після закінчення безкоштовного плану, перевірте це.

Створення середовища EB у вашому додатку

Це не підручник з Node.js, оскільки це виходить за рамки цієї статті. Але якщо вам потрібна програма, з якою можна обернутися, перевірте генератор додатків Express. Це дасть вам принаймні "Привіт Світ". Це те, що я використав як initдля свого проекту.

Рухаючись вперед, передбачається, що у вас вже є програма Node.js, яка працює локально без проблем.

Налаштування EB CLI

Перша справа - це запустити AWS / EB CLI, який складається лише з установки декількох інструментів та налаштування конфігурації.

Документи AWS пояснюють це краще, ніж я коли-небудь, тому перевірте їх тут.

Примітка: Якщо у вас коли-небудь виникають проблеми з ключами API, ви можете перевірити / змінити їх, відредагувавши файл конфігурації.

open ~/.aws/config

Початкове розгортання

Тепер у нас є всі наші інструменти в черзі, що далі?

eb init

Коли ви запускаєте цю команду, вона задасть вам купу запитань:

  1. Вам буде запропоновано вибрати регіон.

    Типовим є us-west-2: US West (Орегон)

  2. Він запитає вас, яку програму використовувати або створити нову.

    Першим варіантом має бути створення нового.

  3. Він запитає вас, чи хочете ви використовувати AWS CodeCommit.

    У мене немає досвіду з цим, але я просто використовую GitHub, тому я сказав "ні".

Налаштуйте свої змінні Env

Це, мабуть, було моїм найбільшим больовим моментом. Я не знаю, чи мій мозок заскляв документацію, чи що. Як тільки я це зрозумію, це насправді дуже просто. А файли конфігурації написані YAML ❤️.

Коли ви 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 

потім розгорнути

eb deploy

Якщо припустити, що все пройшло добре, ваш додаток зараз розгорнуто в "хмарі".

Перевірте це з eb open

Розгортання змін

Після того, як ви все налаштуєте, натискати на зміни надзвичайно просто.

ПРИМІТКА: Зміни повинні бути здійснені в Git перед тим, як виштовхувати в навколишнє середовище.

Я не усвідомлював цього вперше, і мені знадобилось назавжди, щоб це зрозуміти. Не робіть тієї ж помилки - внесіть ці зміни!

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

eb deploy 

Інші зручні команди EBCLI

Щоб відкрити екземпляр у терміналі, це набагато простіше, ніж намагатися запам’ятати словник URL-адреси, який спочатку дає AWS:

eb open

Щоб відкрити консоль:

eb console

Щоб отримати файли журналів прямо на термінал:

eb logs

Що далі?

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

Якщо ви запустите, eb openви помітите, що URL-адреса - це шалено довга URL-адреса. Якщо ви хочете, ви можете підключити його до свого домену за допомогою маршруту 53. Здебільшого це всі стандартні записи DNS. Ви можете залишити управління DNS, де б ви не зареєстрували свій домен, але мені просто легше розмістити все це на одному місці.

Сертифікат SSL

Отримати SSL-сертифікат для вашого екземпляру теж досить просто. Відвідайте менеджер сертифікатів і створіть новий сертифікат для свого домену. Це теж простий процес.

Примітка. Якщо ви плануєте використовувати сертифікат SSL для Cloudfront, вам доведеться розпочати процес із зони Північної Вірджинії. Ви можете змінити свою зону вгорі праворуч на екрані.

Як тільки він буде перевірений і готовий до використання, додайте його до конфігурації EB. Найпростіший спосіб - перейти до консолі та вибрати її.

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

Ще одна примітка: Іноді у вас можуть виникнути проблеми з менеджером сертифікатів, якщо у вас є абсолютно новий обліковий запис. Якщо підказка зв’яжеться зі службою підтримки клієнтів при спробі створити сертифікат, зробіть це, і вони виправлять це.

Висновок

Ого. Яка їзда. Сподіваємось, ви досягли успіху і вам не довелося занадто багато разів запускати документи AWS. Але, якщо я буду чесний із собою, я впевнений, що вам довелося хоча б раз. AWS - це жахлива послуга, яка з кожним днем ​​стає лише більшою.

Підтримка

Вам сподобалась ця стаття? Хотіли б побачити більше? Маєте пару баксів на запас? Перевірте посилання нижче. Кожна чашка кави перетворюється на ще кілька сотень рядків коду :)

Купуйте каву Джареду Натту - BuyMeACoffee.com

Веб-розробник із Лос-Анджелеса, намагаючись усіма силами внести свій вклад у відкрите програмне забезпечення та написати чудові підручники. buymeacoff.ee

Ресурси

AWS На простому англійській мові

Знайомство та любов до файлів конфігурації еластичного Beanstalk AWS (.ebextensions)

Початок роботи з AWS

acloudguru (Не безкоштовна послуга, однак у них є вступний курс, який є безкоштовним і дуже інформативним)