本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
邊緣函數日誌
您可以使用 Amazon CloudWatch Logs 來取得邊緣函數的日誌,包括 Lambda@Edge 和 CloudFront Functions。您可以使用 CloudWatch 主控台或 CloudWatch Logs API 存取日誌。
重要
我們建議您使用日誌,了解內容請求的性質,而不是像完全考量所有請求。CloudFront 依最佳作業基礎交付邊緣函數日誌。在實際處理請求之後,才可能長時間交付特定請求的日誌項目,在極少數的情況下,有可能完全不會交付日誌項目。從邊緣函數日誌省略日誌項目時,邊緣函數日誌中的項目數量與顯示於 AWS 帳單和使用量報告中的用量會不相符。
Lambda @Edge 日誌
Lambda@Edge 會自動將函數日誌傳送至 CloudWatch Logs,並在叫用函數 AWS 區域 的 中建立日誌串流。當您在 中建立或修改函數時 AWS Lambda,您可以使用預設 CloudWatch 日誌群組名稱或加以自訂。
-
預設日誌群組名稱是 ,
/aws/lambda/
其中<FunctionName>
是您在建立函數時指定的名稱。將日誌傳送至 CloudWatch 時,Lambda@Edge 會自動將<FunctionName>
us-east-1
字首新增至函數名稱,因此日誌群組名稱為/aws/lambda/us-east-1.
。此字首對應至建立函數 AWS 區域 的 。此字首仍是日誌群組名稱的一部分,即使在叫用函數的其他區域中也是如此。<FunctionName>
-
如果您指定自訂日誌群組名稱,例如
/
,Lambda@Edge 將不會新增區域字首。日誌群組名稱在叫用函數的所有其他區域中保持不變。MyLogGroup
注意
如果您建立自訂日誌群組,並指定與預設 相同的名稱/aws/lambda/
,Lambda@Edge 會將<FunctionName>
us-east-1
字首新增至函數名稱。
除了自訂日誌群組名稱之外,Lambda@Edge 函數還支援 JSON 和純文字日誌格式,以及日誌層級篩選。如需詳細資訊,請參閱《 AWS Lambda 開發人員指南》中的設定 Lambda 函數的預先記錄控制。
注意
Lambda@Edge 根據請求數量和日誌的大小節流日誌。
您必須檢閱正確 區域中的 CloudWatch 日誌檔案,才能檢視 Lambda@Edge 函數日誌檔案。若要檢視您 Lambda@Edge 函數正在執行的區域,請在 CloudFront 主控台檢視函數的指標圖形。指標將依每個 區域進行顯示。在同一頁面中,您可以選擇一個區域,然後檢視該區域的日誌檔以調查問題。
若要進一步了解如何搭配 Lambda@Edge 函數使用 CloudWatch Logs,請參閱下列主題:
-
如需在 CloudFront 主控台的監控區段檢視圖表的詳細資訊,請參閱使用 Amazon CloudWatch 監控 CloudFront 指標。
-
如需將資料傳送至 CloudWatch Logs 所需權限的相關資訊,請參閱 設定 Lambda@Edge 的 IAM 許可和角色。
-
如需將記錄新增至 Lambda@Edge 函數的資訊,請參閱 AWS Lambda 開發人員指南中的 Node.js 中的AWS Lambda 函數日誌記錄或 Python 中的AWS Lambda 函數日誌記錄。
-
如需 CloudWatch 記錄配額 (之前稱為限制) 的資訊,請參閱 Amazon CloudWatch Logs 使用者指南中的 CloudWatch Logs 配額。
CloudFront Functions 日誌
如果 CloudFront Functions 的程式碼包含 console.log()
陳述式,CloudFront Functions 會自動將這些日誌行傳送至 CloudWatch Logs。如果沒有任何 console.log()
陳述式,則不會傳送任何內容到 CloudWatch Logs。
CloudFront Functions 始終在美國東部 (維吉尼亞北部) 區域 (us-east-1
) 建立日誌串流,而無論是哪個節點執行該函數。日誌群組名稱的格式為 /aws/cloudfront/function/
,其中 <FunctionName>
是您在建立函數時提供給函數的名稱。日誌串流名稱的格式為 <FunctionName>
YYYY/M/D/
。UUID
以下顯示傳送至 CloudWatch Logs 的範例日誌訊息。每行都會以唯一識別 CloudFront 請求的 ID 開頭。訊息以包含 CloudFront 分佈 ID 的 START
行開頭,並以 END
行結尾。START
和 END
行之間是函數中 console.log()
陳述式產生的日誌行。
U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== START DistributionID: E3E5D42GADAXZZ
U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== Example function log output
U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== END
注意
CloudFront Functions 只會針對 LIVE
階段中的函數將日誌傳送至 CloudWatch,此類函數會執行以回應生產請求和回應。測試函數時,CloudFront 不會將任何日誌傳送至 CloudWatch。測試輸出包含錯誤、運算使用率和函數日誌 (console.log()
陳述式) 的相關資訊,但此資訊不會傳送至 CloudWatch。
CloudFront Functions 使用 AWS Identity and Access Management (IAM) 服務連結角色,將日誌傳送至您帳戶中的 CloudWatch Logs。服務連結角色是直接連結至 的 IAM 角色 AWS 服務。服務連結角色是由服務預先定義,並包含服務 AWS 服務 為您呼叫其他 所需的所有許可。CloudFront Functions 使用 AWSServiceRoleForCloudFrontLogger 服務連結角色。如需有關此角色的詳細資訊,請參閱 Lambda@Edge 的服務連結角色 (Lambda@Edge 會使用相同的服務連結角色)。
當函數失敗並出現驗證錯誤或執行錯誤時,資訊會記錄在標準日誌和即時日誌中。如需錯誤的特定資訊,請參閱 x-edge-result-type
、 x-edge-response-result-type
和 x-edge-detailed-result-type
欄位。