Heim >Java >javaLernprogramm >So erstellen, veröffentlichen und verwenden Sie Ebenen für Java Lambda-Funktionen

So erstellen, veröffentlichen und verwenden Sie Ebenen für Java Lambda-Funktionen

WBOY
WBOYOriginal
2024-07-18 13:59:57720Durchsuche

How to create, publish and use layers for Java Lambda functions

Einführung

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.

Was ist die Lambda-Schicht?

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.

Vorteile der Verwendung der Lambda-Schicht

Es gibt mehrere Gründe, warum Sie die Verwendung von Ebenen in Betracht ziehen könnten:

  • Um die Größe Ihrer Bereitstellungspakete zu reduzieren. Anstatt alle Ihre Funktionsabhängigkeiten zusammen mit Ihrem Funktionscode in Ihr Bereitstellungspaket aufzunehmen, platzieren Sie sie in einer Ebene. Dadurch bleiben die Bereitstellungspakete klein und organisiert.
  • Um die Kernfunktionslogik von Abhängigkeiten zu trennen. Mit Ebenen können Sie Ihre Funktionsabhängigkeiten unabhängig von Ihrem Funktionscode aktualisieren und umgekehrt. Dies fördert die Trennung von Belangen und hilft Ihnen, sich auf Ihre Funktionslogik zu konzentrieren.
  • Um Abhängigkeiten über mehrere Funktionen hinweg zu teilen. Nachdem Sie eine Ebene erstellt haben, können Sie sie auf eine beliebige Anzahl von Funktionen in Ihrem Konto anwenden. Ohne Ebenen müssen Sie in jedem einzelnen Bereitstellungspaket dieselben Abhängigkeiten einschließen.
  • Um den Code-Editor der Lambda-Konsole zu verwenden. Der Code-Editor ist ein nützliches Tool zum schnellen Testen kleinerer Funktionscode-Updates. Sie können den Editor jedoch nicht verwenden, wenn die Größe Ihres Bereitstellungspakets zu groß ist. Durch die Verwendung von Ebenen reduzieren Sie die Paketgröße und können die Nutzung des Code-Editors freischalten.

So erstellen, veröffentlichen und verwenden Sie Ebenen für Java 21 Lambda-Funktionen mit AWS CLI v2 und der SAM-Vorlage

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:

  • aws-lambda-java-core
  • aws-lambda-java-events
  • org-crac
  • slf4j-simple
  • jackson-dataformat-xml

Um die Lambda-Ebene zu erstellen, benötigen wir:

  • Java 21-Laufzeit
  • Maven-Version (3.8.6 oder höher), die Java 21-Anwendungen erstellen und verpacken kann
  • AWS CLI v2

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:

  • mkdir java
  • mkdir java/lib
  • cp -r target/aws-pure-java-21-common-lambda-layer-1.0.0-SNAPSHOT.jar java/lib/
  • zip -r aws-pure-java-21-common-lambda-layer-content.zip java

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:

  • when using AWS CLI v2 and invoking aws lambda create-function command add --layers paramater with layer ARN like arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:layer:aws-pure-java-21-common-lambda-layer:1
  • when using AWS SAM template like we'll explore in our next article (here is the concrete example) add Layers parameter to the Lambda function like this:
    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

Conclusion

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn