View a markdown version of this page

Sesuaikan serialisasi untuk fungsi Lambda Java - AWS Lambda

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Sesuaikan serialisasi untuk fungsi Lambda Java

Runtime yang dikelola Lambda Java mendukung serialisasi khusus untuk acara JSON. Serialisasi khusus dapat menyederhanakan kode Anda dan berpotensi meningkatkan kinerja.

Kapan menggunakan serialisasi khusus

Ketika fungsi Lambda Anda dipanggil, data peristiwa input perlu dideserialisasi menjadi objek Java, dan output dari fungsi Anda perlu diserialisasi kembali ke format yang dapat dikembalikan sebagai respons fungsi. Runtime terkelola Lambda Java menyediakan kemampuan serialisasi dan deserialisasi default yang berfungsi dengan baik untuk menangani muatan peristiwa dari berbagai AWS layanan, seperti Amazon API Gateway dan Amazon Simple Queue Service (Amazon SQS). Untuk bekerja dengan peristiwa integrasi layanan ini dalam fungsi Anda, tambahkan dependensi aws-java-lambda-events ke proyek Anda. P AWS ustaka ini berisi objek Java yang mewakili peristiwa integrasi layanan ini.

Anda juga dapat menggunakan objek Anda sendiri untuk mewakili peristiwa JSON yang Anda berikan ke fungsi Lambda Anda. Runtime terkelola mencoba membuat serial JSON ke instance baru objek Anda dengan perilaku defaultnya. Jika serializer default tidak memiliki perilaku yang diinginkan untuk kasus penggunaan Anda, gunakan serialisasi khusus.

Misalnya, asumsikan bahwa handler fungsi Anda mengharapkan Vehicle kelas sebagai input, dengan struktur berikut:

public class Vehicle { private String vehicleType; private long vehicleId; }

Namun, payload peristiwa JSON terlihat seperti ini:

{ "vehicle-type": "car", "vehicleID": 123 }

Dalam skenario ini, serialisasi default dalam runtime terkelola mengharapkan nama properti JSON cocok dengan nama properti kelas Java case unta (vehicleType,vehicleId). Karena nama properti dalam acara JSON tidak dalam camelcase (vehicle-type,vehicleID), Anda harus menggunakan serialisasi khusus.

Menerapkan serialisasi khusus

Gunakan Antarmuka Penyedia Layanan untuk memuat serializer pilihan Anda alih-alih logika serialisasi default runtime terkelola. Anda dapat membuat serial muatan peristiwa JSON Anda langsung ke objek Java, menggunakan antarmuka standarRequestHandler.

Untuk menggunakan serialisasi khusus dalam fungsi Lambda Java Anda
  1. Tambahkan pustaka aws-lambda-java-core sebagai dependensi. Pustaka ini mencakup CustomPojoSerializer antarmuka, bersama dengan definisi antarmuka lainnya untuk bekerja dengan Java di Lambda.

  2. Buat file bernama com.amazonaws.services.lambda.runtime.CustomPojoSerializer di src/main/resources/META-INF/services/ direktori proyek Anda.

  3. Dalam file ini, tentukan nama yang memenuhi syarat dari implementasi serializer kustom Anda, yang harus mengimplementasikan CustomPojoSerializer antarmuka. Contoh:

    com.mycompany.vehicles.CustomLambdaSerialzer
  4. Menerapkan CustomPojoSerializer antarmuka untuk menyediakan logika serialisasi kustom Anda.

  5. Gunakan RequestHandler antarmuka standar dalam fungsi Lambda Anda. Runtime yang dikelola akan menggunakan serializer kustom Anda.

Untuk contoh lebih lanjut tentang cara mengimplementasikan serialisasi khusus menggunakan pustaka populer seperti FastJSON, Gson, Moshi, dan jackson-jr, lihat sampel serialisasi khusus di repositori. https://github.com/aws/aws-lambda-java-libs/tree/main/samples/custom-serialization AWS GitHub

Menguji serialisasi kustom

Uji fungsi Anda untuk memastikan bahwa logika serialisasi dan deserialisasi Anda berfungsi seperti yang diharapkan. Anda dapat menggunakan AWS Serverless Application Model Command Line Interface (AWS SAMCLI) untuk meniru pemanggilan payload Lambda Anda. Ini dapat membantu Anda dengan cepat menguji dan mengulangi fungsi Anda saat Anda memperkenalkan serializer khusus.

  1. Buat file dengan muatan acara JSON yang ingin Anda panggil fungsi Anda lalu panggil. AWS SAMCLI

  2. Jalankan perintah sam local invoke untuk memanggil fungsi Anda secara lokal. Contoh:

    sam local invoke -e src/test/resources/event.json

Untuk informasi selengkapnya, lihat Mem anggil fungsi Lambda secara lokal dengan. AWS SAM