本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Lambda 層是含有補充程式碼或資料的 .zip 封存檔。層通常具備程式庫相依性、自訂執行期或組態檔案。
本節會說明如何正確封裝層內容。若要進一步了解有關層的概念性資訊以及您可能會考慮使用的原因,請參閱 使用層管理 Lambda 相依項。
建立層的第一步是將所有層內容綁定至 .zip 封存檔。由於 Lambda 函數是在 Amazon Linux 上執行,因此您的層內容必須能夠在 Linux 環境中編譯和建置。
為了確保您的層內容在 Linux 環境中正常運作,我們建議您使用 Docker
每個 Lambda 執行時間的層路徑
將層新增至函數時,Lambda 會將層內容載入該執行環境的 /opt
目錄。在每一次 Lambda 執行期中,PATH
變數已包含 /opt
目錄中的特定資料夾路徑。為了確保 Lambda 取得您的 layer 內容,您的 layer .zip 檔案應該在以下資料夾路徑中具有其相依性:
執行期 | 路徑 |
---|---|
Node.js |
|
|
|
|
|
|
|
Python |
|
|
|
Java |
|
Ruby |
|
|
|
所有執行時間 |
|
|
下列範例展示如何在圖層 .zip 封存中建構資料夾。
範例 適用於 Node.js 的 AWS X-Ray SDK 檔案結構
xray-sdk.zip
└ nodejs/node_modules/aws-xray-sdk
如需封裝、建立和新增層的語言特定說明,請參閱下列頁面:
-
Node.js – 對 Node.js Lambda 函數使用層
-
Python – 針對 Python Lambda 函數使用層
-
Ruby – 針對 Ruby Lambda 函數使用層
-
Java – 使用 Java Lambda 函數的層
-
TypeScript – 使用 TypeScript Lambda 函數的層
我們建議不要使用 layer 來管理以 Go 和 Rust 編寫的 Lambda 函數的相依性。這是因為以這些語言編寫的 Lambda 函數會編譯為單一可執行檔,您在部署函數時提供給 Lambda。此可執行檔包含經過編譯的函數程式碼及其所有相依項。使用層不僅會使程序複雜化,還會導致冷啟動時間增加,因為函數需要在初始化階段期間將額外的組件載入記憶體。
若要搭配 Go 和 Rust Lambda 函數使用外部相依性,請直接將其包含在部署套件中。