AWS Lambda DynamoDB gebruiken met Java

1. Inleiding

AWS Lambda is een serverloze computerservice die wordt aangeboden door Amazon Web Services en WS DynamoDB is een NoSQL-databaseservice die ook wordt aangeboden door Amazon.

Interessant is dat DynamoDB zowel documentopslag als sleutelwaardeopslag ondersteunt en volledig wordt beheerd door AWS.

Voordat we beginnen, moet u er rekening mee houden dat deze tutorial een geldig AWS-account vereist (u kunt er hier een maken). Het is ook een goed idee om eerst het artikel over AWS Lambda met Java te lezen.

2. Maven afhankelijkheden

Om lambda in te schakelen hebben we de volgende afhankelijkheid nodig die te vinden is op Maven Central:

 com.amazonaws aws-lambda-java-core 1.1.0 

Om verschillende AWS-bronnen te gebruiken, hebben we de volgende afhankelijkheid nodig die ook op Maven Central te vinden is:

 com.amazonaws aws-lambda-java-evenementen 1.3.0 

En om de applicatie te bouwen, gaan we de Maven Shade Plugin gebruiken:

 org.apache.maven.plugins maven-shad-plugin 3.0.0 valse pakketschaduw 

3. Lambda-code

Er zijn verschillende manieren om handlers aan te maken in een lambda-applicatie:

  • MethodHandler
  • RequestHandler
  • RequestStreamHandler

We zullen gebruiken RequestHandler interface in onze applicatie. We accepteren het PersonRequest in JSON-indeling, en het antwoord zal zijn PersonResponse ook in JSON formaat:

openbare klasse PersonRequest {private String firstName; private String achternaam; // standaard getters en setters} 
openbare klasse PersonResponse {privé String-bericht; // standaard getters en setters}

De volgende is onze toegangspuntklasse die zal worden geïmplementeerd RequestHandler interface als:

openbare klasse SavePersonHandler implementeert RequestHandler {privé DynamoDB dynamoDb; private String DYNAMODB_TABLE_NAME = "Persoon"; privéregio's REGION = Regions.US_WEST_2; openbare PersonResponse handleRequest (PersonRequest personRequest, contextcontext) {this.initDynamoDbClient (); persistData (personRequest); PersonResponse personResponse = nieuwe PersonResponse (); personResponse.setMessage ("Succesvol opgeslagen !!!"); terugkeer personResponse; } private PutItemOutcome persistData (PersonRequest personRequest) gooit ConditionalCheckFailedException {return this.dynamoDb.getTable (DYNAMODB_TABLE_NAME) .putItem (nieuwe PutItemSpec (). withItem (nieuw item () .withString ("firstName", personRequest (). "lastName", personRequest.getLastName ());} private void initDynamoDbClient () {AmazonDynamoDBClient client = nieuwe AmazonDynamoDBClient (); client.setRegion (Region.getRegion (REGION)); this.dynamoDb = nieuwe DynamoDB (client);}} 

Hier wanneer we het RequestHandler interface, we moeten implementeren handleRequest () voor de daadwerkelijke afhandeling van het verzoek. Wat betreft de rest van de code, we hebben:

  • PersonRequest object - dat de verzoekwaarden bevat die zijn doorgegeven in JSON-indeling
  • Context object - wordt gebruikt om informatie op te halen uit de lambda-uitvoeringsomgeving
  • PersonResponse - dat is het antwoordobject voor het lambda-verzoek

Wanneer we een DynamoDB-object maken, maken we eerst het AmazonDynamoDBClient object en gebruik dat om een DynamoDB voorwerp. Merk op dat de regio is verplicht.

Om items aan de DynamoDB-tabel toe te voegen, gebruiken we een PutItemSpec object - door het aantal kolommen en hun waarden op te geven.

We hebben geen vooraf gedefinieerd schema nodig in de DynamoDB-tabel, we hoeven alleen de kolomnaam Primary Key te definiëren, namelijk "ID kaart" in ons geval.

4. Bouwen aan het implementatiebestand

Om de lambda-applicatie te bouwen, moeten we het volgende Maven-commando uitvoeren:

mvn schoon pakket schaduw: schaduw

Lambda-applicatie wordt gecompileerd en verpakt in een pot bestand onder de doelmap.

5. De DynamoDB-tabel maken

Volg deze stappen om de DynamoDB-tabel te maken:

  • Log in op AWS-account
  • Klik "DynamoDB" die zich onder "Alle services"
  • Deze pagina toont reeds gemaakte DynamoDB-tabellen (indien aanwezig)
  • Klik "Tabel maken" knop
  • Voorzien "Tafel naam" en "Hoofdsleutel" met zijn datatype als "Aantal"
  • Klik op "Maken" knop
  • De tabel wordt gemaakt

6. Creëren van de Lambda-functie

Volg deze stappen om de Lambda-functie te maken:

  • Log in op AWS-account
  • Klik "Lambda" die zich onder "Alle services"
  • Deze pagina toont de reeds gemaakte Lambda-functie (indien aanwezig) of er zijn geen lambda-functies gemaakt, klik op "Begin nu"
  • 'Selecteer blauwdruk' -> Selecteer “Blanco functie '
  • 'Triggers configureren' -> Klik "De volgende" knop
  • "Configureer functie"
    • "Naam": SavePerson
    • "Omschrijving": Persoon opslaan in DDB
    • "Runtime": Selecteer "Java 8"
    • "Uploaden": Klik "Uploaden" knop en selecteer het jar-bestand van de lambda-applicatie
  • "Handler": com.baeldung.lambda.dynamodb.SavePersonHandler
  • "Rol": Selecteer "Maak een aangepaste rol"
  • Een nieuw venster zal verschijnen en het configureren van de IAM-rol voor lambda-uitvoering en we moeten de DynamoDB-beurzen erin toevoegen. Als u klaar bent, klikt u op "Toestaan" knop
  • Klik "De volgende" knop
  • "Recensie": Bekijk de configuratie
  • Klik "Create-functie" knop

7. Testen van de Lambda-functie

De volgende stap is om de lambda-functie te testen:

  • Klik op de "Test" knop
  • De "Invoertestgebeurtenis" venster wordt weergegeven. Hier geven we de JSON-invoer voor ons verzoek:
{"id": 1, "firstName": "John", "lastName": "Doe", "age": 30, "address": "Verenigde Staten"}
  • Klik "Opslaan en testen" of "Sparen" knop
  • De output is te zien op "Uitvoeringsresultaat" sectie:
{"message": "Succesvol opgeslagen !!!" }
  • We moeten ook in DynamoDB controleren of het record bewaard blijft:
    • Ga naar Beheerconsole "DynamoDB"
    • Selecteer de tafel "Persoon"
    • Selecteer de "Artikelen" tabblad
    • Hier kunt u de gegevens van de persoon zien die op verzoek aan de lambda-applicatie zijn doorgegeven
  • Het verzoek wordt dus met succes verwerkt door onze lambda-applicatie

8. Conclusie

In dit korte artikel hebben we geleerd hoe je Lambda-applicatie kunt maken met DynamoDB en Java 8. De gedetailleerde instructies zouden je een voorsprong moeten geven bij het opzetten van alles.

En, zoals altijd, is de volledige broncode voor de voorbeeldapp te vinden op Github.


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