邊緣函數日誌 - Amazon CloudFront

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

邊緣函數日誌

您可以使用 Amazon CloudWatch Logs 來取得邊緣函數的日誌,包括 Lambda@EdgeCloudFront Functions。您可以使用 CloudWatch 主控台或 CloudWatch Logs API 存取日誌。

重要

我們建議您使用日誌,了解內容請求的性質,而不是像完全考量所有請求。CloudFront 依最佳作業基礎交付邊緣函數日誌。在實際處理請求之後,才可能長時間交付特定請求的日誌項目,在極少數的情況下,有可能完全不會交付日誌項目。從邊緣函數日誌省略日誌項目時,邊緣函數日誌中的項目數量與顯示於 AWS 帳單和使用量報告中的用量會不相符。

Lambda @Edge 日誌

Lambda@Edge 會自動將函數日誌傳送至 CloudWatch Logs,並在叫用函數 AWS 區域 的 中建立日誌串流。當您在 中建立或修改函數時 AWS Lambda,您可以使用預設 CloudWatch 日誌群組名稱或加以自訂。

  • 預設日誌群組名稱是 ,/aws/lambda/<FunctionName>其中 <FunctionName> 是您在建立函數時指定的名稱。將日誌傳送至 CloudWatch 時,Lambda@Edge 會自動將us-east-1字首新增至函數名稱,因此日誌群組名稱為 /aws/lambda/us-east-1.<FunctionName>。此字首對應至建立函數 AWS 區域 的 。此字首仍是日誌群組名稱的一部分,即使在叫用函數的其他區域中也是如此。

  • 如果您指定自訂日誌群組名稱,例如 /MyLogGroup,Lambda@Edge 將不會新增區域字首。日誌群組名稱在叫用函數的所有其他區域中保持不變。

注意

如果您建立自訂日誌群組,並指定與預設 相同的名稱/aws/lambda/<FunctionName>,Lambda@Edge 會將us-east-1字首新增至函數名稱。

除了自訂日誌群組名稱之外,Lambda@Edge 函數還支援 JSON 和純文字日誌格式,以及日誌層級篩選。如需詳細資訊,請參閱《 AWS Lambda 開發人員指南》中的設定 Lambda 函數的預先記錄控制

注意

Lambda@Edge 根據請求數量和日誌的大小節流日誌。

您必須檢閱正確 區域中的 CloudWatch 日誌檔案,才能檢視 Lambda@Edge 函數日誌檔案。若要檢視您 Lambda@Edge 函數正在執行的區域,請在 CloudFront 主控台檢視函數的指標圖形。指標將依每個 區域進行顯示。在同一頁面中,您可以選擇一個區域,然後檢視該區域的日誌檔以調查問題。

若要進一步了解如何搭配 Lambda@Edge 函數使用 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 行結尾。STARTEND 行之間是函數中 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-typex-edge-response-result-typex-edge-detailed-result-type 欄位。