Sådan distribueres en Node.js-app til AWS Elastic Beanstalk

Det tog mig den bedre del af en måned at finde ud af, hvordan jeg konfigurerede en Amazon Web Services (AWS) -konto, konfigurerede en Node.js-app til implementering og derefter faktisk distribuerer den.

Meget af det forsøgte at dechiffrere Amazons dokumentation. Forhåbentlig får denne guide dig på vej til at implementere fra lokalt til at leve uden for meget hovedpine.

Jeg er placeret i Los Angeles, så når du konfigurerer din konfiguration, er standardindstillingerne muligvis ikke nøjagtigt de samme.

Forudsætninger

  1. Grundlæggende viden om kommandolinjen

    Jeg er sikker på, at du kan gøre dette uden kommandolinjen, men det er meget nemmere at bruge CLI

  2. En AWS-konto
  3. Elastic Beanstalk Command Line Interface (EB CLI)

    Instruktioner om installation nedenfor

  4. Grundlæggende viden om Git

Oprettelse af en AWS-konto

Den første ting du skal gøre er at oprette en AWS-konto. Hvis du allerede har en konto, skal du sørge for at have en IAM-bruger, der har API-nøgler og den passende adgang.

Opret en konto

Temmelig ligetil. Opret en konto. Tilmeldingsprocessen skal gå dig gennem alt ret let. Når du opretter en AWS-konto første gang, får du rootadgang. Det er dog sikkerhedens bedste praksis at oprette en separat bruger, som du vil bruge til at logge ind regelmæssigt.

Opsæt din IAM

BEMÆRK: Jeg er ikke ekspert med AWS Identity and Access Management (IAM). De handlinger, jeg tog, var til min egen personlige brugssag og passer muligvis ikke til dine behov. Gennemgå tilladelserne grundigt, inden du giver brugerne adgang.

AWS offentliggør regelmæssigt bedste praksis, få en fra 2016 her.

Opret en gruppe

Inden du konfigurerer en bruger, som du kan logge ind med, skal du oprette en gruppe, der administrerer tilladelser. I mit tilfælde opretter jeg en SuperAdmin- gruppe, som jeg ville sætte mig i, så jeg kunne få adgang til alt.

For denne gruppe, da det grundlæggende er at logge ind og have adgang til alt selv, valgte jeg AdministratorAccess som tilladelse.

For mere information om IAM-grupper, gå her.

Konfigurer en IAM-bruger

Opsætning af en bruger er ret enkel, men hvis du sidder fast, skal du tjekke IAM-siden til AWS. De har mange nyttige videoer.

Husk bare at:

  1. Giv dem adgangsnøgletilladelser

    (se billedet nedenfor)

  2. Tildel dem til den relevante IAM-gruppe

Når du har fået din egen brugeropsætning, skal du logge ud af roden og logge ind igen som din nye IAM-bruger.

Opsætning af det lokale miljø

Nu hvor vi har vores kontonøgler klar, lad os komme i gang med implementeringen.

Hvad er elastisk bønnestængel?

Elastic Beanstalk (EB) er en ret ligetil måde at oprette skalerbare applikationer på. Det bruger Amazon Elastic Compute Cloud (EC2) forekomster, Amazon Simple Storage Service (S3) skovle og load balancers til at styre din applikationsarkitektur for dig.

Hvis du har brug for at skalere op hurtigt på grund af netværksefterspørgsel, gør det det. Det er også virkelig fantastisk at skubbe til opdateringer, fordi det kan udføre "rullende opdateringer", som gør det muligt for applikationen at forblive online, mens du opdaterer. Pænt.

Sådan holder du elastisk bønnestængel fra at koste dig et ton

Dette gælder kun for nye brugere, der stadig kvalificerer sig til den gratis plan:

  1. Du får 750 timers t2.micro EC2-tid pr. Måned. Dette giver dig nok til at køre en enkelt server på fuld tid.

    Men hvis du tilføjer endnu en adskillelse, skal du betale for det.

  2. Du kan skifte al din serverlogik til Lambda-funktioner, men det er et emne for en anden dag (og der er også et par ulemper).

    Hvis du er interesseret, skal du tjekke denne artikel.

Hvor meget koster det dog?

Godt spørgsmål. Her er et eksempel på min regning. Dette er med Node.js-applikationen, der kører, som jeg skriver denne artikel om (EB, Cloudfront, S3 Buckets).

Hvis du spekulerer på, hvor meget det vil koste, når den gratis plan er op, skal du tjekke dette ud.

Oprettelse af et EB-miljø i din applikation

Dette er ikke en Node.js-selvstudie, da det er uden for denne artikels anvendelsesområde. Men hvis du har brug for en applikation at skrue rundt med, skal du tjekke Express-applikationsgeneratoren. Det giver dig i det mindste en "Hello World". Det er det, jeg brugte inittil mit projekt.

Fremadrettet antages det, at du allerede har et Node.js-program, der kører lokalt uden problem.

Opsætning af EB CLI

Den første ting er at få AWS / EB CLI til at køre, som bare består af at installere et par værktøjer og konfigurere konfigurationen.

AWS-dokumenterne gør et bedre stykke arbejde med at forklare det, end jeg nogensinde kunne, så tjek dem her.

Bemærk: Hvis du nogensinde har problemer med API-nøglerne, kan du bekræfte / ændre dem ved at redigere konfigurationsfilen.

open ~/.aws/config

Første implementering

Nu har vi alle vores værktøjer på linje, hvad næste?

eb init

Når du kører denne kommando, vil det stille dig masser af spørgsmål:

  1. Du bliver bedt om at vælge en region.

    Standard er us-west-2: US West (Oregon)

  2. Det spørger dig, hvilket program du skal bruge eller oprette en ny.

    Den første mulighed skal være at oprette en ny.

  3. Det spørger dig, om du vil bruge AWS CodeCommit.

    Jeg har ingen erfaring med dette, men jeg bruger bare GitHub, så jeg sagde nej.

Opsæt dine Env-variabler

Dette var sandsynligvis mit største smertepunkt. Jeg ved ikke, om min hjerne glaser over dokumentationen, eller hvad. Når jeg først har fundet ud af det, er det faktisk virkelig simpelt. Og konfigurationsfilerne er skrevet i YAML ❤️.

Når du eb initopretter en mappe .elasticbeanstalki din rodmappe. Du behøver ikke rigtig rode med noget herinde, da det skal konfigureres automatisk, når du kører kommandoen første gang.

For at have dine miljøvariabler og enhver anden konfiguration, du skal køre ved starttidspunkt, skal du oprette en ny mappe: .ebextensions

Mappestrukturen skal se sådan ud:

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

Konfigurationsfilerne er skrevet i YAML, som tidligere nævnt. Her er et par eksempler for at give dig en idé om, hvordan de skal se ud:

Fil med miljøvariabler:

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

En fil til konfiguration af Node.js:

Du behøver ikke rigtig at specificere det, NodeVersionfordi det giver dig den nyeste, det kan på EC2-forekomsterne. Men det er her bare i tilfælde af.

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

Dette er den nemmeste måde for mig at administrere konfigurationsindstillingerne på, men de kan justeres i EB-dashboardet under konfiguration.

Hvis du vil vide mere, her er en fantastisk artikel om netop dette emne.

Opret et miljø

eb create 

derefter implementere

eb deploy

Forudsat at alt gik godt, er din app nu implementeret i "skyen".

Tjek det ud med eb open

Implementering af ændringer

Når du har konfigureret alt, er det super nemt at skubbe ændringer.

BEMÆRK: Ændringer skal forpligte Git, før de skubber til miljøet.

Jeg var ikke klar over det første gang, og det tog mig for evigt at finde ud af det. Foretag ikke den samme fejl - begå disse ændringer!

Så når du først har foretaget ændringerne, skal du blot skrive kommandoen nedenfor og vente på, at den kører sin kurs.

eb deploy 

Andre praktiske EBCLI-kommandoer

At åbne forekomsten i terminalen, hvilket er betydeligt lettere end at prøve at huske ordbogen for en URL, som AWS først giver dig:

eb open

Sådan åbner du konsollen:

eb console

For at få logfiler direkte til din terminal:

eb logs

Hvad er det næste?

Brugerdefineret domænenavn

Hvis du kører eb open, vil du bemærke, at URL'en er en skør lang URL. Hvis du vil, kan du tilslutte det til dit domæne ved hjælp af rute 53. For det meste er det alle almindelige DNS-poster. Du kan forlade DNS-styringen, uanset hvor du har registreret dit domæne, men jeg finder det bare nemmere at have det hele på én gang.

SSL-certificeret

At få et SSL-certifikat til din forekomst er også ret nemt. Besøg certifikatadministratoren, og opret et nyt certifikat til dit domæne. Dette er også en simpel proces.

Bemærk: Hvis du planlægger at bruge en SSL cert for CloudFront, du nødt til at indlede processen fra N. Virginia zonen. Du kan ændre din zone øverst til højre på skærmen.

Når den er verificeret og klar til brug, skal du smide den i din EB-konfiguration. Den nemmeste måde er at gå til konsollen og vælge den.

  1. Gå til dit EB-dashboard
  2. Vælg din applikation
  3. Vælg dit miljø
  4. Klik på “konfiguration”, og vælg SSL-certifikatet.

En anden note: Nogle gange har du muligvis problemer med certifikatadministratoren, hvis du har en helt ny konto. Hvis det fortæller dig at kontakte kundesupport, når du prøver at oprette et certifikat, skal du gøre det, og de løser det.

Konklusion

Wow. Hvilken tur. Forhåbentlig var du succesrig og behøvede ikke at løbe til AWS-dokumenterne for mange gange. Men hvis jeg er ærlig over for mig selv, er jeg sikker på, at du skulle mindst en gang. AWS er ​​en uhyrlig tjeneste, og den vokser kun større for dagen.

Support

Nød du denne artikel? Vil du gerne se mere? Har du et par dollars til overs? Tjek nedenstående link. Hver kop kaffe omdannes til endnu et par hundrede linjer kode :)

Køb Jared Nutt en kaffe - BuyMeACoffee.com

Los Angeles-baseret webudvikler forsøger sit bedste for at bidrage til open source-software og skrive gode tutorials. buymeacoff.ee

Ressourcer

AWS på almindelig engelsk

Lær at kende og elske AWS Elastic Beanstalk Configuration Files (.ebextensions)

Kom godt i gang med AWS

acloudguru (Ikke en gratis service, men de har et introkursus, der er gratis og meget informativt)