本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Lambda 層是含有補充程式碼或資料的 .zip 封存檔。層通常具備程式庫相依性、自訂執行期或組態檔案。
本節會說明如何將層新增至 Lambda 函數。若要進一步了解有關層的概念性資訊以及您可能會考慮使用的原因,請參閱 使用層管理 Lambda 相依項。
您必須先執行下列動作,才能設定 Lambda 函數以使用層:
-
確認您擁有對層版本呼叫 GetLayerVersion API 的許可。對於 中的函數 AWS 帳戶,您必須在使用者政策中擁有此許可。若要在其他帳號中使用圖層,其他帳戶的擁有者必須在資源型策略中授與您的帳戶許可。如需範例,請參閱 將 Lambda 層存取權授予其他帳戶。
您最多可以將五個層新增至 Lambda 函數。函數和所有圖層的解壓縮大小總計不得超過解壓縮部署套件大小 250 MB 的配額。如需詳細資訊,請參閱Lambda 配額。
您的函數可以繼續使用您已新增的任何層版本,即使該層版本已被刪除,或您存取層的許可被撤銷後也是如此。但是,您不能建立使用已刪除圖層版本的新函數。
注意
確定您新增至函數的層與函數的執行期和指令集架構相容。
新增層至函數 (主控台)
開啟 Lambda 主控台中的函數頁面
。 -
選擇要設定的函數。
-
在 Layers (層) 下,選擇 Add a layer (新增層)
-
在選擇層下方選擇層來源:
-
若是 AWS 層 或 自訂層 層來源,請從下拉式功能表中選擇層。在 Version (版本) 中,從下拉式選單中選擇層版本。
-
若是指定 ARN 層來源,請在文字方塊中輸入 ARN,然後選擇驗證。接著選擇新增。
-
新增層的順序即 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 主控台內建的程式碼編輯器。您應當可以將已新增為層的任何程式庫匯入目前的函數。
尋找圖層資訊
若要在您的帳戶中尋找與函數執行期相容的層,請使用 ListLayers API。例如,您可以使用下列 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
選項。回應詳細資訊會顯示各個層的最新版本。
您還可使用 ListLayerVersions API 取得層的最新版本。舉例來說,您可以使用下列 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"
]
}
]
}