如何将Python Docker镜像部署到AWS Lambda

如何将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代码。你可以针对你的具体使用情况进一步配置和优化该功能。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程