AWS Lambda bruker DynamoDB med Java
1. Introduksjon
AWS Lambda er serverløs datatjeneste levert av Amazon Web Services, og WS DynamoDB er en NoSQL-databasetjeneste også levert av Amazon.
Interessant, DynamoDB støtter både dokumentbutikk og nøkkelverdilagring og administreres fullt ut av AWS.
Før vi begynner, merk at denne opplæringen krever en gyldig AWS-konto (du kan opprette en her). Det er også en god ide å først lese AWS Lambda med Java-artikkelen.
2. Maven-avhengigheter
For å aktivere lambda trenger vi følgende avhengighet som finnes på Maven Central:
com.amazonaws aws-lambda-java-core 1.1.0
For å bruke forskjellige AWS-ressurser trenger vi følgende avhengighet, som også finnes på Maven Central:
com.amazonaws aws-lambda-java-events 1.3.0
Og for å bygge applikasjonen skal vi bruke Maven Shade Plugin:
org.apache.maven.plugins maven-shade-plugin 3.0.0 falsk pakkeskyanse
3. Lambda-kode
Det er forskjellige måter å lage håndterere i en lambda-applikasjon:
- MethodHandler
- RequestHandler
- RequestStreamHandler
Vi vil bruke RequestHandler grensesnitt i applikasjonen vår. Vi godtar Personforespørsel i JSON-format, og svaret vil være Personrespons også i JSON format:
offentlig klasse PersonRequest {privat streng fornavn; privat streng etternavn; // standard getters og setters}
offentlig klasse PersonResponse {privat strengmelding; // standard getters og setters}
Neste er vår inngangspunktklasse som skal implementeres RequestHandler grensesnitt som:
offentlig klasse SavePersonHandler implementerer RequestHandler {privat DynamoDB dynamoDb; private String DYNAMODB_TABLE_NAME = "Person"; private regioner REGION = Regions.US_WEST_2; public PersonResponse handleRequest (PersonRequest personRequest, Context context) {this.initDynamoDbClient (); persistData (personRequest); PersonResponse personResponse = ny PersonResponse (); personResponse.setMessage ("Lagret vellykket !!!"); tilbake personRespons; } private PutItemOutcome persistData (PersonRequest personRequest) kaster ConditionalCheckFailedException {return this.dynamoDb.getTable (DYNAMODB_TABLE_NAME) .putItem (new PutItemSpec (). withItem (new Item () .withString ("firstName", personRequ) "lastName", personRequest.getLastName ());} privat ugyldig initDynamoDbClient () {AmazonDynamoDBClient-klient = ny AmazonDynamoDBClient (); client.setRegion (Region.getRegion (REGION)); this.dynamoDb = ny DynamoDB (klient);}}
Her når vi implementerer RequestHandler grensesnitt, må vi implementere handleRequest () for den faktiske behandlingen av forespørselen. Når det gjelder resten av koden, har vi:
- Personforespørsel objekt - som vil inneholde forespørselsverdiene sendt i JSON-format
- Kontekst objekt - brukes til å få informasjon fra lambda-kjøringsmiljø
- PersonResponse - som er svarobjektet for lambda-forespørselen
Når du oppretter et DynamoDB-objekt, oppretter vi først AmazonDynamoDBClient objekt og bruk det til å lage et DynamoDB gjenstand. Merk at region er obligatorisk.
For å legge til elementer i DynamoDB-tabellen, bruker vi a PutItemSpec objekt - ved å spesifisere antall kolonner og deres verdier.
Vi trenger ikke noe forhåndsdefinert skjema i DynamoDB-tabellen, vi trenger bare å definere kolonnenavnet Primær nøkkel, som er “Id” i vårt tilfelle.
4. Bygg distribusjonsfilen
For å bygge lambda-applikasjonen, må vi utføre følgende Maven-kommando:
mvn ren pakkeskygge: skygge
Lambda-applikasjonen blir samlet og pakket inn i en krukke filen under målmappen.
5. Opprette DynamoDB-tabellen
Følg disse trinnene for å opprette DynamoDB-tabellen:
- Logg inn på AWS-konto
- Klikk “DynamoDB” som kan ligge under “Alle tjenester”
- Denne siden viser allerede opprettede DynamoDB-tabeller (hvis noen)
- Klikk “Lag tabell” knapp
- Gi “Tabellnavn” og "Primærnøkkel" med sin datatype som "Nummer"
- Klikk på "Skape" knapp
- Tabell vil bli opprettet
6. Opprette Lambda-funksjonen
Følg disse trinnene for å opprette Lambda-funksjonen:
- Logg inn på AWS-konto
- Klikk “Lambda” som kan ligge under “Alle tjenester”
- Denne siden viser allerede opprettet Lambda-funksjon (hvis noen) eller ingen lambda-funksjoner er opprettet, klikk på "Kom i gang nå"
- “Velg tegning” -> Velg “Tom funksjon ”
- “Konfigurer utløsere” -> Klikk “Neste” knapp
- “Konfigurer funksjon”
- "Navn": SavePerson
- "Beskrivelse": Lagre person i DDB
- “Runtime”: Å velge “Java 8”
- "Laste opp": Klikk "Laste opp" knappen og velg jar-filen til lambda-applikasjonen
- “Handler”: com.baeldung.lambda.dynamodb.SavePersonHandler
- “Roll”: Å velge "Opprett en tilpasset rolle"
- Et nytt vindu dukker opp og tillater konfigurering av IAM-rolle for lambda-utførelse, og vi må legge til DynamoDB-tilskuddene i den. Når du er ferdig, klikker du "Tillate" knapp
- Klikk “Neste” knapp
- "Anmeldelse": Gjennomgå konfigurasjonen
- Klikk “Opprett funksjon” knapp
7. Testing av Lambda-funksjonen
Neste trinn er å teste lambdafunksjonen:
- Klikk på "Test" knapp
- De “Input test event” vinduet vises. Her gir vi JSON-inngangen for forespørselen vår:
{"id": 1, "firstName": "John", "lastName": "Doe", "age": 30, "address": "United States"}
- Klikk “Lagre og test” eller "Lagre" knapp
- Produksjonen kan sees på “Utførelsesresultat” seksjon:
{"message": "Lagret vellykket !!!" }
- Vi må også sjekke inn DynamoDB at posten er vedvarende:
- Gå til “DynamoDB” Management Console
- Velg tabellen "Person"
- Velg “Varer” fanen
- Her kan du se personens detaljer som ble sendt på forespørsel til lambda-søknad
- Så forespørselen blir behandlet av vår lambda-søknad
8. Konklusjon
I denne raske artikkelen har vi lært hvordan du lager Lambda-applikasjon med DynamoDB og Java 8. De detaljerte instruksjonene skal gi deg et forsprang i å sette opp alt.
Og som alltid kan hele kildekoden for eksempelappen finnes på Github.