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.


$config[zx-auto] not found$config[zx-overlay] not found