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.