Kako rasporediti aplikaciju Node.js na AWS Elastic Beanstalk

Trebao mi je bolji dio mjeseca da shvatim kako postaviti račun Amazon Web Services (AWS), konfigurirati aplikaciju Node.js za postavljanje i zatim je zapravo implementirati.

Puno toga pokušavalo je dešifrirati Amazonovu dokumentaciju. Nadamo se da će vas ovaj vodič odvesti na put prema raspoređivanju od lokalnog do života bez previše glavobolje.

Nalazim se u Los Angelesu, pa kad postavljate konfiguraciju, zadane vrijednosti možda neće biti potpuno iste.

Preduvjeti

  1. Osnovno znanje naredbenog retka

    Siguran sam da to možete učiniti bez naredbenog retka, ali jednostavnije je koristiti CLI

  2. AWS račun
  3. Sučelje naredbenog retka elastičnog zrna graha (EB CLI)

    Upute za instalaciju u nastavku

  4. Osnovno znanje Gita

Postavljanje AWS računa

Prvo što morate učiniti je postaviti AWS račun. Ako već imate račun, pobrinite se da imate IAM korisnika koji ima API ključeve i odgovarajući pristup.

Stvorite račun

Prilično izravno. Stvorite račun. Proces prijave trebao bi vas prilično lako proći kroz sve. Kada prvi put postavite AWS račun, dobit ćete root pristup. Međutim, to je najbolja praksa sigurnosti da stvorite zasebnog korisnika kojeg ćete koristiti za redovitu prijavu.

Postavite svoj IAM

NAPOMENA: Nisam stručnjak za AWS upravljanje identitetom i pristupom (IAM). Radnje koje sam poduzeo bile su za moj osobni slučaj i možda nisu prikladne za vaše potrebe. Prije pregledavanja dopuštenja temeljito pregledajte dozvole.

AWS redovito objavljuje najbolje prakse, ovdje ih potražite u 2016. godini.

Postavite grupu

Prije nego što postavite korisnika za prijavu, stvorite grupu koja će upravljati dozvolama. U mom slučaju postavljam SuperAdmin grupu u koju sam se namjeravao staviti kako bih mogao imati pristup svemu.

Za ovu grupu, s obzirom da se u osnovi moram prijaviti i imati pristup svemu, odabrao sam AdministratorAccess kao dopuštenje.

Za više informacija o IAM grupama idite ovdje.

Postavite IAM korisnika

Postavljanje korisnika prilično je jednostavno, ali ako zapnete, na IAM stranici potražite AWS. Imaju puno korisnih videozapisa.

Samo zapamtite:

  1. Dajte im dozvole za pristupni ključ

    (vidi sliku dolje)

  2. Dodijelite ih odgovarajućoj IAM grupi

Nakon što postavite vlastite korisničke postavke, odjavite se iz root-a i prijavite se kao novi IAM korisnik.

Postavljanje lokalnog okruženja

Sad kad imamo spremne ključeve računa, krenimo s implementacijom.

Što je elastični grah?

Elastic Beanstalk (EB) prilično je jednostavan način postavljanja skalabilnih aplikacija. Koristi instance Elastic Compute Cloud (EC2), segmente Amazon Simple Storage Service (S3) i uravnoteživače opterećenja za upravljanje vašom arhitekturom aplikacija umjesto vas.

Ako se zbog mrežne potražnje trebate brzo povećati, to će i učiniti. Također je nevjerojatno gurati ažuriranja, jer može vršiti "stalna ažuriranja", što omogućava aplikaciji da ostane na mreži dok ažurirate. Uredan.

Kako spriječiti da vas elastično zrno graha košta tonu

To se odnosi samo na nove korisnike koji se još uvijek kvalificiraju za besplatni paket:

  1. Dobivate 750 sati t2.micro EC2 vremena mjesečno. To će vam dati dovoljno za rad jednog poslužitelja s punim radnim vremenom.

    Međutim, ako dodate još jedan sjever, platit ćete ga.

  2. Možete prebaciti svu logiku svog poslužitelja na Lambda funkcije, ali to je tema za neki drugi dan (a također ima i nekoliko nedostataka).

    Ako ste zainteresirani, pogledajte ovaj članak.

Koliko će ipak koštati?

Dobro pitanje. Evo uzorka mog računa. Ovo je slučaj s pokrenutom aplikacijom Node.js o čemu pišem ovaj članak (EB, Cloudfront, S3 Buckets).

Ako se pitate koliko će koštati nakon isteka besplatnog plana, pogledajte ovo.

Stvaranje EB okruženja unutar vaše aplikacije

Ovo nije vodič za Node.js, jer je to izvan dosega ovog članka. Ali ako vam treba aplikacija za šaljivdinu, pogledajte Expressov generator generatora aplikacija. Dobit ćete barem "Pozdrav svijetu". To sam koristio kao initsvoj projekt.

Krećući se naprijed, pretpostavlja se da već imate aplikaciju Node.js koja se lokalno izvodi bez problema.

Postavljanje EB CLI

Prva stvar je pokrenuti AWS / EB CLI, koji se sastoji od instaliranja nekoliko alata i postavljanja konfiguracije.

AWS dokumenti to bolje objašnjavaju nego što sam ikad mogao, pa ih pogledajte ovdje.

Napomena: Ako ikada budete imali problema s API ključevima, možete ih provjeriti / promijeniti uređivanjem konfiguracijske datoteke.

open ~/.aws/config

Početno raspoređivanje

Sad imamo sve naše alate u redu, što dalje?

eb init

Kada pokrenete ovu naredbu, postavit će vam mnoštvo pitanja:

  1. Od vas će se tražiti da odaberete regiju.

    Zadana vrijednost je us-zapad-2: SAD zapad (Oregon)

  2. Upitat će vas koju aplikaciju koristiti ili stvoriti novu.

    Prva opcija trebala bi biti stvaranje nove.

  3. Upitat će vas želite li koristiti AWS CodeCommit.

    Nemam iskustva s tim, ali samo koristim GitHub, pa sam rekao ne.

Postavite varijable Env

Ovo je vjerojatno bila moja najveća bolna točka. Ne znam je li mi mozak zastaklio dokumentaciju, ili što već. Kad to shvatim, zapravo je stvarno jednostavno. A konfiguracijske datoteke napisane su u YAML-u ❤️.

Kada eb initto napravite, stvorit će mapu .elasticbeanstalku vašem korijenskom direktoriju. Zapravo se ne morate petljati ni s čim ovdje, jer bi se to trebalo automatski postaviti kada prvi put pokrenete naredbu.

Međutim, da biste imali varijable okruženja i bilo koju drugu konfiguraciju koju trebate pokrenuti u vrijeme početka, stvorite novu mapu: .ebextensions

Struktura mape trebala bi izgledati otprilike ovako:

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

Datoteke s konfiguracijom napisane su u YAML-u, kao što je ranije spomenuto. Evo nekoliko primjera kako biste dobili ideju kako bi trebali izgledati:

Datoteka varijabli okruženja:

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

Datoteka za konfiguriranje Node.js:

Zapravo ne morate navesti, NodeVersionjer će vam pružiti najnoviji koji može na instancama EC2. Ali ovdje je za svaki slučaj.

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

Ovo je najlakši način za upravljanje postavkama konfiguracije, ali ih je moguće prilagoditi na nadzornoj ploči EB-a u okviru konfiguracije.

Ako želite znati više, evo nevjerojatnog članka upravo o toj temi.

Stvorite okruženje

eb create 

zatim rasporediti

eb deploy

Pod pretpostavkom da je sve prošlo u redu, vaša je aplikacija sada postavljena u "oblak".

Provjerite s eb open

Uvođenje promjena

Nakon što sve postavite, guranje promjena vrlo je jednostavno.

NAPOMENA: Promjene moraju biti počinjene na Gitu prije guranja u okoliš.

Nisam to prvi put shvatila i trebalo mi je zauvijek da shvatim. Nemojte napraviti istu pogrešku - izvršite te promjene!

Dakle, nakon što izvršite promjene, jednostavno upišite naredbu ispod i pričekajte da krene svojim tijekom.

eb deploy 

Ostale praktične EBCLI naredbe

Da biste otvorili instancu u terminalu, što je znatno lakše od pokušaja pamćenja rječnika URL-a koji vam AWS daje na početku:

eb open

Da biste otvorili konzolu:

eb console

Da biste datoteke dnevnika prenijeli izravno na terminal:

eb logs

Što je sljedeće?

Prilagođeno ime domene

Ako pokrenete eb open, primijetit ćete da je URL ludo dugački URL. Ako želite, možete ga spojiti na svoju domenu pomoću Rute 53. To su većinom sve standardne DNS zapise. Možete ostaviti upravljanje DNS-om gdje god ste registrirali svoju domenu, ali jednostavno mi je lakše sve to smjestiti na jedno mjesto.

SSL certifikat

Dobivanje SSL certifikata za svoju instancu također je prilično jednostavno. Posjetite upravitelja certifikata i stvorite novi certifikat za svoju domenu. Ovo je također jednostavan postupak.

Napomena: Ako planirate koristiti SSL cert za Cloudfront, postupak morate pokrenuti iz zone N. Virginia. Zonu možete promijeniti u gornjem desnom dijelu zaslona.

Kad je provjeren i spreman za upotrebu, ubacite ga u svoj EB config. Najlakši način je otići do konzole i odabrati je.

  1. Idite na svoju nadzornu ploču EB-a
  2. Odaberite svoju aplikaciju
  3. Odaberite svoje okruženje
  4. Kliknite "konfiguracija" i odaberite SSL certifikat.

Još jedna napomena: Ponekad možete imati problema s upraviteljem certifikata ako imate potpuno novi račun. Ako vam kaže da se obratite korisničkoj podršci kada pokušate stvoriti certifikat, učinite to i oni će ga popraviti.

Zaključak

Vau. Kakva vožnja. Nadamo se da ste bili uspješni i da niste morali previše puta trčati do AWS dokumenata. Ali, ako sam iskren prema sebi, siguran sam da ste morali barem jednom. AWS je monstruozna usluga i ona svakim danom postaje sve veća.

Podrška

Jeste li uživali u ovom članku? Želite li vidjeti više? Imate nekoliko dolara na pretek? Pogledajte vezu u nastavku. Svaka šalica kave pretvara se u još nekoliko stotina redaka koda :)

Kupite kavu Jaredu Nuttu - BuyMeACoffee.com

Web programer sa sjedištem u Los Angelesu pokušava svim silama doprinijeti softveru otvorenog koda i napisati sjajne vodiče. buymeacoff.ee

Resursi

AWS Jednostavnim engleskim jezikom

Upoznavanje i ljubav prema AWS datotekama za konfiguraciju elastičnog zrna graha (.ebextensions)

Početak rada s AWS-om

acloudguru (Nije besplatna usluga, ali oni imaju uvodni tečaj koji je besplatan i vrlo informativan)