本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Java Lambda 函數的層
使用 Lambda 層封裝要在多個函式之間重複使用的程式碼與相依項。層通常具備程式庫相依性、自訂執行期或組態檔案。建立層包含三個一般步驟:
-
封裝層內容。這表示建立 .zip 封存檔,其中包含您要在函數中使用的相依項。
-
在 Lambda 中建立層。
-
將層新增至函數中。
封裝層內容
若要建立層,請將套件封裝成符合以下要求的 .zip 壓縮檔:
-
確保 Maven 或 Gradle 引用的 Java 版本,與您打算部署的函式所使用的 Java 版本一致。例如,對於 Java 25 函數,
mvn -v命令應在輸出中列出 Java 25。 -
相依項必須儲存在 .zip 檔案根目錄下的
java/lib目錄中。如需詳細資訊,請參閱每個 Lambda 執行時間的層路徑。 -
層中的套件必須與 Linux 相容。Lambda 函式會在 Amazon Linux 上執行。
您可以建立包含第三方 Java 程式庫的層,或您自訂的 Java 模組與套件的層。以下流程使用 Maven 實作。您也可以選用 Gradle 來封裝層內容。
使用 Maven 相依項建立層
-
建立一個包含
pom.xml檔案的 Apache Maven 專案,並在該檔案中定義相依項目。下列範例包含用於 JSON 處理的 Jackson Databind
。 <build>區段透過 maven-dependency-plugin為每個相依項建立獨立的 JAR 檔案,而非將其封裝成單一 uber-jar。若需建立 uber-jar,請改用 maven-shade-plugin 。 範例 pom.xml
<dependencies> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.17.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.13.0</version> <configuration> <source>21</source> <target>21</target> <release>21</release> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.6.1</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> </configuration> </execution> </executions> </plugin> </plugins> </build> -
建置專案。此命令會在
target/lib/目錄中建立所有相依項 JAR 檔案。mvn clean package -
建立層所需的目錄結構:
mkdir -p java/lib -
將相依項 JAR 檔案複製至
java/lib目錄:cp target/lib/*.jar java/lib/ -
壓縮層內容:
.zip 檔案的目錄結構應如下所示:
java/ └── lib/ ├── jackson-databind-2.17.0.jar ├── jackson-core-2.17.0.jar └── jackson-annotations-2.17.0.jar注意
請確保 .zip 檔案在根層級包含
java目錄,且該目錄內含lib子目錄。此結構可確保 Lambda 能順利找到並匯入程式庫。每個相依項都會作為獨立的 JAR 檔案保留,而非封裝成單一 uber-jar。
在 Lambda 中建立層
您可以使用 AWS CLI 或 Lambda 主控台發佈 layer。