

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

# Kustomisasi serialisasi untuk fungsi Lambda Java
<a name="java-custom-serialization"></a>

[Runtime terkelola Lambda Java](lambda-java.md#java-runtimes) mendukung serialisasi khusus untuk acara JSON. Serialisasi khusus dapat menyederhanakan kode Anda dan berpotensi meningkatkan kinerja.

**Topics**
+ [Kapan menggunakan serialisasi khusus](#custom-serialization-use-cases)
+ [Menerapkan serialisasi kustom](#implement-custom-serialization)
+ [Menguji serialisasi kustom](#test-custom-serialization)

## Kapan menggunakan serialisasi khusus
<a name="custom-serialization-use-cases"></a>

Ketika fungsi Lambda Anda dipanggil, data peristiwa input perlu dideserialisasi ke objek Java, dan output dari fungsi Anda perlu diserialisasikan 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 layanan, AWS seperti Amazon API Gateway dan Amazon Simple Queue Service (Amazon SQS). Untuk bekerja dengan peristiwa integrasi layanan ini dalam fungsi Anda, tambahkan [aws-java-lambda-events](https://mvnrepository.com/artifact/com.amazonaws/aws-lambda-java-events)dependensi ke proyek Anda. AWS Pustaka ini berisi objek Java yang mewakili peristiwa integrasi layanan ini.

Anda juga dapat menggunakan objek Anda sendiri untuk mewakili acara 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 penangan fungsi Anda mengharapkan `Vehicle` kelas sebagai input, dengan struktur berikut:

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

Namun, payload acara 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 kasus unta (`vehicle-type`,`vehicleID`), Anda harus menggunakan serialisasi khusus.

## Menerapkan serialisasi kustom
<a name="implement-custom-serialization"></a>

Gunakan [Antarmuka Penyedia Layanan](https://docs.oracle.com/javase/tutorial/sound/SPI-intro.html) untuk memuat serializer pilihan Anda alih-alih logika serialisasi default runtime yang dikelola. Anda dapat membuat serial muatan acara JSON Anda langsung ke objek Java, menggunakan antarmuka standar. `RequestHandler`

**Untuk menggunakan serialisasi kustom dalam fungsi Lambda Java Anda**

1. Tambahkan [aws-lambda-java-core](https://mvnrepository.com/artifact/com.amazonaws/aws-lambda-java-core)perpustakaan sebagai dependensi. Pustaka ini mencakup [CustomPojoSerializer](https://github.com/aws/aws-lambda-java-libs/blob/main/aws-lambda-java-core/src/main/java/com/amazonaws/services/lambda/runtime/CustomPojoSerializer.java)antarmuka, bersama dengan definisi antarmuka lain untuk bekerja dengan Java di Lambda.

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

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

   ```
   com.mycompany.vehicles.CustomLambdaSerialzer
   ```

1. Terapkan `CustomPojoSerializer` antarmuka untuk memberikan logika serialisasi kustom Anda.

1. Gunakan `RequestHandler` antarmuka standar dalam fungsi Lambda Anda. Runtime terkelola akan menggunakan serializer kustom Anda.

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

## Menguji serialisasi kustom
<a name="test-custom-serialization"></a>

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 payload acara JSON yang ingin Anda panggil fungsi Anda lalu panggil file. AWS SAMCLI

1. Jalankan perintah [sam local invoke](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-local-invoke.html ) untuk memanggil fungsi Anda secara lokal. Contoh:

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

Untuk informasi selengkapnya, lihat [Memanggil fungsi Lambda secara lokal](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-using-invoke.html) dengan. AWS SAM