跳至內容

如何對 API Gateway REST API 遺失的 CloudWatch Logs 進行疑難排解?

2 分的閱讀內容
0

我想對在為 Amazon API Gateway 啟用 Amazon CloudWatch Logs 時,找不到任何日誌的問題進行疑難排解。

簡短描述

當您在 API Gateway 中為 REST API 設定 CloudWatch 記錄時,您可以使用執行記錄和存取記錄。API Gateway 不會將其拒絕的所有用戶端錯誤記錄到執行日誌中。例如,如果用戶端向您 REST API 的錯誤資源路徑發出 API 請求,則用戶端將收到以下回應:"403 Missing Authentication Token"。API Gateway 不會將此類回應記錄到執行日誌中。若要對用戶端錯誤進行疑難排解,請使用 CloudWatch 存取記錄。

API Gateway 可能不會產生下列錯誤的日誌:

  • "413 Request Entity Too Large" 錯誤
  • "431 Request Header Fields Too Large" 錯誤
  • "Excessive 429 Too Many Requests" 錯誤
  • 由於用戶端將請求發送至未設定 API 對應的自訂網域,因此產生了 400 系列錯誤
  • 由於內部錯誤而導致的 500 系列錯誤

如需詳細資訊,請參閱監控 API Gateway 中的 REST API

解決方法

驗證 CloudWatch Logs 的 API Gateway 權限

若要啟用 CloudWatch Logs,您必須授予 API Gateway 存取權,以在 AWS 帳戶中讀取和寫入 CloudWatch 日誌。

首先,建立一個 AWS Identity and Access Management (IAM) 角色,並以 apigateway.amazonaws.com 做為受信任實體。然後,將 AmazonAPIGatewayPushToCloudWatchLogs AWS 受管政策附加到該角色。將角色 Amazon Resource Name (ARN) 設定為您帳戶的 cloudwatchRoleArn

政策範例:

{    
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:DescribeLogGroups",
        "logs:DescribeLogStreams",
        "logs:PutLogEvents",
        "logs:GetLogEvents",
        "logs:FilterLogEvents"
      ],
      "Resource": "*"
    }
  ]
}

**注意:**確保為您的 AWS 區域啟用 AWS Security Token Service (AWS STS)。此外,請確認您已為想要啟用 CloudWatch Logs 的所有區域啟用了 IAM 角色。

如需詳細資訊,請參閱在 AWS 區域中啟用和停用 AWS STSCloudWatch 記錄的權限

確認 API 閘道記錄設定

確認您是否正確設定了 API Gateway 的 CloudWatch 執行或存取記錄設定

**注意:**您可以分別獨立啟用執行記錄和存取記錄。

請完成下列步驟:

  1. 開啟 API Gateway console (API Gateway 主控台)。
  2. 在導覽窗格中,選擇 API
  3. 選取您的 API,然後選擇 Stages (階段)。
  4. 選擇您的階段,然後選擇 Logs/Tracing (日誌/追蹤) 索引標籤。
  5. CloudWatch Settings (CloudWatch 設定) 中,選取 Enable CloudWatch Logs (啟用 CloudWatch Logs)。
  6. Log level (日誌層級) 設定為 ERROR (錯誤) INFO (資訊)。
    **注意:**如果您將 Log level (日誌層級) 設定為 ERROR (錯誤),則 API Gateway 只會記錄請求錯誤,而不會記錄成功的 API 請求。
  7. 選取 Data tracing (資料追蹤) 為您的階段啟用資料追蹤記錄。
    注意:最佳實務是不要為生產 API 啟用資料追蹤,因為 API 閘道可能會記錄敏感資料。
  8. Custom Access Logging (自訂存取日誌),選擇 Enable Access Logging (啟用存取日誌)。

確認您的記錄方法

預設情況下,所有 API 資源都使用與 API 資源階段相同的組態。如果不想繼承該階段,請覆寫設定並設定不同的組態。

若要確認您的記錄方法,請完成以下步驟:

  1. 開啟 API Gateway console (API Gateway 主控台)。
  2. 在導覽窗格中,選擇 API
  3. 選取您的 API,然後選擇 Stages (階段)。
  4. Stages (階段) 中,展開您的階段名稱。然後選擇您的 HTTP 方法,例如 GET
  5. Settings (設定) 下,選擇 Override for this method (覆寫此方法)。
    **注意:**若要進行其他日誌變更,請在 CloudWatch settings (CloudWatch 設定) 區段更新必要的設定。
  6. 選擇 Save Changes (儲存變更)。

相關資訊

如何在我的 CloudWatch Logs 中尋找 API Gateway REST API 錯誤?

如何設定 API 閘道的存取記錄?

如何開啟 CloudWatch Logs,以對 API Gateway REST API 或 WebSocket API 進行疑難排解?