

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

# 邊緣函數日誌
<a name="edge-functions-logs"></a>

您可以使用 Amazon CloudWatch Logs 取得 [Lambda@Edge](lambda-at-the-edge.md) 和 [CloudFront Functions](cloudfront-functions.md) 兩種邊緣函數的日誌。您可以使用 CloudWatch 主控台或 CloudWatch Logs API 存取日誌檔案。

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

**Topics**
+ [Lambda @Edge 日誌](#lambda-at-edge-logs)
+ [CloudFront Functions 日誌](#cloudfront-function-logs)

## Lambda @Edge 日誌
<a name="lambda-at-edge-logs"></a>

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 函數的進階記錄控制項](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-cloudwatchlogs-advanced.html)。

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

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

若要進一步了解如何使用 CloudWatch Logs 搭配 Lambda@Edge 函數，請參閱下列的主題：
+ 如需在 CloudFront 主控台的**監控**區段檢視圖表的詳細資訊，請參閱[使用 Amazon CloudWatch 監控 CloudFront 指標](monitoring-using-cloudwatch.md)。
+ 如需將資料傳送至 CloudWatch Logs 所需權限的相關資訊，請參閱 [設定 Lambda@Edge 的 IAM 許可權限和角色](lambda-edge-permissions.md)。
+ 如需將記錄新增至 Lambda@Edge 函數的資訊，請參閱 *AWS Lambda 開發人員指南*中的 [Node.js 中的AWS Lambda 函數日誌記錄](https://docs.aws.amazon.com/lambda/latest/dg/nodejs-logging.html)或 [Python 中的AWS Lambda 函數日誌記錄](https://docs.aws.amazon.com/lambda/latest/dg/python-logging.html)。
+ 如需 CloudWatch 記錄配額 (之前稱為限制) 的資訊，請參閱 *Amazon CloudWatch Logs 使用者指南*中的 [CloudWatch Logs 配額](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch_limits_cwl.html)。

## CloudFront Functions 日誌
<a name="cloudfront-function-logs"></a>

如果 CloudFront Functions 的程式碼包含 `console.log()` 陳述式，CloudFront Functions 會自動將這些日誌行傳送至 CloudWatch Logs。如果沒有任何 `console.log()` 陳述式，則不會傳送任何內容到 CloudWatch Logs。

CloudFront Functions 始終在美國東部 (維吉尼亞北部) 區域 (`us-east-1`) 建立日誌串流，而無論是哪個節點執行該函數。日誌串流名稱的格式為 `YYYY/M/D/UUID`。

日誌群組名稱使用下列格式：
+ 對於快取行為層級的 CloudFront Functions，格式為 `/aws/cloudfront/function/<FunctionName>`
+ 對於分佈層級的 CloudFront Functions （連線函數），格式為 `/aws/cloudfront/connection-function/<FunctionName>`

`<FunctionName>` 是您在建立函數時提供給該函數的名稱。

**Example 檢視器請求**  
以下顯示傳送至 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
```

**Example 連線請求**  
以下顯示傳送至 CloudWatch Logs 的範例日誌訊息。每行都會以唯一識別 CloudFront 請求的 ID 開頭。訊息以包含 CloudFront 分佈 ID 的 `START` 行開頭，並以 `END` 行結尾。`START` 和 `END` 行之間是函數中 `console.log()` 陳述式產生的日誌行。  

```
U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== START DistributionID: E3E5D42GADA123
U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== 1.2.3.4
U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== END
```

**注意**  
CloudFront Functions 只會針對 `LIVE` 階段中的函數將日誌傳送至 CloudWatch，此類函數會執行以回應生產請求和回應。[測試函數](test-function.md)時，CloudFront 不會將任何日誌傳送至 CloudWatch。測試輸出包含錯誤、運算利用率和函數日誌 (`console.log()` 陳述式) 的相關資訊，但此資訊不會傳送至 CloudWatch。

CloudFront Functions 使用 AWS Identity and Access Management (IAM) [服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)，將日誌傳送至您帳戶中的 CloudWatch Logs。「服務連結角色」是一種直接連結至 AWS 服務的 IAM 角色。服務連結角色是由服務預先定義，並包含服務 AWS 服務 為您呼叫其他 所需的所有許可。CloudFront Functions 使用 **AWSServiceRoleForCloudFrontLogger** 服務連結角色。如需有關此角色的詳細資訊，請參閱 [Lambda@Edge 的服務連結角色](lambda-edge-permissions.md#using-service-linked-roles-lambda-edge) (Lambda@Edge 會使用相同的服務連結角色)。

當函數失敗並出現驗證錯誤或執行錯誤時，資訊會記錄在[標準日誌](AccessLogs.md)和[即時存取日誌](real-time-logs.md)中。如需特定錯誤的資訊，請參閱 `x-edge-result-type`、`x-edge-response-result-type` 和 `x-edge-detailed-result-type` 欄位。