AWS Lambda pomoću DynamoDB-a s Javom

1. Uvod

AWS Lambda je računalna usluga bez poslužitelja koju pruža Amazon Web Services, a WS DynamoDB je usluga baze podataka NoSQL koju također pruža Amazon.

Zanimljivo je da DynamoDB podržava i spremište dokumenata i spremište ključeva i vrijednosti te njime u potpunosti upravlja AWS.

Prije nego što započnemo, imajte na umu da ovaj vodič zahtijeva valjani AWS račun (možete ga stvoriti ovdje). Također je dobro prvo pročitati članak AWS Lambda s Javom.

2. Ovisnosti Mavena

Da bismo omogućili lambdu, potrebna nam je sljedeća ovisnost koja se može naći na Maven Central:

 com.amazonaws aws-lambda-java-core 1.1.0 

Da bismo koristili različite AWS resurse, potrebna nam je sljedeća ovisnost koja se također može naći na Maven Central:

 com.amazonaws aws-lambda-java-events 1.3.0 

A za izgradnju aplikacije koristit ćemo dodatak Maven Shade:

 org.apache.maven.plugins maven-shadow-plugin 3.0.0 false package shadow 

3. Lambda kod

Postoje različiti načini stvaranja rukovatelja u lambda aplikaciji:

  • MethodHandler
  • RequestHandler
  • RequestStreamHandler

Koristit ćemo RequestHandler sučelje u našoj aplikaciji. Prihvatit ćemo PersonRequest u JSON formatu, a odgovor će biti PersonResponse također u JSON format:

javna klasa PersonRequest {private String firstName; private String lastName; // standardni geteri i postavljači} 
javna klasa PersonResponse {poruka privatnog niza; // standardni geteri i postavljači}

Sljedeća je naša klasa ulazne točke koju ćemo implementirati RequestHandler sučelje kao:

javna klasa SavePersonHandler implementira RequestHandler {private DynamoDB dynamoDb; private String DYNAMODB_TABLE_NAME = "Osoba"; privatne regije REGION = Regije.US_WEST_2; javni PersonResponse handleRequest (PersonRequest personRequest, kontekst konteksta) {this.initDynamoDbClient (); persistData (personRequest); PersonResponse personResponse = novi PersonResponse (); personResponse.setMessage ("Uspješno spremljeno !!!"); vratiti personResponse; } privatni PutItemOutcome persistData (PersonRequest personRequest) baca ConditionalCheckFailedException {return this.dynamoDb.getTable (DYNAMODB_TABLE_NAME) .putItem (new PutItemSpec (). withItem (new Item () .withString ("firstNamet", FirstRequest. "lastName", personRequest.getLastName ());} private void initDynamoDbClient () {AmazonDynamoDBClient client = new AmazonDynamoDBClient (); client.setRegion (Region.getRegion (REGION)); this.dynamoDb = new DynamoDB (client); 

Ovdje kada implementiramo RequestHandler sučelje, moramo implementirati handleRequest () za stvarnu obradu zahtjeva. Što se tiče ostatka koda, imamo:

  • PersonRequest objekt - koji će sadržavati vrijednosti zahtjeva proslijeđene u JSON formatu
  • Kontekst objekt - koristi se za dobivanje informacija iz okoline izvođenja lambda
  • PersonResponse - koji je objekt odgovora za lambda zahtjev

Prilikom stvaranja DynamoDB objekta, prvo ćemo stvoriti AmazonDynamoDBClient objekt i upotrijebite ga za stvaranje a DynamoDB objekt. Imajte na umu da regija je obavezno.

Za dodavanje stavki u DynamoDB tablicu koristit ćemo a PutItemSpec objekt - specificiranjem broja stupaca i njihovih vrijednosti.

Ne treba nam nikakva unaprijed definirana shema u DynamoDB tablici, samo treba definirati naziv stupca Primarni ključ, koji je "iskaznica" u našem slučaju.

4. Izrada datoteke za implementaciju

Da bismo izgradili lambda aplikaciju, moramo izvršiti sljedeću Mavenovu naredbu:

mvn čisti paket nijansa: hlad

Lambda aplikacija sastavit će se i upakirati u staklenka datoteka ispod ciljne mape.

5. Izrada DynamoDB tablice

Slijedite ove korake za izradu DynamoDB tablice:

  • Prijavite se na AWS račun
  • Klik "DynamoDB" koji se mogu nalaziti pod "Sve usluge"
  • Na ovoj će stranici biti prikazane već stvorene DynamoDB tablice (ako postoje)
  • Klik "Stvori tablicu" dugme
  • Pružiti "Naziv tablice" i "Osnovni ključ" sa svojim tipom podataka kao "Broj"
  • Kliknite na "Stvoriti" dugme
  • Stvorit će se tablica

6. Stvaranje Lambda funkcije

Slijedite ove korake za stvaranje Lambda funkcije:

  • Prijavite se na AWS račun
  • Klik "Lambda" koji se mogu nalaziti pod "Sve usluge"
  • Ova će stranica prikazati već stvorenu Lambda funkciju (ako postoji) ili nisu stvorene lambda funkcije, kliknite na "Započni sada"
  • “Odaberite nacrt” -> Odaberite “Prazna funkcija "
  • "Konfiguriranje okidača" -> Kliknite "Sljedeći" dugme
  • “Konfiguriranje funkcije”
    • "Ime": SavePerson
    • "Opis": Spremi osobu u DDB
    • "Runtime": Odaberi "Java 8"
    • "Učitaj": Kliknite "Učitaj" gumb i odaberite jar datoteku lambda aplikacije
  • "Rukovatelj": com.baeldung.lambda.dynamodb.SavePersonHandler
  • "Uloga": Odaberi "Stvori prilagođenu ulogu"
  • Otvorit će se novi prozor koji će omogućiti konfiguriranje IAM uloge za lambda izvršenje i u njega moramo dodati potpore DynamoDB. Kada završite, kliknite "Dopusti" dugme
  • Klik "Sljedeći" dugme
  • "Pregled": Pregledajte konfiguraciju
  • Klik "Stvori funkciju" dugme

7. Ispitivanje Lambda funkcije

Sljedeći je korak testiranje lambda funkcije:

  • Pritisnite "Test" dugme
  • The "Ulazni testni događaj" prikazat će se prozor. Ovdje ćemo pružiti JSON ulaz za naš zahtjev:
{"id": 1, "firstName": "John", "lastName": "Srna", "age": 30, "address": "United States"}
  • Klik "Spremi i testiraj" ili "Uštedjeti" dugme
  • Izlaz se može vidjeti na "Rezultat izvršenja" odjeljak:
{"message": "Spremljeno uspješno !!!" }
  • Također moramo provjeriti u DynamoDB-u da li se zapis zadržava:
    • Ići Upravljačka konzola "DynamoDB"
    • Odaberite tablicu "Osoba"
    • Odaberite "Predmeti" tab
    • Ovdje možete vidjeti podatke o osobi koji su proslijeđeni u zahtjevu za lambda aplikaciju
  • Dakle, naša lambda aplikacija uspješno obrađuje zahtjev

8. Zaključak

U ovom kratkom članku naučili smo kako stvoriti Lambda aplikaciju s DynamoDB i Javom 8. Detaljne upute trebale bi vam dati prednost u postavljanju svega.

Kao i uvijek, puni izvorni kod za primjer aplikacije možete pronaći na Githubu.