AWS Lambda er en hændelsesdrevet, serverløs computerplatform, der leveres af Amazon som en del af Amazon Web Services. Denne tjeneste kører kode som reaktion på hændelser og administrerer automatisk alle nødvendige computerressourcer. Den blev introduceret i november 2014.
Lyder det godt? Det gjorde det ikke for Ruby-udviklere. Indtil 29. november 2018 var Ruby ikke understøttet til at starte den serverløse revolution. Men så kom Jets, og alt har ændret sig.
Som der stolt står på Ruby on Jets' officielle hjemmeside:
"Med Ruby on Jets kan du nemt oprette og implementere serverløse tjenester og problemfrit lime AWS-tjenester sammen med det smukkeste dynamiske sprog: Ruby. Den indeholder alt, hvad du behøver for at bygge en API og udrulle den til AWS Lambda. Jets udnytter kraften i Ruby til at gøre serverless til en fornøjelse for alle."
Det er faktisk relativt nemt og behageligt at arbejde med Jets, især for en person, der på en eller anden måde har erfaring med Rails eller Sinatra.
For at bevise det vil vi i denne artikel bygge en simpel serverløs applikation.
Er du klar?
Byggeansøgning
Det, vi vil gøre, er at oprette en meget enkel Jets-app. Det vil give os nogle grundlæggende oplysninger om, hvordan man opretter ruter, controllere og handlinger, og hvordan man distribuerer til AWS Lambda. For at holde det enkelt og nemt bruger vi kun ét endpoint, som returnerer en tilfældig Chuck Norris-joke.
Installation
Lad os først og fremmest installere Jets gem globalt. Skriv i din konsol:
Opret derefter nye Jets projekt med:
(Indstillingerne -mode api og -no-database er ikke nødvendige, det vil bare gøre installationen lidt hurtigere, da vi ikke har brug for nogen database eller visninger her).
Kør nu i din chuck-norris-jokes-mappe:
Indtastning localhost:8888
i din browser, bør du se noget i retning af dette:
Hvis det er det, du ser - tillykke, så har du gjort alt rigtigt!
Controller og ruter
Det, vi skal til at gøre nu, er at oprette vores første Jets-controller.
Skriv i konsollen:
Dette vil skabe vores JokesController med en handling indeni - create. Som standard opretter Jets en rute af typen "get" til handlingen, så vi er nødt til at ændre den.
I routes.rb filændring Hent "jokes/create" til Post 'jokes', til: "jokes#create".
Henter anmodningen
For at hente nogle Chuck Norris-ting skal vi foretage et kald til John Doe Api. Derefter svarer vi med json, der indeholder den hentede joke.
Testning lokalt
Vi kan køre dette lokalt for at teste, at vi får det forventede svar. Det, vi skal gøre, er at lave en POST-anmodning til vores lokale server ved hjælp af krølle
.
(Pas på: Sørg for, at din server stadig kører).
Udrulning
Forudsat at du har en AWS-konto med passende politikker (du kan finde dem i den officielle Jets-dokumentation), er det sidste, du skal gøre, bare at køre:
Dette vil uploade vores applikation til AWS.
Når implementeringen er færdig, får du dit API-gateway-endepunkt (sandsynligvis den sidste linje i konsollen).
Test din AWS Lambda-applikation
Så nu er det endelig tid til at teste vores implementerede app!
Vi kan gøre dette ved hjælp af curl igen, men nu erstatter vi localhost med API-gatewayens slutpunkt, som vi fik udleveret.
Sammenfatning
Det var alt, folkens! Jeg håber, du nød dette korte kig ind i Ruby on Jets og den serverløse verden.
Læs mere om det: