如何将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镜像指令的文本文件。

示例

这是一个简单的Python应用程序的Dockerfile示例:

#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"]

此Dockerfile使用官方的Python Docker镜像作为基础,将当前目录复制到镜像内的/app目录,安装requirements.txt中指定的必需Python包,并将ENTRYPOINT和CMD设置为在启动镜像时运行app.py文件。目录树如下所示。

├── app.py
└── requirements.txt
|__ Dockerfile
0 directories, 3 files

要构建Docker镜像,请在与Dockerfile相同的目录中运行以下命令:

$ docker build -t my-python-app:latest .

此命令将构建Docker镜像并为其打上my-python-app:latest标签。

输出

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弹性容器注册表(ECR)。ECR是AWS提供的托管Docker注册表服务。

要创建ECR存储库并将Docker镜像推送到其中,请按照以下步骤操作:

  • 在AWS管理控制台中导航到ECR仪表板。

  • 单击“创建存储库”按钮。

  • 为存储库命名,然后单击“创建存储库”按钮。

  • 按照“推送镜像”部分中的说明使用AWS CLI对docker进行身份验证。

  • 通过运行以下命令,使用ECR存储库URI标记Docker镜像:

$ 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 CLI测试该函数,您可以运行以下命令:

$ 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代码。您可以根据您的具体用例进一步配置和优化函数。

更新于:2023年1月16日

1K+ 次浏览

启动你的职业生涯

通过完成课程获得认证

开始
广告