封裝層內容 - AWS Lambda

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

封裝層內容

Lambda 層是含有補充程式碼或資料的 .zip 封存檔。層通常具備程式庫相依性、自訂執行期或組態檔案。

本節會說明如何正確封裝層內容。若要進一步了解有關層的概念性資訊以及您可能會考慮使用的原因,請參閱 使用層管理 Lambda 相依性

建立層的第一步是將所有層內容綁定至 .zip 封存檔。由於 Lambda 函數是在 Amazon Linux 上執行,因此您的層內容必須能夠在 Linux 環境中編譯和建置。

若要確保您的圖層內容在 Linux 環境中正常運作,我們建議您使用 DockerAWS Cloud9. AWS Cloud9 是一個基於雲的集成開發環境(IDE),提供對 Linux 服務器的內置訪問以運行和測試代碼。如需詳細資訊,請參閱 AWS 運算部落格上的 使用 Lambda 層來簡化您的開發程序

每個 Lambda 執行時間的層路徑

將層新增至函數時,Lambda 會將層內容載入該執行環境的 /opt 目錄。在每一次 Lambda 執行期中,PATH 變數已包含 /opt 目錄中的特定資料夾路徑。若要確保PATH變數會取得圖層內容,您的圖層 .zip 檔案應該在下列資料夾路徑中具有其相依性:

執行期 路徑

Node.js

nodejs/node_modules

nodejs/node16/node_modules (NODE_PATH)

nodejs/node18/node_modules (NODE_PATH)

nodejs/node20/node_modules (NODE_PATH)

Python

python

python/lib/python3.x/site-packages (網站目錄)

Java

java/lib (CLASSPATH)

Ruby

ruby/gems/3.2.0 (GEM_PATH)

ruby/lib (RUBYLIB)

所有執行時間

bin (PATH)

lib (LD_LIBRARY_PATH)

下列範例展示如何在圖層 .zip 封存中建構資料夾。

Node.js
範例 適用於 Node.js 的 AWS X-Ray SDK檔案結構
xray-sdk.zip └ nodejs/node_modules/aws-xray-sdk
Python
範例 請求庫的文件結構
layer_content.zip └ python └ lib └ python3.11 └ site-packages └ requests └ <other_dependencies> (i.e. dependencies of the requests package) └ ...
Ruby
範例 JSONgem 的文件結構
json.zip └ ruby/gems/2.7.0/ | build_info | cache | doc | extensions | gems | └ json-2.1.0 └ specifications └ json-2.1.0.gemspec
Java
範例 傑克遜文件的JAR文件結構
layer_content.zip └ java └ lib └ jackson-core-2.17.0.jar └ <other potential dependencies> └ ...
All
範例 JQ 程式庫的檔案結構
jq.zip └ bin/jq

如需有關封裝、建立和新增圖層的語言特定說明,請參閱下列頁面:

我們建您不要使用下列語言的圖層。鏈接的頁面包含更多信息。