使用容器镜像部署 Python Lambda 函数
已于 2021 年 7 月 15 日开始结束对 Python 2.7 运行时的支持。有关更多信息,请参阅 运行时支持策略。
您可以将 Lambda 函数代码部署为容器镜像。Amazon提供了以下资源,帮助您为 Python 函数构建容器镜像:
-
Lambda 的Amazon基本镜像
这些基本镜像会预加载一个语言运行时和在 Lambda 上运行镜像所需的其他组件。Amazon为每个基本镜像提供 Dockerfile,以帮助构建容器镜像。
Amazon 为所有受支持的 .NET 运行时提供 x86_64 架构的基本镜像,并为 .NET Core 3.1 和 .NET 6.0 运行时提供了 arm64 架构的基本镜像。
-
开源运行时接口客户端
如果使用社区或私有企业基本镜像,必须将运行时接口客户端添加到基本镜像,使其与 Lambda 兼容。
-
开源运行时接口模拟器 (RIE)
Lambda 提供了一个运行时接口模拟器,供您在本地测试函数。Lambda 的基本镜像和自定义运行时的基本镜像包括 RIE。对于其他基本镜像,您可以下载 RIE 以在本地测试镜像。
定义为容器镜像的函数的工作流包括以下步骤:
AmazonPython 的 基本映像
Amazon为 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
从 Amazon 基本镜像创建 Python 镜像
使用 Amazon 基本映像为 Python 构建容器映像时,只需将 Python 应用程序复制到容器并安装所有依赖项即可。
如果您的函数具有依赖项,则本地 Python 环境必须与 Dockerfile 中所指定基本镜像内的版本匹配。
要使用 python:3.8
基本映像构建和部署 Python 函数:
-
在本地计算机上,为新函数创建项目目录。
-
在项目目录中,添加一个名为
app.py
且包含函数代码的文件。以下示例是一个简单的 Python 处理程序。import sys def handler(event, context): return 'Hello from Amazon Lambda using Python' + sys.version + '!'
-
在项目目录中添加一个名为
requirements.txt
的文件。在此文件中将每个所需的库作为单独的行列出。如果没有依赖关系,则将文件保留为空。 -
使用文本编辑器在项目目录中创建一个 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" ]
-
要创建容器镜像,请按照从 Lambda 的Amazon基本镜像创建镜像中的步骤 4 至步骤 7 进行操作。
从其他基本映像创建 Python 映像
如果您使用其他基本镜像,则需要安装 Python 运行时接口客户端
对于如何从 Alpine 基本镜像创建 Python 镜像的示例,请参阅Amazon博客上的 Lambda 容器镜像支持
Python 运行时接口客户端
使用 pip 程序包管理器安装 Python 的运行时接口客户端:
pip install awslambdaric
有关程序包的详细信息,请参阅 Python Package Index (PyPi) 网站上的 Lambda RIC
您还可以从 GitHub 下载 Python 运行时接口客户端
部署容器镜像
对于新函数,您可以在创建函数时部署 Python 镜像。对于现有函数,如果重建容器镜像,则需要通过更新函数代码重新部署镜像。