我想針對我正在建立的 Amazon API Gateway REST API 或 WebSocket API 進行偵錯。
簡短說明
若要對 API Gateway REST API 或 WebSocket API 進行疑難排解,請使用 Amazon CloudWatch Logs。如需各種日誌格式類型的資訊,請參閱 API Gateway 的 CloudWatch 日誌格式。
注意: HTTP API 僅支援存取日誌記錄。如需詳細資訊,請參閱在 API Gateway 中設定 HTTP API 的日誌記錄。
您可以在日誌中找到以下資訊:
解決方法
建立 IAM 角色以將日誌傳送到 CloudWatch
請完成下列步驟:
- 開啟 AWS Identity and Access Management (IAM) 主控台。
- 在導覽窗格中,選擇 Roles (角色)。
- 在 Roles (角色) 窗格中,選擇 Create role (建立角色)。
- 在 Create role (建立角色) 頁面上,輸入下列資訊:
對於 Trusted entity (信任實體),選擇 AWS Service (AWS 服務)。
對於 use case (使用案例),選擇 API Gateway,然後選擇 API Gateway 選項按鈕。
選擇 Next (下一步)。
- 在 Permissions policies (權限政策) 下,使用具有所有必要權限的預設 AmazonAPIGatewayPushToCloudWatchLogs AWS 受管政策。
- 選擇 Next (下一步)。
- 在 Name, review and create (摘要命名、檢閱並建立) 下,輸入下列資訊:
在 Role name (角色名稱),輸入角色的名稱。
(選擇性) 在 Role description (角色說明),根據您的偏好編輯說明。
(選擇性) Add tags (新增標籤)。
選擇 Create role (建立角色)。
- 在 Roles (角色) 窗格中,選擇您建立的角色。
- 在 Summary (摘要) 窗格中,記下要在下一區段中使用的角色 ARN。
如需權限的資訊,請參閱 CloudWatch 日誌記錄的權限。
在 API Gateway 主控台中新增 IAM 角色
請完成下列步驟:
- 開啟 API Gateway console (API Gateway 主控台)。
- 在 API 窗格中,選擇 REST API 或 WebSocket API 的名稱,而不是 HTTP API。
- 在導覽窗格中,選擇 Settings (設定)。
- 在 Settings (設定) 下的 CloudWatch log role ARN (CloudWatch 日誌角色 ARN),輸入 IAM 角色的 ARN。
注意: CloudWatch 日誌角色是 AWS 區域級設定,您可以將其與區域中的所有 API 一起使用。
- 選擇 Save (儲存)。
注意: 如果您在不同的區域建立多個 API,請在每個區域中完成上述步驟。
開啟 API 日誌記錄並暫存 API
請完成下列步驟:
- 開啟 API Gateway console (API Gateway 主控台)。
- 在導覽窗格中,選擇 API,然後選取您的 API。
- 在導覽窗格中,選擇 Stages (階段),然後選擇您的階段。
- 在 Logs and tracing (日誌和追蹤) 下,選擇 Edit (編輯)。
- 在 CloudWatch logs (CloudWatch 日誌) 下,從下拉式功能表中選取層級。
注意: 對於完整的請求和回應日誌,請選擇 Data tracing (資料追蹤) 選項,並將日誌記錄層級設為 Error and info logs (錯誤和資訊日誌)。 最佳做法是不要為生產 API 啟用 Data tracing (資料追蹤),因為資料追蹤可能會記錄敏感資料。
- 選擇 Detailed metrics (詳細指標)。
- 在 Custom Access Logging (自訂存取日誌記錄) 下,完成以下步驟:
選取 Enable Access Logging (啟用存取日誌記錄)。
對於 Access Log Destination ARN (存取日誌目的地 ARN),輸入 Amazon Data Firehose 或 CloudWatch 日誌群組的 ARN。
注意: 只有 REST API 支援 Firehose ARN。
- 輸入日誌格式。
- 選擇 Save Changes (儲存變更)。
測試您的日誌記錄設定
注意: 若要將新請求傳送至您的 API,請使用您的用戶端應用程式或者使用 Postman 應用程式或 wscat (適用於 WebSocket API) 等工具。
請完成下列步驟:
- 開啟 CloudWatch console (CloudWatch 主控台)。
- 在導覽窗格的 Logs (日誌) 下,選擇 Log groups (日誌群組)。
- 對於 Log groups (日誌群組),選取要偵錯的 API 日誌群組:
對於 REST API,日誌群組名稱採用 API-Gateway-Execution-Logs_apiId/stageName 格式。
對於 WebSocket API,日誌群組名稱採用 /aws/apigateway/apiId/stageName 格式。
**注意:**存取日誌位於您在開啟存取日誌記錄時指定的日誌群組中。
- 在 Log streams (日誌串流) 清單中,選擇具有最新最後事件時間的日誌串流,以查看包含請求詳細資訊的訊息。
相關資訊
API Gateway 映射範本和存取日誌記錄變數參考
使用 Amazon CloudWatch 指標來監控 REST API 執行
使用 CloudWatch 指標來監控 WebSocket API 執行