如何启用 CloudWatch Logs 以对 API Gateway REST API 或 WebSocket API 进行故障排除?

2 分钟阅读
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(创建角色)页面上,输入以下信息:
    对于可信实体,选择 AWS 服务
    对于 use case(用例),选择 API Gateway,然后选择 API Gateway 单选按钮。
    选择 Next(下一步)。
  5. Permissions policies(权限策略)下,使用默认的 AmazonAPIGatewayPushToCloudWatchLogs AWS 托管式策略,该策略具有所有必需的权限。
  6. 选择 Next(下一步)。
  7. 命名、查看和创建下,输入以下信息:
    对于角色名称,输入角色的名称。
    (可选)对于角色描述,根据偏好编辑描述。
    (可选)添加标签)。
    选择 Create role(创建角色)。
  8. Roles(角色)窗格中,选择您创建的角色。
  9. Summary(摘要)窗格中,记下下一节中要使用的角色的 ARN

有关权限的信息,请参阅 CloudWatch 日志记录的权限

在 API Gateway 控制台中添加 IAM 角色

完成以下步骤:

  1. 打开 API Gateway 控制台
  2. API 窗格中,选择 REST API 或 WebSocket API 的名称,而不是 HTTP API。
  3. 在导航窗格中,选择 Settings(设置)。
  4. Settings(设置)下,对于 CloudWatch log role ARN(CloudWatch 日志角色 ARN),输入 IAM 角色 ARN。
    **注意:**CloudWatch Logs 角色是一种 AWS 区域级配置,您可以将其用于该区域的所有 API。
  5. 选择 Save(保存)。

**注意:**如果您在不同的区域创建多个 API,请在每个区域完成前面的步骤。

开启 API 日志记录并暂存 API

完成以下步骤:

  1. 打开 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 应用程序或适用于 WebSocket API 的 wscat

完成以下步骤:

  1. 打开 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 执行