使用 Python 建置 Lambda 函數 - AWS Lambda

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Python 建置 Lambda 函數

您可以在 AWS Lambda中執行 Python 程式碼。Lambda 提供用於執行程式碼來處理事件的 Python 執行期。您的程式碼在包含 SDK for Python (Boto3) 環境中執行,其中包含您所管理之 AWS Identity and Access Management (IAM) 角色的登入資料。若要進一步瞭解 Python 執行階段隨附的 SDK 版本,請參閱包含執行階段的 SDK 版本

Lambda 支援以下 Python 執行期。

Python
名稱 識別符 作業系統 取代日期 封鎖函數建立 封鎖函數更新

Python 3.12

python3.12

Amazon Linux 2023

Python 3.11

python3.11

Amazon Linux 2

Python 3.10

python3.10

Amazon Linux 2

Python 3.9

python3.9

Amazon Linux 2

Python 3.8

python3.8

Amazon Linux 2

2024 年 10 月 14 日

2025年2月28日

2025年3月31日

注意

此資料表中的執行期資訊會不斷更新。如需在 Lambda 中使用 AWS SDK 的詳細資訊,請參閱在無伺服器陸地中管理 Lambda 函數中的 AWS SDK

若要建立 Python 函數
  1. 開啟 Lambda 主控台

  2. 選擇建立函數

  3. 進行下列設定:

    • 函數名稱:輸入函數名稱。

    • 執行期:選擇 Python 3.12

  4. 選擇建立函數

  5. 若要設定測試事件,請選擇 Test (測試)

  6. 事件名稱輸入 test

  7. 選擇儲存變更

  8. 若要調用函數,請選擇 Test (測試)。

主控台將建立一個 Lambda 函數,其具有名為 lambda_function 的單一來源檔案。您可以使用內建的程式碼編輯器編輯該檔案並加入更多檔案。選擇 Save (儲存) 以儲存變更。然後,若要執行程式碼,請選擇 Test (測試)。

注意

Lambda 主控台用 AWS Cloud9 來在瀏覽器中提供整合式開發環境。您也可以使用 AWS Cloud9 在自己的環境中開發 Lambda 函數。若要取得更多資訊,請參閱使用指南 AWS 工具組中的〈使用 AWS Lambda 函數〉。 AWS Cloud9

注意

若要在本機環境中開始進行應用程式開發,請部署本指南 GitHub 儲存庫中提供的其中一個範例應用程式。

以 Python 編寫的範例 Lambda 應用程式
  • 空白蟒蛇- 一個 Python 函數,顯示日誌記錄,環境變量, AWS X-Ray 跟踪,圖層,單元測試和 SDK 的使用。 AWS

您的 Lambda 函數隨附 CloudWatch 日誌記錄群組。函數運行時將有關每次調用的詳細信息發送到 CloudWatch 日誌。它在調用期間會轉送您的函數輸出的任何記錄。如果您的函數傳回錯誤,Lambda 會對該錯誤進行格式化之後傳回給調用端。

包含執行階段的 SDK 版本

Python 執行階段中包含的 AWS SDK 版本取決於執行階段版本和您的 AWS 區域. 若要尋找您正在使用的執行階段中包含的 SDK 版本,請使用下列程式碼建立 Lambda 函數。

import boto3 import botocore def lambda_handler(event, context): print(f'boto3 version: {boto3.__version__}') print(f'botocore version: {botocore.__version__}')

回應格式

在 Python 3.12 及更高版本 Python 的執行期中,函數傳回的 JSON 回應包含 Unicode 字元。早期版本 Python 的執行期會在回應中傳回 Unicode 字元的逸出序列。例如,在 Python 3.11 中,如果您傳回 Unicode 字串,如 "こんにちは",它將逸出 Unicode 字元並傳回 "\u3053\u3093\u306b\u3061\u306f"。Python 3.12 執行期會傳回原始的 "こんにちは"。

使用 Unicode 回應可使 Lambda 回應變小,因此能更容易地將較大的回應納入同步函數的 6 MB 最大承載大小。在之前的範例中,逸出版本為 32 位元組,相較之下,Unicode 字串為 17 位元組。

當您升級到 Python 3.12 時,可能需要調整您的程式碼以適應新的回應格式。若呼叫者預期得到逸出 Unicode,您必須新增程式碼至傳回的函數以便手動逸出 Unicode,或調整呼叫者以處理 Unicode 傳回。

延伸模組正常關機

Python 3.12 及更高版本 Python 的執行期為具有外部延伸模組的函數提供正常關機功能。當 Lambda 關閉執行環境時,它會傳送 SIGTERM 訊號到執行期,然後傳送 SHUTDOWN 事件到每個註冊的外部延伸模組。您可以捕獲 Lambda 函數中的 SIGTERM 訊息並清理資源,例如由函數建立的資料庫連線等。

若要詳細了解執行環境生命週期,請參閱 Lambda 執行環境。如需如何搭配擴充功能使用正常關機的範例,請參閱AWS 範例 GitHub 儲存庫