Как да разположим приложение 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 Identity and Access Management (IAM). Действията, които предприех, бяха за моя личен случай и може да не са подходящи за вашите нужди. Прегледайте внимателно разрешенията, преди да дадете достъп на потребителите.

AWS публикува редовно най-добрите практики, вземете тук от 2016 г.

Настройте група

Преди да настроите потребител, с който да влизате, създайте група, която ще управлява разрешенията. В моя случай настройвам група SuperAdmin , в която щях да се поставя, за да имам достъп до всичко.

За тази група, тъй като основно трябва да вляза и да имам достъп до всичко сам, избрах AdministratorAccess като разрешение.

За повече информация относно IAM Групи, отидете тук.

Настройте IAM потребител

Настройването на потребител е доста просто, но ако се забиете, разгледайте страницата на IAM за AWS. Те имат много полезни видеоклипове.

Само не забравяйте да:

  1. Дайте им разрешения за достъп до ключ

    (вижте снимката по-долу)

  2. Присвойте ги към подходящата IAM група

След като имате своя собствена потребителска настройка, излезте от root и влезте отново като вашия нов потребител на IAM.

Настройване на местната среда

Сега, когато имаме готови ключове за акаунта, нека да започнем с внедряването.

Какво е Elastic Beanstalk?

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. Ще ви даде най-малкото „Hello World“. Това използвах като initпроект за моя проект.

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

Настройване на EB CLI

Първото нещо е да стартирате AWS / EB CLI, който просто се състои от инсталиране на няколко инструмента и настройка на конфигурацията.

Документите на AWS се справят по-добре с обяснението си, отколкото някога бих могъл, затова ги разгледайте тук.

Забележка: Ако някога имате проблеми с API ключовете, можете да ги проверите / промените, като редактирате конфигурационния файл.

open ~/.aws/config

Първоначално разполагане

Сега имаме всички наши инструменти на линия, какво следва?

eb init

Когато изпълните тази команда, тя ще ви зададе много въпроси:

  1. Ще бъдете помолени да изберете регион.

    По подразбиране е us-west-2: US West (Oregon)

  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 адрес. Ако искате, можете да го свържете към вашия домейн, използвайки Route 53. В по-голямата си част това са всички стандартни DNS записи. Можете да оставите управлението на DNS навсякъде, където сте регистрирали домейна си, но аз просто намирам за по-лесно да разполагате всичко на едно място.

SSL сертификат

Получаването на SSL сертификат за вашия екземпляр също е доста лесно. Посетете мениджъра на сертификати и създайте нов сертификат за вашия домейн. Това също е прост процес.

Забележка: Ако планирате да използвате SSL сертификат за Cloudfront, трябва да стартирате процеса от зоната в Северна Вирджиния. Можете да промените зоната си в горния десен ъгъл на екрана.

След като е проверен и готов за употреба, хвърлете го в конфигурацията на EB. Най-лесният начин е да отидете до конзолата и да я изберете.

  1. Отидете до таблото си за управление на EB
  2. Изберете вашето приложение
  3. Изберете вашата среда
  4. Кликнете върху „конфигурация“ и изберете SSL сертификат.

Друга бележка: Понякога може да имате проблеми с диспечера на сертификати, ако имате чисто нов акаунт. Ако ви каже да се свържете с поддръжката на клиенти, когато се опитате да създадете сертификат, направете това и те ще го поправят.

Заключение

Еха. Каква разходка. Надяваме се, че сте били успешни и не е трябвало да бягате твърде много пъти до документите на AWS. Но ако съм честен със себе си, сигурен съм, че трябваше поне веднъж. AWS е чудовищна услуга и тя се увеличава с всеки изминал ден.

поддържа

Хареса ли ви тази статия? Искате ли да видите повече? Имате ли няколко долара на свобода? Вижте връзката по-долу. Всяка чаша кафе се превръща в още няколкостотин реда код :)

Купете си Джаред Нат кафе - BuyMeACoffee.com

Базиран в Лос Анджелис уеб разработчик, опитващ се с всички сили да допринесе за софтуер с отворен код и да напише страхотни уроци. buymeacoff.ee

Ресурси

AWS На обикновен английски

Запознаване и любов към AWS Elastic Beanstalk Configuration Files (.ebextensions)

Първи стъпки с AWS

acloudguru (Не е безплатна услуга, но те имат въвеждащ курс, който е безплатен и много информативен)