為函數新增層 - AWS Lambda

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

為函數新增層

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

本節會說明如何將層新增至 Lambda 函數。若要進一步了解有關層的概念性資訊以及您可能會考慮使用的原因,請參閱 使用 Lambda 層

您必須先執行下列動作,才能設定 Lambda 函數以使用層:

您最多可以將五個層新增至 Lambda 函數。函數和所有圖層的解壓縮大小總計不得超過解壓縮部署套件大小 250 MB 的配額。如需詳細資訊,請參閱 Lambda 配額

您的函數可以繼續使用您已新增的任何層版本,即使該層版本已被刪除,或您存取層的許可被撤銷後也是如此。但是,您不能建立使用已刪除圖層版本的新函數。

注意

確定您新增至函數的層與函數的執行期和指令集架構相容。

新增層至函數 (主控台)
  1. 開啟 Lambda 主控台中的 函數頁面

  2. 選擇要設定的函數。

  3. Layers (層) 下,選擇 Add a layer (新增層)

  4. 選擇層下方選擇層來源:

    1. 若是 AWS 層 或 自訂層 層來源,請從下拉式功能表中選擇層。在 Version (版本) 中,從下拉式選單中選擇層版本。

    2. 若是指定 ARN 層來源,請在文字方塊中輸入 ARN,然後選擇驗證。接著選擇新增

新增層的順序即 Lambda 將層內容合併至執行環境的順序。您可以使用主控台來變更層合併順序。

若要更新函數的層合併順序 (主控台)
  1. 開啟 Lambda 主控台中的 函數頁面

  2. 選擇要設定的函數。

  3. Layers (層) 下方,選擇 Edit (編輯)

  4. 選擇其中一個層。

  5. 選擇 Merge earlier (先前合併) 或 Merge later (稍後合併) 來調整層的順序。

  6. 選擇儲存

層已設定版本控制。每個層版本的內容都是不可變的。層擁有者可發行新的層版本,以提供更新內容。您可以使用主控台來更新函數附加的層版本。

若要更新函數的層版本 (主控台)
  1. 開啟 Lambda 主控台中的 層頁面

  2. 選擇您要更新版本的層。

  3. 選擇使用此版本的函數標籤。

  4. 選擇您要修改的函數,然後選擇編輯

  5. 層版本中選擇要變更的層版本。

  6. 選擇 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" ] } ] }