AWS Lambda Menggunakan DynamoDB Dengan Java

1. Perkenalan

AWS Lambda adalah layanan komputasi tanpa server yang disediakan oleh Amazon Web Services dan WS DynamoDB adalah layanan database NoSQL yang juga disediakan oleh Amazon.

Menariknya, DynamoDB mendukung penyimpanan dokumen dan penyimpanan nilai kunci serta dikelola sepenuhnya oleh AWS.

Sebelum kita mulai, perhatikan bahwa tutorial ini membutuhkan akun AWS yang valid (Anda dapat membuatnya di sini). Selain itu, sebaiknya Anda membaca artikel AWS Lambda dengan Java terlebih dahulu.

2. Ketergantungan Maven

Untuk mengaktifkan lambda, kita memerlukan dependensi berikut yang dapat ditemukan di Maven Central:

 com.amazonaws aws-lambda-java-core 1.1.0  

Untuk menggunakan sumber daya AWS yang berbeda, kami memerlukan ketergantungan berikut yang juga dapat ditemukan di Maven Central:

 com.amazonaws aws-lambda-java-events 1.3.0  

Dan untuk membangun aplikasinya, kita akan menggunakan Plugin Maven Shade:

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

3. Kode Lambda

Ada beberapa cara berbeda untuk membuat penangan dalam aplikasi lambda:

  • MethodHandler
  • RequestHandler
  • RequestStreamHandler

Kami akan menggunakan antarmuka RequestHandler di aplikasi kami. Kami akan menerima PersonRequest dalam format JSON, dan responsnya adalah PersonResponse juga dalam format JSON :

public class PersonRequest { private String firstName; private String lastName; // standard getters and setters } 
public class PersonResponse { private String message; // standard getters and setters }

Berikutnya adalah kelas titik masuk kami yang akan mengimplementasikan antarmuka RequestHandler sebagai:

public class SavePersonHandler implements RequestHandler { private DynamoDB dynamoDb; private String DYNAMODB_TABLE_NAME = "Person"; private Regions REGION = Regions.US_WEST_2; public PersonResponse handleRequest( PersonRequest personRequest, Context context) { this.initDynamoDbClient(); persistData(personRequest); PersonResponse personResponse = new PersonResponse(); personResponse.setMessage("Saved Successfully!!!"); return personResponse; } private PutItemOutcome persistData(PersonRequest personRequest) throws ConditionalCheckFailedException { return this.dynamoDb.getTable(DYNAMODB_TABLE_NAME) .putItem( new PutItemSpec().withItem(new Item() .withString("firstName", personRequest.getFirstName()) .withString("lastName", personRequest.getLastName()); } private void initDynamoDbClient() { AmazonDynamoDBClient client = new AmazonDynamoDBClient(); client.setRegion(Region.getRegion(REGION)); this.dynamoDb = new DynamoDB(client); } } 

Di sini, ketika kita mengimplementasikan antarmuka RequestHandler , kita perlu mengimplementasikan handleRequest () untuk pemrosesan permintaan yang sebenarnya. Adapun kode lainnya, kami memiliki:

  • Objek PersonRequest - yang akan berisi nilai permintaan yang diteruskan dalam format JSON
  • Objek konteks - digunakan untuk mendapatkan informasi dari lingkungan eksekusi lambda
  • PersonResponse - yang merupakan objek respons untuk permintaan lambda

Saat membuat objek DynamoDB, pertama-tama kita akan membuat objek AmazonDynamoDBClient dan menggunakannya untuk membuat objek DynamoDB . Perhatikan bahwa wilayah tersebut wajib.

Untuk menambahkan item dalam tabel DynamoDB, kita akan menggunakan objek PutItemSpec - dengan menentukan jumlah kolom dan nilainya.

Kami tidak memerlukan skema standar apa pun dalam tabel DynamoDB, kami hanya perlu menentukan nama kolom Kunci Utama, yaitu "id" dalam kasus kami.

4. Membangun File Penerapan

Untuk membangun aplikasi lambda, kita perlu menjalankan perintah Maven berikut:

mvn clean package shade:shade

Aplikasi Lambda akan dikompilasi dan dikemas ke dalam file jar di bawah folder target.

5. Membuat Tabel DynamoDB

Ikuti langkah-langkah berikut untuk membuat tabel DynamoDB:

  • Masuk ke Akun AWS
  • Klik "DynamoDB" yang dapat ditemukan di bawah "Semua Layanan"
  • Halaman ini akan menampilkan tabel DynamoDB yang sudah dibuat (jika ada)
  • Klik tombol "Buat Tabel"
  • Berikan "Nama tabel" dan "Kunci Utama" dengan jenis datanya sebagai "Nomor"
  • Klik tombol "Buat"
  • Tabel akan dibuat

6. Menciptakan Fungsi Lambda

Ikuti langkah-langkah berikut untuk membuat fungsi Lambda:

  • Masuk ke Akun AWS
  • Klik "Lambda" yang dapat ditemukan di bawah "Semua Layanan"
  • Halaman ini akan menampilkan Fungsi Lambda yang sudah dibuat (jika ada) atau tidak ada fungsi lambda yang dibuat, klik "Mulai Sekarang"
  • "Pilih cetak biru" -> Pilih " Fungsi Kosong"
  • "Konfigurasi pemicu" -> Klik tombol "Berikutnya"
  • "Konfigurasi fungsi"
    • “Nama” : SavePerson
    • “Description” : Simpan Orang ke DDB
    • “Runtime” : Pilih “Java 8”
    • “Unggah” : Klik tombol “Unggah” dan pilih file jar dari aplikasi lambda
  • “Handler” : com.baeldung.lambda.dynamodb.SavePersonHandler
  • “Peran” : Pilih “Buat peran khusus”
  • Sebuah jendela baru akan muncul dan memungkinkan konfigurasi peran IAM untuk eksekusi lambda dan kita perlu menambahkan hibah DynamoDB di dalamnya. Setelah selesai, klik tombol "Izinkan"
  • Klik tombol "Berikutnya"
  • “Review” : Tinjau konfigurasi
  • Klik tombol "Buat fungsi"

7. Menguji Fungsi Lambda

Langkah selanjutnya adalah menguji fungsi lambda:

  • Klik “Test” tombol
  • Jendela "Input test event" akan ditampilkan. Di sini, kami akan memberikan masukan JSON untuk permintaan kami:
{ "id": 1, "firstName": "John", "lastName": "Doe", "age": 30, "address": "United States" }
  • Klik tombol "Simpan dan uji" atau "Simpan"
  • Keluarannya bisa dilihat di bagian "Hasil eksekusi" :
{ "message": "Saved Successfully!!!" }
  • Kami juga perlu memeriksa di DynamoDB bahwa catatan tersebut tetap ada:
    • Buka Konsol Manajemen “DynamoDB”
    • Pilih tabel "Orang"
    • Pilih tab "Item"
    • Di sini Anda dapat melihat detail orang yang diteruskan dalam permintaan ke aplikasi lambda
  • Jadi permintaan berhasil diproses oleh aplikasi lambda kami

8. Kesimpulan

Dalam artikel singkat ini, kita telah mempelajari cara membuat aplikasi Lambda dengan DynamoDB dan Java 8. Instruksi terperinci akan memberi Anda permulaan dalam mengatur semuanya.

Dan, seperti biasa, kode sumber lengkap untuk aplikasi contoh dapat ditemukan di Github.