我已將 AWS Lambda@Edge 函數與 Amazon CloudFront 發佈建立關聯。但我在 Amazon CloudWatch Logs 日誌串流中找不到 Lambda@Edge 函數的日誌。
解決方法
檢查與 Lambda @Edge 函數關聯之 IAM 角色的權限
如果與 Lambda@Edge 函數關聯的 AWS Identity and Access Management (IAM) 角色缺少所需的權限,則系統不會填寫 Lambda@Edge 日誌。請確認函數角色是否具有建立日誌群組和串流,以及將日誌事件放入任何 AWS 區域所需的權限。
IAM 政策範例:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:*:*:*"
]
}
]
}
如需進一步了解將資料傳送至 CloudWatch Logs 所需的權限,請參閱為 Lambda@Edge 設定 IAM 權限和角色。
在 CloudFront 調用 Lambda 函數的區域中找到日誌
在 CloudFront 主控台中確認區域。如果您使用了不正確的區域,那麼您可能無法看到日誌。
當您調用 Lambda @Edge 函數時,Lambda 會在接收請求的區域中建立 CloudWatch Logs 日誌串流。日誌群組名稱使用下列格式:/aws/lambda/us-east-1.function-name。
若要尋找 Lambda @Edge 函數日誌,請尋找 CloudFront 調用該函數的區域。請完成下列步驟:
- 請開啟 CloudFront console (CloudFront 主控台)。
- 在 Telemetry (遙測) 下,選擇 Monitoring (監控)。
- 選擇 Lambda@Edge 索引標籤。
- 選取您的 Lambda @Edge 函數,然後選擇 View metrics (檢視指標)。
- 選取 View function logs (檢視函數日誌),然後選取 CloudFront 調用該函數的區域。
**注意:**如果您在區域中看到錯誤,請在 Errors (錯誤) 指標圖中選取該區域。
- 若要驗證 CloudFront 路由請求的邊緣節點,請檢查 x-amz-cf-pop 回應的標頭值。然後,檢查 CloudWatch Logs 中對應的區域,以檢閱日誌檔案。例如,如果 x-amz-cf-pop 是 IAD89-P1,則 IAD 是機場代碼,並且 CloudFront 在 us-east-1 中處理請求。
如果 Lambda 向 CloudFront 傳回無效回應,則 CloudFront 會在日誌檔案中記錄錯誤訊息。然後,CloudFront 會將這些日誌發佈到 Lambda 函數執行所在區域的 CloudWatch Logs。日誌群組使用下列格式:/aws/cloudfront/LambdaEdge/DistributionId。若要尋找可以找到 CloudWatch Logs 日誌檔案的區域,請參閱確定 Lambda@Edge 區域。
相關資訊
報告、指標和日誌
確定您的帳戶是否將日誌推送到 CloudWatch