使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

如何启用 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 启用执行日志记录和访问日志记录。

注意: HTTP API 目前仅支持访问日志记录。这些 API 的日志记录设置不同。有关详细信息,请参阅配置 HTTP API 的日志记录

执行日志包含可用于识别多数 API 错误和对其进行故障排除的信息。例如,日志可包含以下信息:

访问日志包含有关谁访问了您的 API 以及他们如何访问它的详细信息。也可以使用日志来对 API 错误进行故障排除。有关每种日志记录类型的更多信息,请参阅用于 API Gateway 的 CloudWatch 日志格式

解决方法

创建 IAM 角色以登录 CloudWatch

要创建用于向 CloudWatch 发送日志的 AWS Identity and Access Management(IAM)角色,请完成以下步骤:

  1. 打开 IAM 控制台
  2. 在导航窗格中,选择角色
  3. 角色窗格上,选择创建角色
  4. 创建角色页面上,输入下面的信息:
    对于可信实体,选择 AWS 服务
    对于使用案例,选择 API Gateway
    选择 API Gateway 单选按钮。
    选择下一步
  5. 请注意,在权限策略下,AWS 托管式策略 AmazonAPIGatewayPushToCloudWatchLogs 默认处于选中状态。该策略具有所有必需的权限。
  6. 选择下一步
  7. 命名、查看和创建下,输入以下信息:
    对于角色名称,输入角色的名称。
    (可选)对于角色描述,根据偏好编辑描述。
    (可选)添加标签
    选择创建角色
  8. 角色窗格的搜索栏中,输入您创建的角色的名称。然后,选择角色。
  9. 摘要窗格上,复制角色 ARN。您需要在下一节中使用此 ARN

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

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

要将 IAM 角色添加到 API Gateway 控制台,请完成以下步骤:

  1. 打开 API Gateway 控制台
  2. API 窗格上,选择您创建的 API 的名称。这是 REST API 或 WebSocket API,而不是 HTTP API。
  3. 在导航窗格中,选择设置
  4. 设置下,对于 CloudWatch 日志角色 ARN,输入 IAM 角色 ARN。
    注意: CloudWatch 日志角色是一个 AWS 区域级配置,用于该 AWS 区域中的所有 API。
  5. 选择保存

注意: 如果跨不同 AWS 区域开发多个 API,请在每个 AWS 区域完成这些步骤。

为 API 和阶段启用日志记录

要为 API 和阶段启用日志记录,请完成以下步骤:

  1. 打开 API Gateway 控制台
  2. 在导航窗格中,选择 API,然后选择您的 API。
  3. 在导航窗格中,选择阶段。然后,选择您的阶段。
  4. 日志和跟踪下,选择编辑
  5. CloudWatch 日志下,完成以下任务以启用执行日志记录:
    从下拉列表中,选择您的日志级别:
    选择仅错误,以仅为导致错误的 API 请求生成执行日志。
    选择错误和信息日志,以为所有请求生成执行日志。
    选择完整请求和响应日志,以为所有事件生成详细的日志记录。
    注意: 完整请求和响应日志对故障排除很有用,但可能会记录敏感数据。最好不要对生产 API 使用完整请求和响应日志
  6. 自定义访问日志记录下,完成以下任务以启用访问日志记录:
    选中启用访问日志记录复选框。
    对于访问日志目标 ARN,输入 Amazon Kinesis Data FirehoseCloudWatch 日志组的 ARN。
    注意: 仅 REST API 支持 Amazon Kinesis Data Firehose 的 ARN。
  7. 输入日志格式
  8. 选择保存更改

有关更多信息,请参阅用于 API Gateway 的 CloudWatch 日志格式

测试日志记录设置

要向 API 发送新请求,请使用您的客户端应用程序或其他工具,例如 Postman 应用程序或适用于 WebSocket API 的 wscat

要测试您的日志记录设置,请完成以下步骤:

  1. 打开 CloudWatch 控制台
  2. 在导航窗格中的日志下,选择日志组
  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 执行