如何判定我的 Lambda 函數是否逾時?

1 分的閱讀內容
0

我的 AWS Lambda 函數遇到間歇性錯誤,檢閱該函數的 Amazon CloudWatch 指標時也不清楚問題原因。我的 Lambda 函數的錯誤率增加可能是由逾時問題引起的嗎? 如果是這樣,我如何判定我的 Lambda 函數是否逾時?

簡短描述

檢閱 Lambda 函數的 CloudWatch 日誌群組時,搜尋片語 Task timed out (任務已逾時)。然後,使用關聯逾時叫用的請求 ID 來擷取每個叫用逾時的完整日誌。

若要對您識別的任何逾時錯誤進行疑難排解,請參閲如何對 Lambda 函數叫用逾時錯誤進行疑難排解?

**注意:**當 Lambda 函數叫用逾時,Task timed out (任務已逾時) 錯誤消息會出現在失敗叫用的 CloudWatch 日誌中,而不是 Error (錯誤) 訊息中。如果您只在函數的 CloudWatch 日誌中搜尋 Error (錯誤) 訊息,則搜尋只會傳回與程式碼相關的執行時間錯誤,而不會傳回叫用逾時錯誤。如需詳細資訊,請參閲 使用 Amazon CloudWatch 監控 AWS Lambda 錯誤

解決方案

先決條件

如果尚未這樣做,請將 CloudWatch 記錄許可授予您的 Lambda 函數。如需詳細資訊,請參閲 Lambda 功能的 AWS 受管策略

在函數的 CloudWatch 日誌群組中搜尋片語 "Task timed out" (任務已逾時),來擷取任何逾時叫用的請求 ID

**注意:**CloudWatch Logs Insights 查詢會根據查詢的資料量產生費用。如需詳細資訊,請參閱 Amazon CloudWatch 定價

1.    開啟 Lambda 主控台的函數頁面

2.    選擇一個函數。

3.    選擇 Monitor (監控)。

4.    選擇 View logs in CloudWatch (檢視 CloudWatch 中的日誌)。此函數的 Log group details (日誌群組詳細資訊) 頁面即會在 CloudWatch 主控台中開啟。

5.    選擇 View in Logs Insights (在 Logs Insights 中檢視)。

6.    在 Logs Insights 查詢文字方塊中,輸入以下查詢,然後選擇 Run query (執行查詢):

fields @timestamp, @requestId, @message, @logStream
| filter @message like "Task timed out"
| sort @timestamp desc
| limit 100

回應即會傳回逾時叫用的請求 ID 清單。

如需詳細資訊,請參閱 使用 CloudWatch Logs Insights 分析日誌資料

**注意:**對於大型日誌群組,請考慮將 datetime 函數新增至 Insights 查詢來限制搜尋範圍。如需詳細資訊,請參閲 CloudWatch Logs Insights 查詢語法

使用逾時叫用的請求 ID 來擷取每個叫用逾時的完整日誌

將標準記錄功能用於您正在使用的程式設計語言來輸出日誌。如需語言特定指示,請參閲存取 Amazon CloudWatch Logs 中的 AWS Lambda 項目 中的使用 AWS CLI 一節。


AWS 官方
AWS 官方已更新 2 年前