如何将Python Docker镜像部署到AWS Lambda
简介
AWS Lambda是一个无服务器计算平台,允许你运行你的代码,而不必担心基础设施。Docker是一种工具,用于以标准化和隔离的方式打包和部署应用程序。通过将Python Docker镜像部署到AWS Lambda,你可以利用这两种技术来大规模地运行你的Python代码。
先决条件
- 能够访问AWS Lambda的AWS账户
-
Docker安装和Docker命令的基本知识
-
要在Docker镜像中打包的Python应用程序或代码
第1步:构建Python Docker镜像
如果你为你的Python应用程序创建一个Dockerfile来构建Docker镜像,那将是最好的。Dockerfile是一个文本文件,包含构建Docker镜像的说明。
示例
#base image we are using is python:3.8-slim
FROM python:3.9
#copy the current working directory to the /app directory inside the container.
COPY . /app
#set /app as the working directory for the python container.
WORKDIR /app
#Install the required packages using the requirement.txt
RUN pip install -r requirements.txt
#set the entry point for the container.
ENTRYPOINT ["python"]
#include the default file to be executed.
CMD ["app.py"]
这个Docker文件使用官方的Python Docker镜像作为基础,将当前目录复制到镜像内的/app目录,安装requirements.txt中指定的所需Python包,并设置ENTRYPOINT和CMD以在镜像启动时运行app.py文件。目录树显示如下。
├── app.py
└── requirements.txt
|__ Dockerfile
0 directories, 3 files
要构建Docker镜像,在与Docker文件相同的目录中运行命令–
$ docker build -t my-python-app:latest .
该命令将构建Docker镜像,并给它打上my-python-app:最新的标签。
输出
Sending build context to Docker daemon 3.072kB
Step 1/6 : FROM python:3.9
---> 68cf04410baf
Step 2/6 : COPY . /app
---> c7d360b69e27
Step 3/6 : WORKDIR /app
---> Running in d1182f3361d4
Removing intermediate container d1182f3361d4
---> e0a1bc774a95
Step 4/6 : RUN pip install -r requirements.txt
---> Running in 10dfa962d575
Removing intermediate container 10dfa962d575
---> 32830c9fe0d0
Step 5/6 : ENTRYPOINT ["python"]
---> Running in 49db861f7f23
Removing intermediate container 49db861f7f23
---> e28b4e30abd7
Step 6/6 : CMD ["app.py"]
---> Running in 1e3f5978bac8
Removing intermediate container 1e3f5978bac8
---> da008f59919a
Successfully built da008f59919a
Successfully tagged my-python-app:latest
第2步:将Docker镜像推送到AWS弹性容器注册处(ECR)
要将Docker镜像部署到AWS Lambda,首先需要将其推送到AWS Elastic Container Registry(ECR)。ECR是一个由AWS提供的受管理的Docker注册处服务。
要创建ECR仓库并将Docker镜像推送到该仓库,请按照以下步骤进行– 1.
- 导航到AWS管理控制台的ECR仪表板。
-
点击 “创建存储库 “按钮。
-
给版本库一个名字,然后点击 “创建版本库 “按钮。
-
按照 “推送镜像 “部分的说明,用AWS CLI验证docker。
-
通过运行以下命令给Docker镜像贴上ECR仓库URI的标签
$ docker tag my-python-app:latest {your_ecr_repository_uri}
- 通过运行以下命令将Docker镜像推送到ECR —
$ docker push {your_ecr_repository_uri}
第3步:创建AWS Lambda函数
现在Docker镜像已经在ECR中,你可以创建AWS Lambda函数来运行它。
- 导航到AWS管理控制台的AWS Lambda仪表板。
-
点击 “创建功能 “按钮。
-
在 “运行时间 “栏中选择 “自定义图像 “选项。
-
指定ECR存储库URI作为图像源。
-
根据需要配置该功能的触发器和设置。
-
点击 “创建功能 “按钮。
第4步:测试AWS Lambda函数
为了测试该功能是否正常工作,你可以使用AWS Lambda仪表板或AWS CLI来调用它。使用AWS Lambda仪表板,你可以点击 “测试 “按钮并提供任何所需的测试事件数据。如果你使用AWS CLI,你可以运行 invoke 命令并指定函数名称和任何所需的事件数据。
$ aws lambda invoke --function-name my-function --payload '{"key": "value"}' output.txt
该命令将调用my-function函数,并传入指定的事件数据。该函数的输出将被保存到output.txt文件中。
一旦你验证了该功能的正常工作,你就可以开始在你的应用程序或环境中使用它。
结论
在这篇文章中,我们走过了将Python Docker镜像部署到AWS Lambda的步骤。我们建立了Docker镜像,将其推送到ECR,并使用自定义镜像创建了一个AWS Lambda函数。我们还测试了该函数,以确保它能正常工作。
通过将Python Docker镜像部署到AWS Lambda,你可以同时使用Docker和AWS Lambda来大规模地运行你的Python代码。你可以针对你的具体使用情况进一步配置和优化该功能。