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