菜单
AWS Lambda
开发人员指南

创建部署程序包 (Python)

要创建 Lambda 函数,首先需要创建 Lambda 函数部署程序包(包含代码和所有依赖项的 .zip 文件)。然后,需要您为 zip 包设置相应的安全权限。有关更多信息,请参阅AWS Lambda 的身份验证和访问控制策略。

您可自行创建部署程序包或直接在 Lambda 控制台中编写代码,在后一种情况下,控制台将为您创建并上传部署程序包,从而创建您的 Lambda 函数。请记下以下内容来确定您是否可使用该控制台创建 Lambda 函数:

  • 简单场景 - 如果自定义代码只需要 AWS 软件开发工具包库,则可以使用 AWS Lambda 控制台中的内联编辑器。使用控制台可以编辑代码并将代码上传到 AWS Lambda。控制台会将代码及相关的配置信息压缩到 Lambda 服务能够运行的部署程序包中。

    您还可以在控制台中测试代码(使用示例事件数据手动调用代码)。

    注意

    Lambda 服务预装了适用于 Python 的 AWS 开发工具包。

  • 高级场景 - 如果编写的代码需要用到其他资源(如使用图形库进行图像处理),或需要使用 AWS CLI 代替控制台,则需要先创建 Lambda 函数部署程序包,然后再使用控制台或 CLI 上传部署程序包。

注意

在创建部署程序包后,您可直接上传该程序包或先将 .zip 文件上传到要在其中创建 Lambda 函数的 AWS 区域中的 Amazon S3 存储桶,然后指定使用控制台或 AWS CLI 创建 Lambda 函数时的存储桶名称和对象键名称。

以下是创建部署程序包的示例过程(在控制台外)。

注意

此过程应适合 Python 的大多数标准安装,并且在 Lambda 函数中使用纯 Python 模块的情况下也适合 pip。如果您要包含一些模块(这些模块具有本机依赖项或具有随 Homebrew 一起安装到 OS X 上的 Python),则应参阅下一部分,该部分提供了在使用 Virtualenv 时创建部署程序包的说明。有关更多信息,请参阅使用通过 Virtualenv 创建的 Python 环境创建部署程序包Virtualenv 网站。

您将使用 pip 安装依赖项/库。有关安装 pip 的信息,请转到安装

  1. 创建一个目录,例如 project-dir

  2. 将所有 Python 源文件(.py 文件)保存在此目录的根级。

  3. 使用 pip 安装所有库。同样,在该目录的根级安装这些库。

    pip install module-name -t /path/to/project-dir

    例如,以下命令会将 requests HTTP 库安装在 project-dir 目录中。

    pip install requests -t /path/to/project-dir

    如果使用的是 Mac OS X,并且您通过 Homebrew(请参阅 Homebrew)安装了 Python,那么前述命令不适用。一个简单的变通方法是使用以下内容将在您的 setup.cfg 中添加 /path/to/project-dir 文件。

    [install] prefix=
  4. 压缩 project-dir 目录(您的部署程序包)的内容。

    重要

    对目录中包含的目录内容 进行压缩,而非目录本身。Zip 文件内容可用作 Lambda 函数的当前工作目录。例如:/project-dir/codefile.py/lib/yourlibraries. 在这种情况下,您将压缩 /project-dir 中包含的内容。

注意

AWS Lambda 包含适用于 Python 的 AWS 软件开发工具包 (Boto 3),因此您无需将其包含在您的部署程序包中。但是,如果您要使用默认包含的 Boto3 版本之外的版本,则可以将其包含在部署程序包中。

使用通过 Virtualenv 创建的 Python 环境创建部署程序包

本部分介绍了您使用通过 Virtualenv 工具创建的 Python 环境时如何创建部署程序包。考虑以下示例:

  • 使用 Virtualenv 工具创建了以下隔离的 Python 环境并激活了该环境:

    virtualenv path/to/my/virtual-env

    您可以按如下方式在 Windows、OS X 和 Linux 中激活该环境:

    • 在 Windows 中,使用 activate.bat 进行激活:

      path\to\my\virtual-env\Scripts\activate.bat
    • 在 OS X 和 Linux 中,寻求 activate 脚本的来源:

      source path/to/my/virtual-env/bin/activate
  • 此外,要在已激活的环境中安装请求程序包,请执行以下操作: :

    pip install requests

现在,要创建部署程序包,可执行以下操作:

  1. 首先,使用要上传到 AWS Lambda 的 Python 代码创建 .zip 文件。

  2. 将库从前面的已激活虚拟环境添加到 .zip 文件。也就是说,将以下目录的内容添加到 .zip 文件(再次注意,应添加目录的内容而不是目录本身)。

    对于 Windows,该目录为:

    %VIRTUAL_ENV%\Lib\site-packages

    对于 OS X、Linux,该目录为:

    $VIRTUAL_ENV/lib/python3.6/site-packages

    注意

    如果您在您的虚拟环境的 site-packages 目录中找不到该程序包,则可能会在 dist-packages 目录中找到它。

有关创建 Python 部署程序包的示例,请参阅 Python