如何创建适用于 Python 的 AWS Lambda 部署程序包?

您可能需要创建部署程序包,其中包含位于 .zip 文件根目录中的函数模块,并具有所有文件的读取和执行权限。

"ModuleNotFoundError" 和“无法加载模块”是 Python 中的 Lambda 函数的常见错误。这些错误通常由部署程序包 .zip 文件中不正确的文件夹结构或文件权限造成。

安装函数项目本地的所有依赖项模块

注意:大部分 Python 模块独立于平台,不过一些模块是针对特定操作系统环境编译的。AWS Lambda 在 Linux 环境下运行。如果您在安装使用 pip 进行部署的模块,则最佳做法是在 Linux 中生成 .zip 文件,以确保包含了正确平台的依赖项。

如果您使用 pip install 来安装模块,则模板将位于您的用户文件夹或系统文件夹中。为 Lambda 创建部署程序包时,程序包不包括这些系统安装的依赖项。运行以下命令,在您本地的函数项目文件夹中安装依赖项:

pip install boto3 -t ./

这会将 boto3 Python 模块安装到项目文件夹的根目录中。对 Lambda 函数所需的所有模块重复此操作。

添加权限(仅限 Linux 和 macOS)

将所有依赖模块下载到项目文件夹之后,运行以下命令以确保文件具有所需权限:

chmod -R 755 .

手动构建部署程序包

运行此命令压缩项目文件夹,以便部署到 Lambda:

zip -r ../myDeploymentPackage.zip .

这会将发布文件夹中的所有文件压缩到位于父文件夹中的 .zip 文件。

验证部署程序包

Linux 和 macOS:

unzip -l myDeploymentPackage.zip

此命令显示文件夹结构:应用程序的主 Python 函数文件必须位于项目文件夹的根目录中。其他依赖项文件,例如额外的 Python 模块,可以位于其他文件夹中。

Windows:

使用压缩工具解压缩文件。主 Python 函数文件必须位于 .zip 文件的根文件夹中。如果 .zip 文件中有另一个基本文件夹包含 Python 函数文件,请重新创建 .zip 文件,使所有函数文件位于根文件夹中。

将部署程序包上传到 Lambda 函数

  1.     打开 AWS Lambda 控制台
  2. 在导航窗格上选择函数,然后打开函数。
  3. 函数代码部分中,展开代码条目类型下拉列表,然后选择上传 .ZIP 文件
  4. 选择上传,然后选择您的 .zip 文件。
  5. 选择保存
  6. 选择 Test

您也可以从 AWS 命令行界面 (AWS CLI),使用 update-function-code 命令上传 .zip 文件。


此页面对您有帮助吗? |

返回 AWS Support 知识中心

需要帮助?访问 AWS 支持中心

发布时间:2018 年 7 月 30 日