AWS Lambda ved hjælp af DynamoDB med Java

1. Introduktion

AWS Lambda er serverløs computertjeneste leveret af Amazon Web Services, og WS DynamoDB er en NoSQL-databasetjeneste, der også leveres af Amazon.

Interessant nok understøtter DynamoDB både dokumentlager og nøgleværdilager og styres fuldt ud af AWS.

Før vi starter, skal du bemærke, at denne tutorial kræver en gyldig AWS-konto (du kan oprette en her). Det er også en god ide først at læse AWS Lambda med Java-artiklen.

2. Maven-afhængigheder

For at aktivere lambda har vi brug for følgende afhængighed, som kan findes på Maven Central:

 com.amazonaws aws-lambda-java-core 1.1.0 

For at bruge forskellige AWS-ressourcer har vi brug for følgende afhængighed, som også også kan findes på Maven Central:

 com.amazonaws aws-lambda-java-events 1.3.0 

Og for at opbygge applikationen skal vi bruge Maven Shade Plugin:

 org.apache.maven.plugins maven-skygge-plugin 3.0.0 falsk pakke skygge 

3. Lambda-kode

Der er forskellige måder at oprette håndtere på i en lambda-applikation:

  • MethodHandler
  • RequestHandler
  • RequestStreamHandler

Vi bruger RequestHandler interface i vores applikation. Vi accepterer Personforespørgsel i JSON-format, og svaret bliver Personrespons også i JSON format:

offentlig klasse PersonRequest {privat streng fornavn; privat streng efternavn; // standard getters og setter} 
offentlig klasse PersonResponse {privat strengbesked; // standard getters og setter}

Dernæst er vores indgangsklasse, som skal implementeres RequestHandler interface som:

offentlig klasse SavePersonHandler implementerer RequestHandler {privat DynamoDB dynamoDb; private String DYNAMODB_TABLE_NAME = "Person"; private regioner REGION = Regioner.US_WEST_2; public PersonResponse handleRequest (PersonRequest personRequest, Context context) {this.initDynamoDbClient (); persistData (personRequest); PersonResponse personResponse = ny PersonResponse (); personResponse.setMessage ("Gemt med succes !!!"); tilbagevendende person Svar } private PutItemOutcome persistData (PersonRequest personRequest) kaster ConditionalCheckFailedException {returner denne.dynamoDb.getTable (DYNAMODB_TABLE_NAME) .putItem (ny PutItemSpec (). withItem (ny Item () .withString ("firstName", personRequ) "lastName", personRequest.getLastName ());} privat ugyldigt initDynamoDbClient () {AmazonDynamoDBClient-klient = ny AmazonDynamoDBClient (); client.setRegion (Region.getRegion (REGION)); this.dynamoDb = ny DynamoDB (klient);}} 

Her når vi implementerer RequestHandler interface, skal vi implementere handleRequest () til den faktiske behandling af anmodningen. Hvad angår resten af ​​koden har vi:

  • Personforespørgsel objekt - som indeholder de anmodningsværdier, der er sendt i JSON-format
  • Sammenhæng objekt - bruges til at hente oplysninger fra lambda-eksekveringsmiljø
  • PersonResponse - som er svarobjektet for lambda-anmodningen

Når vi opretter et DynamoDB-objekt, opretter vi først AmazonDynamoDBClient objekt og brug det til at oprette en DynamoDB objekt. Bemærk, at område er obligatorisk.

For at tilføje elementer i DynamoDB-tabellen bruger vi et PutItemSpec objekt - ved at angive antallet af kolonner og deres værdier.

Vi har ikke brug for noget foruddefineret skema i DynamoDB-tabellen, vi skal bare definere kolonnenavnet Primær nøgle, som er “Id” i vores tilfælde.

4. Opbygning af implementeringsfilen

For at opbygge lambda-applikationen skal vi udføre følgende Maven-kommando:

mvn ren pakke skygge: skygge

Lambda-applikationen bliver samlet og pakket i en krukke fil under målmappen.

5. Oprettelse af DynamoDB-tabellen

Følg disse trin for at oprette DynamoDB-tabellen:

  • Log ind på AWS-konto
  • Klik på “DynamoDB” der kan findes under “Alle tjenester”
  • Denne side viser allerede oprettede DynamoDB-tabeller (hvis nogen)
  • Klik på "Opret tabel" knap
  • Giv "Tabelnavn" og "Primærnøgle" med sin datatype som "Nummer"
  • Klik på "Skab" knap
  • Tabel oprettes

6. Oprettelse af Lambda-funktionen

Følg disse trin for at oprette Lambda-funktionen:

  • Log ind på AWS-konto
  • Klik på “Lambda” der kan findes under “Alle tjenester”
  • Denne side viser allerede oprettede Lambda-funktion (hvis nogen) eller ingen lambda-funktioner oprettes, klik på "Gå i gang nu"
  • "Vælg tegning" -> Vælg “Tom funktion ”
  • “Konfigurer udløsere” -> Klik "Næste" knap
  • “Konfigurer funktion”
    • "Navn": SavePerson
    • "Beskrivelse": Gem person til DDB
    • “Runtime”: Vælg “Java 8”
    • "Upload": Klik "Upload" knappen, og vælg jar-filen til lambda-applikationen
  • “Handler”: com.baeldung.lambda.dynamodb.SavePersonHandler
  • “Rolle”: Vælg "Opret en brugerdefineret rolle"
  • Et nyt vindue vises og tillader konfiguration af IAM-rolle til lambda-udførelse, og vi skal tilføje DynamoDB-tilskud i den. Når du er færdig, skal du klikke på "Give lov til" knap
  • Klik på "Næste" knap
  • "Anmeldelse": Gennemgå konfigurationen
  • Klik på “Opret funktion” knap

7. Test af Lambda-funktionen

Næste trin er at teste lambda-funktionen:

  • Klik på "Prøve" knap
  • Det “Input test begivenhed” vindue vises. Her giver vi JSON-input til vores anmodning:
{"id": 1, "firstName": "John", "lastName": "Doe", "age": 30, "address": "United States"}
  • Klik på “Gem og test” eller "Gemme" knap
  • Outputtet kan ses på “Udførelsesresultat” afsnit:
{"message": "Gemt med succes !!!" }
  • Vi skal også kontrollere i DynamoDB, at posten er vedvarende:
    • Gå til "DynamoDB" Management Console
    • Vælg tabellen "Person"
    • Vælg “Varer” fanen
    • Her kan du se personens detaljer, der blev sendt i anmodning til lambda-ansøgning
  • Så anmodningen behandles med vores lambda-ansøgning

8. Konklusion

I denne hurtige artikel har vi lært, hvordan man opretter Lambda-applikation med DynamoDB og Java 8. De detaljerede instruktioner skal give dig et forspring med at opsætte alt.

Og som altid kan den fulde kildekode til eksempelappen findes på Github.