Lambda 関数と Java 21 ランタイムによる Lambda レイヤーの使用が、コールド (SnapStart を有効にした場合と有効にしない) およびウォーム スタート時間にどのような影響を与えるかを調査するための準備として、作成方法について紹介したいと思います。 SAM テンプレートの Java (21) Lambda 関数のレイヤーを公開して使用します。
Lambda レイヤーは、補足コードまたはデータを含む .zip ファイル アーカイブです。通常、レイヤーにはライブラリの依存関係、カスタム ランタイム、または構成ファイルが含まれます。
レイヤーの使用を検討する理由はいくつかあります。
調査のために、Java 21 ランタイムを使用して Lambda レイヤーを作成し、次の依存関係をレイヤーにパッケージ化するサンプル アプリケーションを使用します。
Lambda レイヤーを作成するには、次のものが必要です:
Lambda レイヤーでは、依存関係を単一の uber-jar に組み込む必要があります。この目的のために、pom.xml で 2 つのプラグインを使用します。 maven-compiler-plugin はソース コードをコンパイルします。 maven-shade-plugin は、アーティファクトを 1 つの uber-jar にパッケージ化します。次に
を実行する必要があります
mvn clean package
アプリケーションを構築します。
Java ランタイムを使用して Lambda 関数にレイヤーを追加すると、Lambda はレイヤーのコンテンツをその実行環境の /opt ディレクトリにロードします。各 Lambda ランタイムの PATH 変数には、/opt ディレクトリ内の特定のフォルダー パスがすでに含まれています。 PATH 変数がレイヤーのコンテンツを確実に選択できるようにするには、レイヤーの .zip ファイルの依存関係が次のフォルダー パスにある必要があります: java/lib
たとえば、サンプル アプリケーションで作成したレイヤー .zip ファイルのディレクトリ構造は次のとおりです。
aws-pure-java-21-common-lambda-layer-content.zip └ java └ lib └ aws-pure-java-21-common-lambda-layer-1.0.0-SNAPSHOT.jar
これは、Linux で次のコマンドを実行することで実現できます:
この Lambda レイヤーを Java 21 ランタイムで公開するには、AWS CLI v2 で次のコマンドを実行する必要があります。
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
追加パラメータ --compatibility-architectures "x86" を使用すると、x86 (デフォルト) や arm64 などの互換性のあるハードウェア アーキテクチャを定義できます。
AWS は応答として、後で参照する必要がある Lambda レイヤー ARN を配信します。これは次のようなものです。
arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:layer:aws-pure-java-21-common-lambda-layer:1
最後のパラメータは Lambda レイヤーのバージョンであり、最初にレイヤーを公開するときは常に 1 であり、その後の既存の Lambda レイヤーの更新で 1 ずつ増加することに注意してください。
レイヤーを関数にアタッチするには、次の操作を実行できます:
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.
以上がJava Lambda 関数のレイヤーを作成、公開、使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。