AWS Lambda Menggunakan DynamoDB Dengan Java

1. Pengenalan

AWS Lambda adalah perkhidmatan pengkomputeran tanpa pelayan yang disediakan oleh Amazon Web Services dan WS DynamoDB adalah perkhidmatan pangkalan data NoSQL yang juga disediakan oleh Amazon.

Menariknya, DynamoDB menyokong kedua-dua kedai dokumen dan kunci-nilai dan diuruskan sepenuhnya oleh AWS.

Sebelum kita mulakan, perhatikan bahawa tutorial ini memerlukan akaun AWS yang sah (anda boleh membuatnya di sini). Juga, ada baiknya anda membaca artikel AWS Lambda dengan Java terlebih dahulu.

2. Pergantungan Maven

Untuk mengaktifkan lambda, kita memerlukan kebergantungan berikut yang boleh didapati di Maven Central:

 com.amazonaws aws-lambda-java-core 1.1.0  

Untuk menggunakan sumber AWS yang berbeza, kita memerlukan kebergantungan berikut yang juga terdapat di Maven Central:

 com.amazonaws aws-lambda-java-events 1.3.0  

Dan untuk membina aplikasinya, kami akan menggunakan Maven Shade Plugin:

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

3. Kod Lambda

Terdapat pelbagai cara untuk membuat pengendali dalam aplikasi lambda:

  • Kaedah Pengendali
  • PermintaanHandler
  • PermintaanStreamHandler

Kami akan menggunakan antara muka RequestHandler dalam 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 }

Seterusnya adalah kelas titik masuk kami yang akan melaksanakan antara muka 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 melaksanakan antara muka RequestHandler , kita perlu menerapkan handleRequest () untuk pemprosesan permintaan yang sebenarnya. Bagi kod yang lain, kami mempunyai:

  • Objek PersonRequest - yang akan mengandungi nilai permintaan yang diluluskan dalam format JSON
  • Objek konteks - digunakan untuk mendapatkan maklumat dari persekitaran pelaksanaan lambda
  • PersonResponse - yang merupakan objek tindak balas untuk permintaan lambda

Semasa membuat objek DynamoDB, pertama-tama kita akan membuat objek AmazonDynamoDBClient dan menggunakannya untuk membuat objek DynamoDB . Perhatikan bahawa wilayah ini adalah wajib.

Untuk menambahkan item dalam jadual DynamoDB, kami akan menggunakan objek PutItemSpec - dengan menentukan jumlah lajur dan nilainya.

Kami tidak memerlukan skema yang telah ditentukan dalam jadual DynamoDB, kami hanya perlu menentukan nama lajur Kunci Utama, yang "id" dalam kes kami.

4. Membina Fail Penyebaran

Untuk membina aplikasi lambda, kita perlu melaksanakan perintah Maven berikut:

mvn clean package shade:shade

Aplikasi lambda akan disusun dan dikemas ke dalam fail jar di bawah folder sasaran.

5. Membuat Jadual DynamoDB

Ikuti langkah-langkah ini untuk membuat jadual DynamoDB:

  • Log masuk ke Akaun AWS
  • Klik "DynamoDB" yang boleh diletakkan di bawah "Semua Perkhidmatan"
  • Halaman ini akan menunjukkan jadual DynamoDB yang sudah dibuat (jika ada)
  • Klik butang "Buat Jadual"
  • Berikan "Nama jadual" dan "Kunci Utama" dengan jenis datanya sebagai "Nombor"
  • Klik pada butang "Buat"
  • Jadual akan dibuat

6. Membuat Fungsi Lambda

Ikuti langkah-langkah ini untuk membuat fungsi Lambda:

  • Log masuk ke Akaun AWS
  • Klik "Lambda" yang boleh diletakkan di bawah "Semua Perkhidmatan"
  • Halaman ini akan menunjukkan Fungsi Lambda yang sudah dibuat (jika ada) atau tidak ada fungsi lambda yang dibuat, klik pada "Bermula Sekarang"
  • "Pilih cetak biru" -> Pilih " Fungsi Kosong"
  • "Konfigurasikan pemicu" -> Klik butang "Seterusnya"
  • "Konfigurasi fungsi"
    • "Nama" : SavePerson
    • "Penerangan" : Simpan Orang ke DDB
    • "Runtime" : Pilih "Java 8"
    • "Muat naik" : Klik butang "Muat naik" dan pilih fail jar aplikasi lambda
  • "Penangan" : com.baeldung.lambda.dynamodb.SavePersonHandler
  • "Peran" : Pilih "Buat peran khusus"
  • Tetingkap baru akan muncul dan akan membolehkan mengkonfigurasi peranan IAM untuk pelaksanaan lambda dan kita perlu menambahkan geran DynamoDB di dalamnya. Setelah selesai, klik "Benarkan" butang
  • Klik butang "Seterusnya"
  • "Review" : Tinjau konfigurasi
  • Klik butang "Buat fungsi"

7. Menguji Fungsi Lambda

Langkah seterusnya adalah menguji fungsi lambda:

  • Klik "Uji" butang
  • The "Input acara ujian" tetingkap akan dipaparkan. Di sini, kami akan memberikan input JSON untuk permintaan kami:
{ "id": 1, "firstName": "John", "lastName": "Doe", "age": 30, "address": "United States" }
  • Klik butang "Simpan dan uji" atau "Simpan"
  • Hasilnya dapat dilihat pada bagian "Hasil pelaksanaan" :
{ "message": "Saved Successfully!!!" }
  • Kita juga perlu memeriksa di DynamoDB bahawa rekod itu berterusan:
    • Pergi ke "DynamoDB" Management Console
    • Pilih jadual "Orang"
    • Pilih tab "Item"
    • Di sini anda dapat melihat perincian orang yang diserahkan sebagai permintaan ke permohonan lambda
  • Oleh itu, permintaan berjaya diproses oleh aplikasi lambda kami

8. Kesimpulannya

Dalam artikel ringkas ini, kami telah belajar bagaimana membuat aplikasi Lambda dengan DynamoDB dan Java 8. Arahan terperinci harus memberi anda awal dalam mengatur semuanya.

Dan, seperti biasa, kod sumber penuh untuk aplikasi contoh boleh didapati di Github.