
- AWS Lambda 教程
- AWS Lambda - 首頁
- AWS Lambda - 概述
- AWS Lambda - 環境設定
- AWS Lambda - 簡介
- 構建 Lambda 函式
- NODEJS 函式
- Java 函式
- Python 函式
- Go 函式
- C# 函式
- 配置 Lambda 函式
- 使用 AWS 控制檯建立和部署
- 使用 AWS CLI 建立和部署
- 使用 Serverless Framework 建立和部署
- AWS 執行和呼叫 Lambda 函式
- 刪除 Lambda 函式
- 使用 Amazon API Gateway
- Lambda 函式與 Amazon S3
- Lambda 函式與 Amazon DynamoDB
- Lambda 函式與定時事件
- Lambda 函式與 Amazon SNS
- Lambda 函式與 CloudTrail
- Lambda 函式與 Amazon Kinesis
- Lambda 函式與自定義使用者應用程式
- AWS Lambda@Edge 與 CloudFront
- 使用 CloudWatch 進行監控和故障排除
- AWS Lambda - 附加示例
- AWS Lambda 有用資源
- AWS Lambda - 快速指南
- AWS Lambda - 有用資源
- AWS Lambda - 討論
AWS Lambda – Python 函式
本章將建立一個簡單的 Python AWS Lambda 函式,並詳細瞭解其工作原理。
在開始在 AWS 中建立 Lambda 函式之前,我們需要 Python 的 AWS 工具包支援。為此,請按照以下步驟操作,並觀察相應的附加螢幕截圖:
步驟 1
登入 AWS 控制檯並建立 Lambda 函式,選擇 Python 作為語言。

步驟 2
現在,單擊建立函式按鈕並輸入建立簡單的 Python AWS Lambda 的詳細資訊。此程式碼返回訊息Hello from Lambda using Python,如下所示:

步驟 3
現在,儲存更改並測試程式碼以檢視輸出。當您使用 UI 中的測試按鈕在 AWS 控制檯中對其進行測試時,您應該會看到以下輸出和日誌。

步驟 4
現在,您可以在任何 Python 編輯器或 IDE 中編寫程式碼。在這裡,我們使用 Visual Studio Code 編寫程式碼。您稍後應壓縮檔案並將其上傳到 AWS 控制檯。

在這裡,我們壓縮了程式碼並使用 AWS 控制檯。
步驟 5
現在,選擇上傳 .ZIP 檔案選項,如下所示:

Python 的處理程式詳細資訊
請注意,處理程式必須是檔名後跟函式名。在上述情況下,我們的檔名是hellopython.py,函式名是my_handler;因此,處理程式將是hellopython.my_handler。
上傳完成後並儲存更改後,它實際上會在 AWS Lambda 控制檯的線上編輯器中顯示 zip 檔案的詳細資訊。現在,讓我們測試程式碼以檢視輸出和日誌。

現在,讓我們使用以下示例程式碼瞭解 Lambda 函式的詳細資訊:
def my_handler(event, context): return "aws lambda in python using zip file"
在上面的程式碼中,函式名 my_handler 有兩個引數,event 和 context。
Python 中的 Context 物件
Context 物件提供諸如 Lambda 函式名稱、剩餘時間(毫秒)、請求 ID、CloudWatch 組名稱、超時詳細資訊等詳細資訊。
下表顯示了 context 物件上可用的方法和屬性:
序號 | 方法名稱和說明 |
---|---|
1 | get_remaining_time_in_millis() 此方法以毫秒為單位提供 Lambda 函式終止函式之前的剩餘時間 |
序號 | 屬性和說明 |
---|---|
1 | function_name 這將提供 AWS Lambda 函式名稱 |
2 | function_version 這將提供正在執行的 AWS Lambda 函式的版本 |
3 | invoked_function_arn 這將提供 ARN 詳細資訊。 |
4 | memory_limit_in_mb 這顯示了建立 Lambda 函式時新增的記憶體限制 |
5 | aws_request_id 這將提供 AWS 請求 ID。 |
6 | log_group_name 這將提供 CloudWatch 組名稱。 |
7 | log_stream_name 這將提供寫入日誌的 CloudWatch 日誌流名稱。 |
8 | identity 當與 AWS Mobile SDK 一起使用時,這將提供有關 Amazon Cognito 身份提供程式的詳細資訊。提供的詳細資訊如下:
|
9 | client_context 當與 AWS Mobile SDK 一起使用時,這將提供客戶端應用程式的詳細資訊。提供的詳細資訊如下:
|
讓我們看看 Python 中一個有效的示例,它輸出上下文詳細資訊。請觀察以下程式碼:
def my_handler(event, context): print("Log stream name:", context.log_stream_name) print("Log group name:", context.log_group_name) print("Request ID:",context.aws_request_id) print("Mem. limits(MB):", context.memory_limit_in_mb) print("Time remaining (MS):", context.get_remaining_time_in_millis()) return "aws lambda in python using zip file"
上面顯示的程式碼的相應輸出如下所示:

使用 Python 進行日誌記錄
要使用 Python 記錄資訊,我們可以使用可用的 print 或 logger 函式。讓我們使用上面關於上下文的示例,並在 CloudWatch 中檢查是否列印了日誌。請觀察以下程式碼:
def my_handler(event, context): print("Log stream name:", context.log_stream_name) print("Log group name:", context.log_group_name) print("Request ID:",context.aws_request_id) print("Mem. limits(MB):", context.memory_limit_in_mb) print("Time remaining (MS):", context.get_remaining_time_in_millis()) return "aws lambda in python using zip file"
此程式碼在 CloudWatch 中的輸出如下所示:

請觀察以下示例,以瞭解有關使用 logger 將日誌列印到 CloudWatch 的資訊:
import logging logger = logging.getLogger() logger.setLevel(logging.INFO) def my_handler(event, context): logger.info('Using logger to print messages to cloudwatch logs') return "aws lambda in python using zip file"
此程式碼的輸出將如以下螢幕截圖所示:

Python 中的 Lambda 函式錯誤處理
在本節中,讓我們來看一個有效的示例,該示例顯示如何在 Python 中處理錯誤。請觀察此處提供的程式碼段:
def error_handler(event, context): raise Exception('Error Occured!')

日誌顯示如下圖所示:
