如何開啟 CloudWatch 日誌以對我的 API Gateway REST API 或 WebSocket API 進行疑難排解?

3 分的閱讀內容
0

我想針對我正在建立的 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

請完成下列步驟:

  1. 開啟 AWS Identity and Access Management (IAM) 主控台
  2. 在導覽窗格中,選擇 Roles (角色)。
  3. Roles (角色) 窗格中,選擇 Create role (建立角色)。
  4. Create role (建立角色) 頁面上,輸入下列資訊:
    對於 Trusted entity (信任實體),選擇 AWS Service (AWS 服務)。
    對於 use case (使用案例),選擇 API Gateway,然後選擇 API Gateway 選項按鈕。
    選擇 Next (下一步)。
  5. Permissions policies (權限政策) 下,使用具有所有必要權限的預設 AmazonAPIGatewayPushToCloudWatchLogs AWS 受管政策
  6. 選擇 Next (下一步)。
  7. Name, review and create (摘要命名、檢閱並建立) 下,輸入下列資訊:
    Role name (角色名稱),輸入角色的名稱。
    (選擇性) 在 Role description (角色說明),根據您的偏好編輯說明。
    (選擇性) Add tags (新增標籤)。
    選擇 Create role (建立角色)。
  8. Roles (角色) 窗格中,選擇您建立的角色。
  9. Summary (摘要) 窗格中,記下要在下一區段中使用的角色 ARN

如需權限的資訊,請參閱 CloudWatch 日誌記錄的權限

在 API Gateway 主控台中新增 IAM 角色

請完成下列步驟:

  1. 開啟 API Gateway console (API Gateway 主控台)。
  2. API 窗格中,選擇 REST API 或 WebSocket API 的名稱,而不是 HTTP API。
  3. 在導覽窗格中,選擇 Settings (設定)。
  4. Settings (設定) 下的 CloudWatch log role ARN (CloudWatch 日誌角色 ARN),輸入 IAM 角色的 ARN。
    注意: CloudWatch 日誌角色是 AWS 區域級設定,您可以將其與區域中的所有 API 一起使用。
  5. 選擇 Save (儲存)。

注意: 如果您在不同的區域建立多個 API,請在每個區域中完成上述步驟。

開啟 API 日誌記錄並暫存 API

請完成下列步驟:

  1. 開啟 API Gateway console (API Gateway 主控台)。
  2. 在導覽窗格中,選擇 API,然後選取您的 API。
  3. 在導覽窗格中,選擇 Stages (階段),然後選擇您的階段。
  4. Logs and tracing (日誌和追蹤) 下,選擇 Edit (編輯)。
  5. CloudWatch logs (CloudWatch 日誌) 下,從下拉式功能表中選取層級。
    注意: 對於完整的請求和回應日誌,請選擇 Data tracing (資料追蹤) 選項,並將日誌記錄層級設為 Error and info logs (錯誤和資訊日誌)。 最佳做法是不要為生產 API 啟用 Data tracing (資料追蹤),因為資料追蹤可能會記錄敏感資料。
  6. 選擇 Detailed metrics (詳細指標)。
  7. Custom Access Logging (自訂存取日誌記錄) 下,完成以下步驟:
    選取 Enable Access Logging (啟用存取日誌記錄)。
    對於 Access Log Destination ARN (存取日誌目的地 ARN),輸入 Amazon Data FirehoseCloudWatch 日誌群組的 ARN。
    注意: 只有 REST API 支援 Firehose ARN。
  8. 輸入日誌格式。
  9. 選擇 Save Changes (儲存變更)。

測試您的日誌記錄設定

注意: 若要將新請求傳送至您的 API,請使用您的用戶端應用程式或者使用 Postman 應用程式wscat (適用於 WebSocket API) 等工具。

請完成下列步驟:

  1. 開啟 CloudWatch console (CloudWatch 主控台)。
  2. 在導覽窗格的 Logs (日誌) 下,選擇 Log groups (日誌群組)。
  3. 對於 Log groups (日誌群組),選取要偵錯的 API 日誌群組:
    對於 REST API,日誌群組名稱採用 API-Gateway-Execution-Logs_apiId/stageName 格式。
    對於 WebSocket API,日誌群組名稱採用 /aws/apigateway/apiId/stageName 格式。
    **注意:**存取日誌位於您在開啟存取日誌記錄時指定的日誌群組中。
  4. Log streams (日誌串流) 清單中,選擇具有最新最後事件時間的日誌串流,以查看包含請求詳細資訊的訊息。

相關資訊

API Gateway 映射範本和存取日誌記錄變數參考

使用 Amazon CloudWatch 指標來監控 REST API 執行

使用 CloudWatch 指標來監控 WebSocket API 執行