Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Passen Sie die Serialisierung für Lambda-Java-Funktionen an
Die verwalteten Lambda-Java-Laufzeiten unterstützen die benutzerdefinierte Serialisierung für JSON-Ereignisse. Eine benutzerdefinierte Serialisierung kann Ihren Code vereinfachen und möglicherweise die Leistung verbessern.
Themen
Wann sollte die benutzerdefinierte Serialisierung verwendet werden
Wenn Ihre Lambda-Funktion aufgerufen wird, müssen die Eingabeereignisdaten in ein Java-Objekt deserialisiert werden und die Ausgabe Ihrer Funktion muss wieder in ein Format serialisiert werden, das als Antwort der Funktion zurückgegeben werden kann. Die von Lambda Java verwalteten Laufzeiten bieten standardmäßige Serialisierungs- und Deserialisierungsfunktionen, die sich gut für die Verarbeitung von Ereignisnutzlasten verschiedener AWS-Dienste wie Amazon API Gateway und Amazon Simple Queue Service (Amazon SQS) eignen. Um mit diesen Serviceintegrationsereignissen in Ihrer Funktion zu arbeiten, fügen Sie Ihrem Projekt die Abhängigkeit aws-java-lambda-events
Sie können auch Ihre eigenen Objekte verwenden, um den Event-JSON darzustellen, den Sie an Ihre Lambda-Funktion übergeben. Die verwaltete Laufzeit versucht, den JSON mit seinem Standardverhalten in eine neue Instance Ihres Objekts zu serialisieren. Wenn der Standard-Serializer nicht das gewünschte Verhalten für Ihren Anwendungsfall aufweist, verwenden Sie die benutzerdefinierte Serialisierung.
Angenommen, eine Vehicle
-Klasse mit dem Namen besitzt die folgende Verzeichnisstruktur:
public class Vehicle { private String vehicleType; private long vehicleId; }
Die Nutzdaten des JSON-Ereignisses sieht jedoch wie folgt aus:
{ "vehicle-type": "car", "vehicleID": 123 }
In diesem Szenario erwartet die Standard-Serialisierung in der verwalteten Laufzeitumgebung, dass die JSON-Eigenschaftsnamen mit den Eigenschaftsnamen der Java-Klassen (vehicleType
, vehicleId
) in Kamelform übereinstimmen. Da die Eigenschaftsnamen im JSON-Ereignis nicht in Großbuchstaben (vehicle-type
, vehicleID
) geschrieben sind, müssen Sie eine benutzerdefinierte Serialisierung verwenden.
Benutzerdefinierte Serialisierung implementieren
Verwenden Sie ein Service Provider-InterfaceRequestHandler
-Standardschnittstelle können Sie Ihre JSON-Event-Nutzdaten direkt in Java-Objekte serialisieren.
So verwenden Sie die benutzerdefinierte Serialisierung in Ihrer Lambda-Java-Funktion
-
Fügen Sie die aws-lambda-java-core
-Bibliothek als Abhängigkeit hinzu. Diese Bibliothek enthält die CustomPojoSerializer -Schnittstelle sowie andere Schnittstellendefinitionen für die Arbeit mit Java in Lambda. -
Erstellen Sie eine Datei namens
com.amazonaws.services.lambda.runtime.CustomPojoSerializer
im Verzeichnissrc/main/META-INF/services/
Ihres Projekts. -
Geben Sie in dieser Datei den vollqualifizierten Namen Ihrer benutzerdefinierten Serializer-Implementierung an, die die
CustomPojoSerializer
-Schnittstelle implementieren muss. Beispiel:com.mycompany.vehicles.CustomLambdaSerialzer
-
Implementieren Sie die
CustomPojoSerializer
-Schnittstelle, um Ihre benutzerdefinierte Serialisierungslogik bereitzustellen. -
Verwenden Sie die
RequestHandler
-Standardschnittstelle in Ihrer Lambda-Funktion. Die verwaltete Laufzeit verwendet Ihren benutzerdefinierten Serializer.
Weitere Beispiele für die Implementierung einer benutzerdefinierten Serialisierung mit gängigen Bibliotheken wie fastJson, Gson, Moshi und jackson-jr finden Sie im Beispiel für custom-serialization
Testen der benutzerdefinierten Serialisierung
Testen Sie Ihre Funktion, um sicherzustellen, dass Ihre Serialisierungs- und Deserialisierungslogik wie erwartet funktioniert. Sie können die AWS Serverless Application Model-Befehlszeilenschnittstelle (AWS SAM CLI) verwenden, um den Aufruf Ihrer Lambda-Nutzdaten zu emulieren. Dies kann Ihnen helfen, Ihre Funktion schnell zu testen und zu iterieren, wenn Sie einen benutzerdefinierten Serializer einführen.
-
Erstellen Sie eine Datei mit der JSON-Ereignisnutzdaten, mit der Sie Ihre Funktion aufrufen möchten und rufen Sie dann die AWS SAM CLI auf.
-
Führen Sie denselben lokalen Invoke-Befehl aus, um Ihre Funktion lokal aufzurufen. Beispiel:
sam local invoke -e src/test/resources/event.json
Weitere Informationen erhalten Sie unter Lokaler Aufruf von Lambda-Funktionen mit AWS SAM.