跳至內容

為什麼我的 Lambda@Edge CloudWatch 日誌沒有送達?

1 分的閱讀內容
0

我已將 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 調用該函數的區域。請完成下列步驟:

  1. 請開啟 CloudFront console (CloudFront 主控台)。
  2. Telemetry (遙測) 下,選擇 Monitoring (監控)。
  3. 選擇 Lambda@Edge 索引標籤。
  4. 選取您的 Lambda @Edge 函數,然後選擇 View metrics (檢視指標)。
  5. 選取 View function logs (檢視函數日誌),然後選取 CloudFront 調用該函數的區域。
    **注意:**如果您在區域中看到錯誤,請在 Errors (錯誤) 指標圖中選取該區域。
  6. 若要驗證 CloudFront 路由請求的邊緣節點,請檢查 x-amz-cf-pop 回應的標頭值。然後,檢查 CloudWatch Logs 中對應的區域,以檢閱日誌檔案。例如,如果 x-amz-cf-popIAD89-P1,則 IAD 是機場代碼,並且 CloudFront 在 us-east-1 中處理請求。

如果 Lambda 向 CloudFront 傳回無效回應,則 CloudFront 會在日誌檔案中記錄錯誤訊息。然後,CloudFront 會將這些日誌發佈到 Lambda 函數執行所在區域的 CloudWatch Logs。日誌群組使用下列格式:/aws/cloudfront/LambdaEdge/DistributionId。若要尋找可以找到 CloudWatch Logs 日誌檔案的區域,請參閱確定 Lambda@Edge 區域

相關資訊

報告、指標和日誌

確定您的帳戶是否將日誌推送到 CloudWatch

AWS 官方已更新 1 年前