使用層管理 Lambda 相依性 - AWS Lambda

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

使用層管理 Lambda 相依性

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

以下是您可能會考慮使用層的多種原因:

  • 縮減部署套件的大小。切勿將所有函數的相依項以及函數程式碼加入部署套件,而是將它們放在層裡面。這可以使部署套件在容量小的情況下同時保持條理。

  • 若要將核心函數邏輯與相依項分隔開來。您可以透過層獨立於函數程式碼更新函數相依項,反之亦然。這能夠促進關注點分離的原則,且有助於您將重心放在函數邏輯上。

  • 若要跨多個函數共享相依項。建立層後,您可以將其套用於帳戶中的函數,數量無任何限制。如果沒有使用層,則必須在每個個別的部署套件中加入相同的相依項。

  • 若要使用 Lambda 主控台程式碼編輯器。程式碼編輯器是快速測試次要函數程式碼更新的實用工具。不過,如果您的部署套件太大,便無法使用編輯器。使用層可以縮減套件的大小,並取得程式碼編輯器的使用權限。

下圖會說明共用相依項的兩個函數之間的概略架構差異。一個函數使用 Lambda 層,而另一個函數則不使用。

兩個不使用層的 Lambda 函數與共用層的兩個函數之間的架構差異。

將層新增至 Lambda 函數時,Lambda 會將層內容擷取至函數執行環境中的 /opt 目錄。所有原生支援的 Lambda 執行期皆包含 /opt 目錄中特定目錄的路徑。如此一來,您的函數便可以存取您的層內容。如需有關這類特定路徑以及如何正確封裝層的詳細資訊,請參閱 封裝層內容

每個函數最多可包含五個圖層。此外,您只能將層與 部署為 .zip 封存檔 的 Lambda 函數搭配使用。對於定義為容器映像的函數,您可以在建立容器映像時封裝偏好的執行期和所有程式碼相依項。如需詳細資訊,請參閱運 AWS 算部落格上的使用容器映像中的 Lambda 層和擴充功能

如何使用層

若要建立層,請將相依項封裝到 .zip 檔案中,方法類似於您建立一般部署套件的方式。更具體來說,建立和使用層的一般程序包括以下三個步驟:

層和層的版本

層版本是特定層版本不可變的快照。建立新層時,Lambda 會建立版本編號為 1 的新層版本。每次將更新發佈至層時,Lambda 都會遞增版本編號並建立新的層版本。

每個層版本皆由唯一的 Amazon Resource Name (ARN) 進行識別。向函數新增層時,您必須指定要使用的確切層版本。