使用容器镜像部署 Python Lambda 函数 - AWS Lambda

使用容器镜像部署 Python Lambda 函数

注意

已于 2021 年 7 月 15 日开始结束对 Python 2.7 运行时的支持。有关更多信息,请参阅 运行时支持策略

您可以将 Lambda 函数代码部署为容器镜像。AWS提供了以下资源,帮助您为 Python 函数构建容器镜像:

  • Lambda 的AWS基本镜像

    这些基本镜像会预加载一个语言运行时和在 Lambda 上运行镜像所需的其他组件。AWS为每个基本镜像提供 Dockerfile,以帮助构建容器镜像。

    AWS 为所有受支持的 .NET 运行时提供 x86_64 架构的基本镜像,并为 .NET Core 3.1 和 .NET 6.0 运行时提供了 arm64 架构的基本镜像。

  • 开源运行时接口客户端

    如果使用社区或私有企业基本镜像,必须将运行时接口客户端添加到基本镜像,使其与 Lambda 兼容。

  • 开源运行时接口模拟器 (RIE)

    Lambda 提供了一个运行时接口模拟器,供您在本地测试函数。Lambda 的基本镜像和自定义运行时的基本镜像包括 RIE。对于其他基本镜像,您可以下载 RIE 以在本地测试镜像

定义为容器镜像的函数的工作流包括以下步骤:

  1. 使用本主题中列出的资源构建容器镜像。

  2. 将镜像上载到 Amazon ECR 容器注册表。请参阅创建镜像中的步骤 7-9。

  3. 创建 Lambda 函数或更新函数代码以将镜像部署到现有函数。

AWSPython 的 基本映像

AWS为 Python 提供了以下基本映像:

标签 运行时 操作系统 Dockerfile

3、3.9

Python 3.9 Amazon Linux 2 GitHub 上的适用于 Python 3.9 的 Dockerfile

3.8

Python 3.8 Amazon Linux 2 GitHub 上的适用于 Python 3.8 的 Dockerfile

3.7

Python 3.7 Amazon Linux 2018.03 GitHub 上的 适用于 Python 3.7 的 Dockerfile

3.6

Python 3.6 Amazon Linux 2018.03 GitHub 上的 适用于 Python 3.6 的 Dockerfile

2、2.7

Python 2.7 Amazon Linux 2018.03 GitHub 上的 适用于 Python 2.7 的 Dockerfile

Docker Hub 存储库:amazon/aws-lambda-python

Amazon ECR 存储库:gallery.ecr.aws/lambda/python

从 AWS 基本镜像创建 Python 镜像

使用 AWS 基本映像为 Python 构建容器映像时,只需将 Python 应用程序复制到容器并安装所有依赖项即可。

如果您的函数具有依赖项,则本地 Python 环境必须与 Dockerfile 中所指定基本镜像内的版本匹配。

要使用 python:3.8 基本映像构建和部署 Python 函数:

  1. 在本地计算机上,为新函数创建项目目录。

  2. 在项目目录中,添加一个名为 app.py 且包含函数代码的文件。以下示例是一个简单的 Python 处理程序。

    import sys def handler(event, context): return 'Hello from AWS Lambda using Python' + sys.version + '!'
  3. 在项目目录中添加一个名为 requirements.txt 的文件。在此文件中将每个所需的库作为单独的行列出。如果没有依赖关系,则将文件保留为空。

  4. 使用文本编辑器在项目目录中创建一个 Dockerfile。以下示例显示了在上一步中为处理程序创建的 Dockerfile。与函数处理程序一起,在 ${LAMBDA_TASK_ROOT} 目录下安装所有依赖项,以确保在调用该函数时,Lambda 运行时可以找到它们。

    FROM public.ecr.aws/lambda/python:3.8 # Copy function code COPY app.py ${LAMBDA_TASK_ROOT} # Install the function's dependencies using file requirements.txt # from your project folder. COPY requirements.txt . RUN pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}" # Set the CMD to your handler (could also be done as a parameter override outside of the Dockerfile) CMD [ "app.handler" ]
  5. 要创建容器镜像,请按照从 Lambda 的AWS基本镜像创建镜像中的步骤 4 至步骤 7 进行操作。

从其他基本映像创建 Python 映像

如果您使用其他基本镜像,则需要安装 Python 运行时接口客户端

对于如何从 Alpine 基本镜像创建 Python 镜像的示例,请参阅AWS博客上的 Lambda 容器镜像支持

Python 运行时接口客户端

使用 pip 程序包管理器安装 Python 的运行时接口客户端

pip install awslambdaric

有关程序包的详细信息,请参阅 Python Package Index (PyPi) 网站上的 Lambda RIC

您还可以从 GitHub 下载 Python 运行时接口客户端

部署容器镜像

对于新函数,您可以在创建函数时部署 Python 镜像。对于现有函数,如果重建容器镜像,则需要通过更新函数代码重新部署镜像。