【要使包】優惠推薦 |

【要使包】優惠推薦 |

AWS Lambda 函數代碼包含一個 .py 文件,其中包含函數處理程序代碼,以及代碼依賴任何其他包和模塊。

要此函數部署到 Lambda,您可以使用部署包。

此包可以是 .zip 文件歸檔或容器映像。

有關 Python 中使用容器映像信息,請參閲使用容器映像部署 Python Lambda 函數。

要創建 .zip 文件歸檔格式部署包,可以使用命令行工具內置 .zip 文件歸檔實用工具或任何其他 .zip 文件實用工具(例如 7zip)。

以下各部分中顯示示例設您 Linux 或 macOS 環境中使用命令行 zip 工具。

要 Windows 中使用命令,您可以安裝 Windows Subsystem for Linux,獲取 Windows 集成版本 Ubuntu 和 Bash。

請注意,Lambda 使用 POSIX 文件權限,因此創建 .zip 文件歸檔之前,您可能需要為部署包文件夾設置權限。

於使用 Python 運行時系統 Lambda 函數,依賴項可以是任何 Python 程序包或模塊。

使用 .zip 歸檔部署函數時,可以使用函數代碼這些依賴項添加到 .zip 文件中,可以使用 Lambda 層。

層是可以包含其他代碼或其他內容 .zip 文件。

導航到包含 lambda_function.py 源代碼文件項目目錄。

要使包 Play

Lambda Python 運行時系統包含 AWS SDK for Python (Boto3) 及其依賴項。

Lambda 會運行時系統中您無法添加自定義依賴項部署場景提供開發工具包。

這些場景包括使用內置代碼編輯器控制枱中創建函數,或者使用 AWS Serverless Application Model(AWS SAM)或 AWS CloudFormation 模板中內聯函數。

Lambda 會定期 Python 運行時系統中庫,包含最新更新和安全補丁。

如果函數使用運行時系統中包含 Boto3 SDK 版本,但部署包包含開發工具包依賴項,可能會導致版本不一致問題。

例如,部署包可能包含開發工具包依賴項 urllib3。

當 Lambda 運行時系統中開發工具包時,運行時系統新版本與部署包中 urllib3 版本之間兼容性問題可能會導致您函數失敗。

保持依賴項完全控制並避免可能版本不一致問題,我們建議您所有函數依賴項添加到部署包中,即使它們版本包含 Lambda 運行時系統中是如此。

這包括 Boto3 SDK。

AWS 責任擔模式下,您負責管理函數部署包中所有依賴項。

這包括應用和安全補丁。

要函數部署包中依賴項,請創建一個 .zip 文件,然後傳到 Lambda 中。
要使包

有關多信息,請參閲 創建含依賴項 .zip 部署包 和 使用 .zip 文件創建和 Python Lambda 函數。

如果您函數代碼沒有依賴項,則 .zip 文件僅包含帶有函數處理程序代碼 .py 文件。

使用您首選 zip 實用工具創建一個 .zip 文件,並 .py 文件置於根目錄中。

如果 .py 文件 .zip 文件根目錄下,Lambda 無法運行代碼。

要瞭解如何部署 .zip 文件創建 Lambda 函數或現有函數,請參閲 使用 .zip 文件創建和 Python Lambda 函數。

如果函數代碼依賴其他包或模塊,可以使用函數代碼這些依賴項添加到 .zip 文件中,可以使用 Lambda 層。

本部分中的説您展示了如何依賴項包含 .zip 部署包中。

要讓 Lambda 運行代碼,包含處理程序代碼和所有函數依賴項.py 文件安裝.zip 文件根目錄下。

假設函數代碼保存名 lambda_function.py 文件中。

以下示例 CLI 命令將創建名 my_deployment_package.zip .zip 文件,其中包含函數代碼及其依賴項。

您可以依賴項直接安裝到項目目錄中文件夾,可以使用 Python 虛擬環境。

導航到包含 lambda_function.py 源代碼文件項目目錄。

此示例中,該目錄名為 my_function。

請注意,於 .zip 部署包,Lambda 期望源代碼及其依賴項全部位於 .zip 文件根目錄中。

但是,直接項目目錄中安裝依賴項可能會引入大量文件和文件夾,使 IDE 中導航變得困難。

您可以此目錄中創建一個 package 目錄,依賴項源代碼分開。

package 目錄中安裝依賴項。

以下示例將使用 pip 從 Python 程序包索引中安裝 Boto3 SDK。

如果函數代碼使用您自己創建 Python 程序包,請這類程序包保存 package 目錄中。

.zip 文件應採用扁平目錄結構,將函數處理程序代碼和所有依賴項文件夾安裝根目錄中,如下所示。

如果包含函數處理程序代碼 .py 文件 .zip 文件根目錄中,Lambda 無法運行代碼。

項目目錄中創建和虛擬環境。

此示例中,項目目錄名為 my_function。
要使包

導航到包含使用 pip 安裝了依賴項目錄,並項目目錄中創建一個 .zip 文件,安裝依賴項置於其根目錄。

此示例中,pip my_virtual_env/lib/python3.12/site-packages 目錄中安裝了所需依賴項。

導航到包含處理程序代碼 .py 文件所在項目目錄根目錄,然後該文件添加到 .zip 程序包根目錄中。

此示例中,您函數代碼文件名為 lambda_function.py。

本部分中的説旨在您展示如何依賴項包含層中。

有關如何依賴項包含部署包中的説,請參閲 創建含依賴項 .zip 部署包。

您函數添加層時,Lambda 會將層內容加載到該執行環境 /opt 目錄中。

於每個 Lambda 運行時系統,PATH 變量包括 /opt 目錄中文件夾路徑。

確保 PATH 變量能夠獲取層內容,請內容包含以下文件夾路徑中:例如,層.zip 文件結構可能如下所示:此外,Lambda 會自動檢測 /opt/lib 目錄中任何庫,以及 /opt/bin 目錄中任何二進制文件。

確保 Lambda 正確獲取層內容,還可以創建包含以下結構層:打包層後,請參閲 Lambda 中創建和刪除層 和 函數添加層 完成層設置。

代碼中使用 import 語句時,Python 運行時系統會搜索其搜索路徑中目錄,直到找到相應模塊或包。

於這些包,您需要自己編譯和構建 C/C++ 組件。

要使包 Play

延伸閱讀…

鑰匙包

鑰匙包|優惠推薦- 蝦皮購物- 2024年1月

如果部署包含有包含運行時系統庫某個版本,此版本優先於運行時系統中包含版本。

部署包中依賴項優先於層中依賴項。

您層添加依賴項時,Lambda 會其提取到 /opt/python/lib/python3.x/site-packages(其中 python3.x 表示正在使用運行時系統版本)或 /opt/python 中。

搜索路徑中,這些目錄優先於含有包含運行時系統庫和安裝了 pip 庫目錄(/var/runtime 和 /var/lang/lib/python3.x/site-packages)。

因此,函數層中庫優先於運行時系統中包含版本。

Python 3.11 託管式運行時系統和基本映像中,AWS SDK 及其依賴項安裝 /var/lang/lib/python3.11/site-packages 目錄中。

通過添加以下代碼段,您可以查看 Lambda 函數搜索路徑。

於部署包或層中依賴項優先於包含運行時系統庫,因此如果您包中包含 urllib3 開發工具包依賴項而包含開發工具包,可能會導致版本不一致問題。

如果您要部署自己 Boto3 依賴項版本, Boto3 作為依賴項部署到部署包中。

我們建議您打包函數所有依賴項,即使運行時系統中包含各種版本是如此。

您可以 .zip 程序包內文件夾中添加依賴項。

例如,您可以某個 Boto3 SDK 版本添加到 .zip 程序包中名 common 文件夾中。
要使包

解壓縮並安裝 .zip 程序包後,此文件夾將放置 /var/task 目錄中。

要代碼中使用 .zip 部署包中某個文件夾中依賴項,請使用 import from 語句。

例如,要使用 .zip 程序包中名 common 文件夾中 Boto3 版本,請使用以下語句。

如果您函數僅使用純 Python 程序包和模塊,則可以使用 pip install 命令任何本地生成計算機上安裝依賴項並創建 .zip 文件。

許多流行 Python 庫(包括 NumPy 和 Pandas)不是純 Python ,包含 C 或 C++ 編寫代碼。

將包含 C/C++ 代碼庫添加到部署包時,正確構建包以確保它 Lambda 執行環境兼容。

Python 程序包索引(PyPI)上提供大多數包“wheel”(.whl 文件)形式提供。

.whl 文件是一種 zip 文件,它包含構建分發,其中包含操作系統和指令集架構預編譯二進制文件。

要使部署包與 Lambda 兼容,您需要為 Linux 操作系統和函數指令集架構安裝輪子。

有些包可能只能作為源分發提供。

於這些包,您需要自己編譯和構建 C/C++ 組件。

延伸閱讀…

鑰匙包/護照夾

要使某個類能被同一個包中的其他類訪問

要查看哪些分發可用於需包,請執行以下操作: 要下載 Lambda 兼容 wheel,請使用 pip –platform 選項。

如果 Lambda 函數使用 x86_64 指令集架構,請運行以下 pip install 命令 package 目錄中安裝兼容 wheel。

將 –python 3.x 替換正在使用 Python 運行時系統版本。

如果函數使用是 arm64 指令集架構,請運行以下命令。

將 –python 3.x 替換正在使用 Python 運行時系統版本。

如果包僅作為源分發提供,則需要自己構建 C/C++ 庫。

要使包與 Lambda 執行環境兼容,您需要使用 Amazon Linux 2 操作系統環境中構建包。

您可以通過 Amazon EC2 Linux 實例中構建包來實現此目的。

要瞭解如何啓動並連接到 Amazon EC2 Linux 實例,請參閲《適用於 Linux 實例 Amazon EC2 用户指南》中教程:Amazon EC2 Linux 實例入門。

創建 .zip 部署包後,您可以使用它來創建 Lambda 函數或現有 Lambda 函數。

您可以使用 Lambda 控制枱、AWS Command Line Interface 和 Lambda API 部署 .zip 程序包。

您可以使用 AWS Serverless Application Model(AWS SAM)和 AWS CloudFormation 創建和 Lambda 函數。

Lambda .zip 部署包大小為 250MB(解壓縮)。

請注意,此限制適用於您上傳所有文件(包括任何 Lambda 層)組合大小。

要創建函數,控制枱中創建該函數,然後上傳您 .zip 歸檔。

要現有函數,請打開函數頁面,然後步驟添加 .zip 文件。

如果您 .zip 文件於 50MB,則可以通過直接從本地計算機上傳該文件來創建或函數。

於大於 50MB .zip 文件,您程序包上傳到 Amazon S3 存儲桶。

有關如何使用 AWS Management Console 將文件上傳到 Amazon S3 存儲桶的説,請參閲 Amazon S3 入門。

要使用 AWS CLI 上傳文件,請參閲《AWS CLI 用户指南》中移動對象。

打開 Lambda 控制枱“函數”頁面,然後選擇創建函數。

Basic information (基本信息) 中,執行以下操作:於函數名稱,輸入函數名稱。

於運行時系統,選擇要使用運行時系統。

(可選)於架構,選擇要用於函數指令集架構。

默認架構 x86_64。

確保您函數 .zip 部署包與您選擇指令集架構兼容。

(可選) Permissions(權限)下,展開 Change default execution role(更改默認執行角色)。

您可以創建執行角色,可以使用現有角色。

Lambda 控制枱“函數”頁面中,選擇要其上傳 .zip 文件函數。

代碼源窗格中,選擇上傳自。

要上傳 .zip 文件,請執行以下操作:選擇上傳,然後文件選擇器中選擇您 .zip 文件。

Lambda 控制枱“函數”頁面中,選擇要其上傳 .zip 文件函數。

代碼源窗格中,選擇上傳自。

粘貼 .zip 文件 Amazon S3 鏈接 URL,然後選擇保存。