Heim >Java >javaLernprogramm >So erstellen, veröffentlichen und verwenden Sie Ebenen für Java Lambda-Funktionen
Als Vorbereitung auf die Untersuchung, wie sich die Verwendung der Lambda-Schichten mit der Lambda-Funktion und der Java 21-Laufzeit auf Kaltstartzeiten (mit und ohne Aktivierung von SnapStart) und Warmstartzeiten auswirkt, möchte ich eine Einführung in die Erstellung geben. Veröffentlichen und verwenden Sie Ebenen für Java (21) Lambda-Funktion in der SAM-Vorlage.
Eine Lambda-Ebene ist ein ZIP-Dateiarchiv, das ergänzenden Code oder Daten enthält. Ebenen enthalten normalerweise Bibliotheksabhängigkeiten, eine benutzerdefinierte Laufzeit oder Konfigurationsdateien.
Es gibt mehrere Gründe, warum Sie die Verwendung von Ebenen in Betracht ziehen könnten:
Zur Erkundung verwenden wir die Beispielanwendung zum Erstellen der Lambda-Schicht mit der Java 21-Laufzeitumgebung, die die folgenden Abhängigkeiten in die Schicht packt:
Um die Lambda-Ebene zu erstellen, benötigen wir:
Auf der Lambda-Ebene müssen Abhängigkeiten in ein einziges Uber-Jar integriert werden. Zu diesem Zweck nutzen wir zwei Plugins in der pom.xml. Das Maven-Compiler-Plugin kompiliert den Quellcode. Das Maven-Shade-Plugin verpackt unsere Artefakte in einem einzigen Uber-Jar. Dann müssen wir ausführen
mvn clean package
um unsere Anwendung zu erstellen.
Wenn wir einer Lambda-Funktion mit Java-Laufzeit eine Ebene hinzufügen, lädt Lambda den Ebeneninhalt in das Verzeichnis /opt dieser Ausführungsumgebung. Für jede Lambda-Laufzeit enthält die PATH-Variable bereits bestimmte Ordnerpfade im /opt-Verzeichnis. Um sicherzustellen, dass die PATH-Variable unseren Layer-Inhalt aufnimmt, sollten unsere Layer-.zip-Datei ihre Abhängigkeiten in den folgenden Ordnerpfaden haben: java/lib
Zum Beispiel hat die resultierende Layer-.zip-Datei, die wir mit unserer Beispielanwendung erstellen, die folgende Verzeichnisstruktur:
aws-pure-java-21-common-lambda-layer-content.zip └ java └ lib └ aws-pure-java-21-common-lambda-layer-1.0.0-SNAPSHOT.jar
was durch Ausführen der folgenden Befehle unter Linux erreicht werden kann:
Um diese Lambda-Ebene mit der Java 21-Laufzeit zu veröffentlichen, müssen wir den folgenden Befehl mit AWS CLI v2 ausführen:
aws lambda publish-layer-version --layer-name aws-pure-java-21-common-lambda-layer --zip-file fileb://aws-pure-java-21-common-lambda-layer-content.zip --compatible-runtimes java21
Mit dem zusätzlichen Parameter --kompatible-architectures „x86“ können wir die kompatiblen Hardwarearchitekturen wie x86 (Standard) oder arm64 definieren.
Als Antwort liefert AWS den Lambda-Layer-ARN, auf den wir später verweisen müssen, der wie folgt aussieht:
arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:layer:aws-pure-java-21-common-lambda-layer:1
Bitte beachten Sie, dass der letzte Parameter die Lambda-Layer-Version ist, die bei der ersten Veröffentlichung des Layers immer 1 ist und bei nachfolgenden Aktualisierungen des vorhandenen Lambda-Layers um eins erhöht wird.
Um die Ebene an Ihre Funktion anzuhängen, können wir Folgendes tun:
Type: AWS::Serverless::Function Properties: FunctionName: GetProductByIdWithPureJava21LambdaWithCommonLayer AutoPublishAlias: liveVersion Layers: - !Sub arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:layer:aws-pure-java-21-common-lambda-layer:1 Handler: software.amazonaws.example.product.handler.GetProductByIdHandler::handleRequest
In this article I gave an introduction about how to create, publish and use layers for Java 21 Lambda functions AWS CLI v2 and the SAM template. In the next article published under the AWS Lambda SnapStart series I'll explore how the usage of the (different) Lambda layers with function having Java 21 runtime affects the cold (with and without enabling SnapStart) and warm start times.
Das obige ist der detaillierte Inhalt vonSo erstellen, veröffentlichen und verwenden Sie Ebenen für Java Lambda-Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!