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

2 分的閱讀內容
0

我需要針對我正在開發的 Amazon API Gateway REST API 或 WebSocket API 進行偵錯。如何開啟記錄功能以針對 API 進行疑難排解?

簡短說明

若要對 API Gateway REST API 或 WebSocket API 進行疑難排解,請使用 Amazon CloudWatch Logs 以開啟執行記錄和存取記錄功能。

注意:HTTP API 目前僅支援存取記錄,而且這些 API 的記錄設定不同。如需詳細資訊,請參閱設定 HTTP API 的記錄功能

執行日誌包含可用來識別和疑難排解大部分 API 錯誤的資訊。例如:

存取日誌包含有關存取您 API 的使用者及其存取方式的詳細資訊。您也可以使用日誌來疑難排解 API 錯誤。如需有關每種記錄類型的詳細資訊,請參閱適用於 API Gateway 的 CloudWatch 日誌格式

解決方法

建立 IAM 角色以將日誌記錄至 CloudWatch

1.    在 AWS Identity and Access Management (IAM) 主控台的導覽窗格中,選擇角色

2.    在角色窗格中,選擇建立角色

3.    在建立角色頁面上,執行下列動作:
信任實體類型,選擇 AWS 服務
使用案例,選擇 API Gateway
選擇 API Gateway 選項按鈕。
選擇下一步

4.    請注意,在權限政策下,AWS 受管政策 AmazonAPIGatewayPushToCloudWatchLogs 是預設設定。該政策具有所有必要的權限。

5.    選擇下一步

6.    在命名、檢閱並建立下,執行下列操作:
角色名稱,輸入角色的名稱。
(選擇性) 在角色說明,根據您的偏好編輯說明。
(選擇性) 新增標籤
選擇建立角色

7.    在角色窗格的搜尋列中,輸入您建立的角色名稱。然後,從搜尋結果中選擇該角色。

8.    在摘要窗格中,複製角色 ARN。在下一部分中您需要使用此 Amazon Resource Name (ARN)

如需詳細資訊,請參閱 CloudWatch 記錄的許可

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

**注意:**如果您要跨不同 AWS 區域開發多個 API,請在每個區域中完成這些步驟。

1.    在 API Gateway 主控台API 窗格中,選擇您建立的 API 名稱。這應該是 REST API 或 WebSocket API (而不是 HTTP API)。

2.    在左側導覽窗格底部的用戶端憑證區段下方,選擇設定

3.    在設定下的 CloudWatch 日誌角色 ARN,貼上您複製的 IAM 角色 ARN。

4.    選擇儲存
**注意:**主控台不會確認 ARN 已儲存。

開啟 API 和階段的記錄功能

1.    在 API Gateway 主控台的 API 窗格中,選擇您建立的 API 名稱。

2.    在左側導覽窗格中,選擇 階段。然後,選擇所需的階段名稱。

3.    選擇日誌/追蹤索引標籤。

4.    在日誌/追蹤 索引標籤的 CloudWatch 設定下,執行下列動作以開啟執行記錄:
選擇啟用 CloudWatch 記錄核取方塊。
日誌層級,選擇 INFO 以產生所有請求的執行日誌。或者,選擇 ERROR,僅針對造成 API 錯誤的請求產生執行日誌。
如果是 REST API,選擇記錄完整請求/回應資料核取方塊。或者,如果是 WebSocket API,選擇記錄完整訊息資料核取方塊。

5.    在自訂存取記錄下,執行下列動作以開啟存取記錄:
選擇啟用存取記錄核取方塊。
存取日誌目的地 ARN,輸入 Amazon Kinesis Data Firehose (僅支援 REST API) 或 CloudWatch 日誌群組的 ARN。

輸入日誌格式。如需指引,請選擇 CLFJSONXMLCSV 來查看該格式的範例。

6.    選擇儲存變更
**注意:**主控台不會確認設定已儲存。

如需詳細資訊,請參閱使用 API Gateway 主控台設定 CloudWatch API 記錄功能

測試您的記錄功能設定

1.    使用您的用戶端應用程式或者使用 Postman 應用程式wscat (適用於 WebSocket API) 等工具,傳送新請求至您的 API。

2.    在 CloudWatch 主控台左側導覽窗格的日誌下,選擇日誌群組

3.    在日誌群組清單中,選擇要偵錯的 API 日誌群組。
如果是 REST API,日誌群組的名稱格式如下: API-Gateway-Execution-Logs_apiId/stageName
如果是 WebSocket API,日誌群組的名稱格式如下:/aws/apigateway/apiId/stageName
**注意:**存取日誌位於您在開啟存取記錄時為其指定 ARN 的日誌群組中。

4.    在日誌串流清單中,選擇具有最新**上次事件時間的日誌串流。**此選擇將能讓您查看具有請求執行或存取詳細資訊的訊息。

如需詳細資訊,請參閱在 CloudWatch 主控台中檢視 API Gateway 日誌事件


相關資訊

在 API Gateway 中設定 REST API 的 CloudWatch 記錄功能

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

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

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