如何將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+ 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始
廣告