Vi setter opp tjenestene i samme rekkefølge som de ble gjennomgått på slidene:
Lag en ny tabell i DynamoDB
- Lag Primary key med navnet
key, type string - Lag Sort key med navnet
text, type string - Bruk ellers default settings
- Notér deg navnet på tabellen
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 variabelenTABLEmed 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.
- 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
ANYi 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
- Velg Actions -> Deploy API
- Lag et nytt deployment stage, bruk gjerne navnet
prod - Test API-et ved å klikke på Invoke URL. Legg på
/apipå slutten, slik at du får en URL på formatethttps://<id>.execute-api.<region>.amazonaws.com/prod/apiDu 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.
- Opprett en S3-bucket
- Last opp
index.htmlog helestatic/-katalogen
Til slutt lager vi en Cloudfront-distribusjon som ligger foran S3-bucketen og API-et vårt
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
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
0for å 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 🚀
Lambdaen logger requester og annet snacks til Cloudwatch. Gå inn og ta en titt om du er nysgjerrig.
Vi tar en oppsummering i plenum etter disse oppgavene, men er du ferdig allerede kan du gå videre på del 2.