Skip to content

Latest commit

 

History

History
111 lines (82 loc) · 4.45 KB

File metadata and controls

111 lines (82 loc) · 4.45 KB

Del 1 – manuelt oppsett av fullstack serverless applikasjon i AWS web console

Vi setter opp tjenestene i samme rekkefølge som de ble gjennomgått på slidene:

  1. DynamoDB
  2. Lambda
  3. API Gateway
  4. S3
  5. Cloudfront

DynamoDB

Lag en ny tabell i DynamoDB

  • Lag Primary key med navnetkey, type string
  • Lag Sort key med navnet text, type string
  • Bruk ellers default settings
  • Notér deg navnet på tabellen

Lambda

Lag en ny Lambda-funksjon.

  • Start med templaten Blank Function
  • Ikke sett opp noen triggere, dette gjør vi senere
  • Gi Lambdaen din et navn
  • Velg runtime Node.js 6.10 (default)
  • Lim inn koden fra lambda/index.js. Erstatt variabelen TABLE med navnet på DynamoDB-tabellen.
  • Under Role, velg Create new role from templates
    • Gi rollen et navn og velg Simple Microservice permissions under Policy templates
  • La resten stå som default, klikk Next og Create function
  • Test Lambdaen din ved å trykke på Test. Du skal forvente output som begynner med "Ukjent HTTP-metode ..."

Lambdaen din er nå opprettet. Vi fortsetter med å sette opp API og frontend.

API Gateway

Opprett API med ressurs som trigger lambda

  • Opprett et nytt API i API Gateway
  • Velg Actions -> Create Resource med path /api. Gi ressursen et valgfritt navn og klikk Create resource
  • Marker den nyopprettede ressursen og opprett en ny metode på denne med Actions -> Create method
  • Velg ANY i dropdownen for å lage en handler for alle HTTP-metoder
  • Velg Integration type Lambda Function
  • Velg Use Lambda Proxy integration
  • Velg regionen der Lambdaen ligger og skriv inn navnet på lambdaen

Deploy og test API-et

  • Velg Actions -> Deploy API
  • Lag et nytt deployment stage, bruk gjerne navnet prod
  • Test API-et ved å klikke på Invoke URL. Legg på /api på slutten, slik at du får en URL på formatet https://<id>.execute-api.<region>.amazonaws.com/prod/api Du bør få følgende output:
{
  "Items": [],
  "Count": 0,
  "ScannedCount": 0
}

Vi skal nå deploye en frontend som benytter seg av API-et vårt.

S3

Til slutt lager vi en Cloudfront-distribusjon som ligger foran S3-bucketen og API-et vårt

Cloudfront

Frontend

Gå inn i Cloudfront-konsollet og opprett en ny distribusjon

  • Velg Web
  • Origin Domain Name: Velg din bucket
  • La Origin Path være blank
  • Velg Restrict bucket access og Create a New Identity. Velg Yes, Update Bucket Policy
  • Velg Redirect HTTP to HTTPS
  • Sett Default Root Object til index.html
  • La resten stå som default og klikk Create Distribution

Du har nå laget en Cloudfront-distribution med en origin for S3-bucketen. Det ble opprettet en default behavior som vil returnere index.html fra S3-bucketen din når man går på rot på URL-en til distribusjonen

Backend

Nå må vi lage en ny origin for API-et, med tilhørende behavior.

  • Gå inn i administrasjonspanelet for distribusjonen du opprettet i forrige steg
  • Under Origins, velg Create Origin
  • Lim inn URL-en til API-et ditt i Origin Domain Name. Den vil automatisk splittes slik at API-ets deployment stage (f.eks. /prod) legges inn i Origin Path. Merk at du ikke skal ha med /api-delen på URL-en du limer inn her.
  • Velg HTTPS Only og klikk Create

Vi må nå lage en behavior som ruter trafikk på visse ruter videre til API-et.

  • Lag en ny behavior
  • Skriv /apii Path Pattern
  • Velg origin til API-et under Origin
  • Redirect HTTP to HTTPS
  • Velg Allowed HTTP Methods GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
  • Under Object caching, velg Customize og sett både Maximum og Default TTL til 0 for å disable caching
  • La resten stå som default og klikk Create

Vi skrur altså av all caching på backenden. I et reellt scenario vil man tune caching-parametrene for de ulike tjenestene man legger bak Cloudfront.

Nå tar det en god stund før distribusjonen er ferdig satt opp. Ta deg en kaffe i mellomtiden.

Det var det! Hvis du når går til http://<din-distribusjon>.cloudfront.net/ skal Todo-appen fungere 🚀

Sjekke logger? 🕵

Lambdaen logger requester og annet snacks til Cloudwatch. Gå inn og ta en titt om du er nysgjerrig.

Del 2

Vi tar en oppsummering i plenum etter disse oppgavene, men er du ferdig allerede kan du gå videre på del 2.