本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
為函數新增層
Lambda 層是含有補充程式碼或資料的 .zip 封存檔。層通常具備程式庫相依性、自訂執行期或組態檔案。
本節會說明如何將層新增至 Lambda 函數。若要進一步了解有關層的概念性資訊以及您可能會考慮使用的原因,請參閱 使用層管理 Lambda 相依性。
您必須先執行下列動作,才能設定 Lambda 函數以使用層:
-
確保您具有調用圖層版本GetLayerVersionAPI的權限。對於您的功能 AWS 帳戶,您必須在您的用戶策略中具有此權限。若要在其他帳號中使用圖層,其他帳戶的擁有者必須在資源型策略中授與您的帳戶許可。如需範例,請參閱 授予 Lambda 層存取權給其他帳戶。
您最多可以將五個層新增至 Lambda 函數。函數和所有圖層的解壓縮大小總計不得超過解壓縮部署套件大小 250 MB 的配額。如需詳細資訊,請參閱Lambda 配額。
您的函數可以繼續使用您已新增的任何層版本,即使該層版本已被刪除,或您存取層的許可被撤銷後也是如此。但是,您不能建立使用已刪除圖層版本的新函數。
注意
確定您新增至函數的層與函數的執行期和指令集架構相容。
新增層至函數 (主控台)
開啟 Lambda 主控台中的函數頁面
。 -
選擇要設定的函數。
-
在 Layers (層) 下,選擇 Add a layer (新增層)
-
在選擇層下方選擇層來源:
-
若是 AWS 層 或 自訂層 層來源,請從下拉式功能表中選擇層。在 Version (版本) 中,從下拉式選單中選擇層版本。
-
對於「指定ARN圖層來源」,在文字方塊ARN中輸入 a,然後選擇「確認」。接著選擇新增。
-
新增層的順序即 Lambda 將層內容合併至執行環境的順序。您可以使用主控台來變更層合併順序。
若要更新函數的層合併順序 (主控台)
開啟 Lambda 主控台中的函數頁面
。 -
選擇要設定的函數。
-
在 Layers (層) 下方,選擇 Edit (編輯)
-
選擇其中一個層。
-
選擇 Merge earlier (先前合併) 或 Merge later (稍後合併) 來調整層的順序。
-
選擇 Save (儲存)。
層已設定版本控制。每個層版本的內容都是不可變的。層擁有者可發行新的層版本,以提供更新內容。您可以使用主控台來更新函數附加的層版本。
若要更新函數的層版本 (主控台)
-
開啟 Lambda 主控台中的 層頁面
。 -
選擇您要更新版本的層。
-
選擇使用此版本的函數標籤。
-
選擇您要修改的函數,然後選擇編輯。
-
在層版本中選擇要變更的層版本。
-
選擇 Update functions (更新函數)。
您無法跨 AWS 帳戶更新功能層版本。
從您的函數存取層內容
如果您的 Lambda 函數包含層,Lambda 會將層內容擷取到函數執行環境中的 /opt
目錄。Lambda 按函數列出的順序 (從低到高) 擷取層。Lambda 會合併名稱相同的資料夾。如果同一個檔案出現在多個圖層中,則函數會使用最後擷取的圖層中的版本。
每個 Lambda 執行期會將特定的 /opt
目錄資料夾新增至 PATH
變數。您的函數程式碼可存取層內容,無需指定路徑。如需 Lambda 執行環境中路徑設定的詳細資訊,請參閱 定義執行時間環境變數。
請參閱 每個 Lambda 執行時間的層路徑 以了解建立層時要加入程式庫的位置。
如果您使用的是 Node.js 或 Python 執行期,則可以使用 Lambda 主控台內建的程式碼編輯器。您應當可以將已新增為層的任何程式庫匯入目前的函數。
尋找圖層資訊
若要在帳戶中尋找與函數執行階段相容的圖層,請使用 ListLayersAPI. 例如,您可以使用下列 list-layers
AWS Command Line Interface (CLI) 命令:
aws lambda list-layers --compatible-runtime python3.9
您應該會看到類似下列的輸出:
{ "Layers": [ { "LayerName": "my-layer", "LayerArn": "arn:aws:lambda:us-east-2:123456789012:layer:my-layer", "LatestMatchingVersion": { "LayerVersionArn": "arn:aws:lambda:us-east-2:123456789012:layer:my-layer:2", "Version": 2, "Description": "My layer", "CreatedDate": "2023-11-15T00:37:46.592+0000", "CompatibleRuntimes": [ "python3.9", "python3.10", "python3.11", ] } } ] }
若要在您的帳戶中列出所有層,請忽略 --compatible-runtime
選項。回應詳細資訊會顯示各個層的最新版本。
您也可以使用取得圖層的最新版本ListLayerVersionsAPI。例如,您可以使用下列list-layer-versions
CLI命令:
aws lambda list-layer-versions --layer-name my-layer
您應該會看到類似下列的輸出:
{ "LayerVersions": [ { "LayerVersionArn": "arn:aws:lambda:us-east-2:123456789012:layer:my-layer:2", "Version": 2, "Description": "My layer", "CreatedDate": "2023-11-15T00:37:46.592+0000", "CompatibleRuntimes": [ "java11" ] }, { "LayerVersionArn": "arn:aws:lambda:us-east-2:123456789012:layer:my-layer:1", "Version": 1, "Description": "My layer", "CreatedDate": "2023-11-15T00:27:46.592+0000", "CompatibleRuntimes": [ "java11" ] } ] }