我已針對 Amazon API Gateway 啟動了 Amazon CloudWatch 日誌,但找不到任何日誌。
簡短說明
您可以使用 CloudWatch 日誌來協助偵錯與請求執行或用戶端存取 API 相關的問題。CloudWatch 日誌包括執行日誌和存取日誌。
對於執行日誌,API Gateway 管理 CloudWatch 日誌,包括建立日誌群組和日誌串流。對於存取日誌,您可以建立自己的日誌群組或選擇現有的日誌群組。
並非所有由 API 閘道拒絕的用戶端錯誤都會登錄到執行群組中。例如,用戶端向 REST API 的錯誤資源路徑發出 API 請求會傳回 403「缺少驗證權杖」回應。此類型的回應不會登錄執行日誌中。使用 CloudWatch 存取日誌來疑難排解用戶端錯誤。
如需詳細資訊,請參閱 API Gateway 的 CloudWatch 日誌格式。
API Gateway 可能無法產生以下項目的日誌:
- 413 請求實體錯誤太大。
- 過多 429 請求太多錯誤。
- 傳送至沒有 API 對應的自訂網域的請求發生的 400 個系列錯誤。
- 由內部故障引起的 500 系列錯誤。
如需詳細資訊,請參閱監控 REST API 。
解決方法
驗證 CloudWatch 記錄的 API Gateway 權限
若要啟用 CloudWatch 日誌,您必須授與 API Gateway 權限,以便為您的帳戶讀取和寫入 CloudWatch 日誌。**Amazon ApigatewayPushTo ** CloudWatchLogs 管理政策具有所需的權限。
建立 AWS Identity and Access Management (IAM) 角色,以 apigateway.amazonaws.com 作為其受信任實體。然後,將下列原則附加到 IAM 角色,並在 AWS 帳戶的 CloudWatchroLearn 屬性上設定 IAM 角色 ARN:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:DescribeLogGroups",
"logs:DescribeLogStreams",
"logs:PutLogEvents",
"logs:GetLogEvents",
"logs:FilterLogEvents"
],
"Resource": "*"
}
]
}
請確保:
- AWS Security Token Service (AWS STS) 已針對您的 AWS 區域啟用。如需詳細資訊,請參閱管理 AWS 區域中的 AWS STS。
- IAM 角色會針對您要啟用 CloudWatch 日誌的所有 AWS 區域啟用。
如需詳細資訊,請參閱 CloudWatch 日誌的許可。
驗證 API Gateway 日誌設定
確認已啟用了 API 閘道的 CloudWatch 執行或存取日誌設定。
**注意:**您可以彼此獨立啟用執行日誌和存取日誌。
- 開啟 API Gateway 主控台。
- 在導覽窗格中,選擇 API。
- 選擇您的 API,然後選擇階段。
- 在階段中,選擇您的階段,然後選擇日誌/追蹤索引標籤。
- 在 CloudWatch 設定中,確認下列項目:
選取啟用 CloudWatch 日誌。
日誌層級設定為 INFO。 注意事項:如果日誌層級設為 ERROR,則只會記錄 API Gateway 中的錯誤要求。成功的 API 請求不會記錄。
針對其他記錄資料,會選取記錄完整請求/回應資料,並選取啟用詳細 CloudWatch Metrics。
注意:最佳做法是不要為生產 API 啟用記錄完整請求/回應資料,這可能會導致記錄敏感資料。
- 在自訂存取日誌中,確認已選取啟用存取日誌。
驗證日誌方法並視需要取代
依照預設,所有 API 資源都使用與其階段相同的組態。如果您不想從此階段繼承,可以覆寫此設定,為每個方法提供不同的組態。
- 開啟 API Gateway 主控台。
- 在導覽窗格中,選擇 API。
- 選擇您的 API,然後選擇階段。
- 在階段中,展開階段名稱。然後選擇您的 HTTP 方法。例如,GET。
- 在設定中,為此方法選擇覆寫。
- 在 CloudWatch 設定中,視需要為您的使用案例進行任何其他日誌變更,然後選擇儲存變更。
如需詳細資訊,請參閱在 API Gateway 中為 REST API 設定 CloudWatch 日誌。
相關資訊
如何在我的 CloudWatch 日誌中尋找 API Gateway REST API 錯誤?
如何設定 API Gateway 的存取記錄?
如何開啟 CloudWatch 日誌以針對我的 API Gateway REST API 或 WebSocket API 進行疑難排解?