View a markdown version of this page

Personalizzare la serializzazione per le funzioni Lambda Java - AWS Lambda

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Personalizzare la serializzazione per le funzioni Lambda Java

I runtime gestiti da Java di Lambda supportano la serializzazione personalizzata per gli eventi JSON. La serializzazione personalizzata può semplificare il codice e potenzialmente migliorare le prestazioni.

Quando usare la serializzazione personalizzata

Quando viene richiamata la funzione Lambda, i dati degli eventi di input devono essere deserializzati in un oggetto Java e l'output della funzione deve essere nuovamente serializzato in un formato che può essere restituito come risposta della funzione. I runtime gestiti Lambda Java forniscono funzionalità di serializzazione e deserializzazione predefinite che funzionano bene per la gestione dei payload degli eventi da vari AWS servizi, come Amazon API Gateway e Amazon Simple Queue Service (Amazon SQS). Per utilizzare questi eventi di integrazione dei servizi nella tua funzione, aggiungi la dipendenza aws-java-lambda-events al tuo progetto. Questa AWS libreria contiene oggetti Java che rappresentano questi eventi di integrazione dei servizi.

Puoi anche usare i tuoi oggetti per rappresentare l'evento JSON che passi alla tua funzione Lambda. Il runtime gestito prova a serializzare il JSON su una nuova istanza dell'oggetto con il suo comportamento predefinito. Se il serializzatore predefinito non ha il comportamento desiderato per il tuo caso d'uso, usa la serializzazione personalizzata.

Supponiamo, ad esempio, che l'handler di funzioni si aspetti una classe Vehicle come input, con la seguente struttura:

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

Tuttavia, il payload dell'evento JSON ha il seguente aspetto:

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

In questo scenario, la serializzazione predefinita nel runtime gestito prevede che i nomi delle proprietà JSON corrispondano ai nomi delle proprietà della classe Java con notazione a cammello (vehicleType, vehicleId). Poiché i nomi delle proprietà nell'evento JSON non sono in notazione a cammello (vehicle-type, vehicleID), è necessario utilizzare la serializzazione personalizzata.

Implementazione della serializzazione personalizzata

Utilizza un'interfaccia del fornitore di servizi per caricare un serializzatore a tua scelta anziché la logica di serializzazione predefinita del runtime gestito. È possibile serializzare i payload di eventi JSON direttamente in oggetti Java, utilizzando l'interfaccia RequestHandler standard.

Per utilizzare la serializzazione personalizzata nella funzione Java per Lambda
  1. Aggiungi la libreria aws-lambda-java-core come dipendenza. Questa libreria include l'CustomPojoSerializerinterfaccia, insieme ad altre definizioni di interfaccia per lavorare con Java in Lambda.

  2. Crea un file denominato com.amazonaws.services.lambda.runtime.CustomPojoSerializer nella directory src/main/resources/META-INF/services/ del progetto.

  3. In questo file, specifica il nome completo dell'implementazione del serializzatore personalizzato, che deve implementare l'interfaccia CustomPojoSerializer. Esempio:

    com.mycompany.vehicles.CustomLambdaSerialzer
  4. Implementa l'interfaccia CustomPojoSerializer per fornire la tua logica di serializzazione personalizzata.

  5. Usa l'interfaccia RequestHandler standard nella tua funzione Lambda. Il runtime gestito utilizzerà il serializzatore personalizzato.

Per altri esempi su come implementare la serializzazione personalizzata utilizzando librerie popolari come FastJSON, Gson, Moshi e jackson-jr, vedi l'esempio di serializzazione personalizzata nel repository. https://github.com/aws/aws-lambda-java-libs/tree/main/samples/custom-serialization AWS GitHub

Test della serializzazione personalizzata

Verifica la tua funzione per assicurarti che la logica di serializzazione e deserializzazione funzioni come previsto. Puoi usare l'interfaccia a riga di AWS Serverless Application Model comando () per emulare l'invocazione del tuo payload Lambda.AWS SAMCLI Questo può aiutarti a testare e iterare rapidamente la tua funzione man mano che introduci un serializzatore personalizzato.

  1. Crea un file con il payload dell'evento JSON con cui desideri richiamare la tua funzione, quindi chiama il. AWS SAMCLI

  2. Esegui il comando sam local invoke per richiamare la tua funzione in locale. Esempio:

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

Per ulteriori informazioni, consulta Invocare localmente le funzioni Lambda con. AWS SAM