View a markdown version of this page

AWSSupport-TroubleshootAPIGatewayHttpErrors - AWS Systems Manager 自动化运行手册参考

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWSSupport-TroubleshootAPIGatewayHttpErrors

描述

AWSSupport-TroubleshootAPIGatewayHttpErrors运行手册通过解析访问 and/or 执行日志和分析错误,通过 re: Post 文章和文档提供补救步骤,从而帮助解决调用已部署的 Amazon API Gateway REST API 时出现的 5XX/4XX 错误。 AWS

重要

本运行手册有以下限制:

  • 必须启用日志记录。请参阅使用 CloudWatch API Gateway 控制台设置亚马逊 API 日志

  • 错误发生之前必须已启用日志。日志捕获和分析不能追溯性地完成。

  • 涵盖的错误:500、502、503、504、401、403、429。

  • 仅支持 REST APIs 。 WebSocket 而且 HTTP (v2) 未包含在本运行手册中。

重要

使用此运行手册可能会因您的 REST API 捕获的 Amazon CloudWatch 日志以及分析中使用的 CloudWatch 日志见解而向您的 AWS 账户收取额外费用。有关可能产生的费用的更多详细信息,请参阅 Amazon CloudWatch 定价。如果该aws:deletestack步骤失败,请前往 CloudFormation 控制台手动删除堆栈。此运行手册创建的堆栈名称以 AWSSupport-TroubleshootAPIGatewayHttpErrors 开头。有关删除 CloudFormation 堆栈的信息,请参阅《 AWS CloudFormation 用户指南》中的删除堆栈

如何工作?

运行手册执行以下验证和分析步骤:

  • 验证指定的 REST API 是否存在并且您是否具有必要的权限。

  • 验证 API 中是否存在指定的阶段。

  • 验证 API 中是否存在指定的资源路径。

  • 验证资源是否存在指定的 HTTP 方法。

  • 根据指定参数和时间范围分析 CloudWatch 日志,以识别错误并提供补救建议。

运行此自动化(控制台)

文档类型

自动化

所有者

Amazon

平台

/

所需的 IAM 权限

AutomationAssumeRole 参数需要执行以下操作才能成功使用运行手册。

  • apigateway:GET

  • logs:CreateLogGroup

  • logs:CreateLogStream

  • logs:DescribeLogGroups

  • logs:DescribeLogStreams

  • logs:PutLogEvents

  • logs:StartQuery

  • logs:GetQueryResults

示例 IAM 策略:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "apigateway:GET", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:PutLogEvents", "logs:StartQuery", "logs:GetQueryResults" ], "Resource": "*" } ] }

说明

按照这些步骤对自动化进行配置:

  1. AWSSupport-TroubleshootAPIGatewayHttpErrors在 Systems Manager 的 “文档” 下导航至。

  2. 选择 Execute automation(执行自动化)。

  3. 对于输入参数,请输入以下内容:

    • AutomationAssumeRole (可选):

      • 描述:(可选)允许 SSM Automation 代表您执行操作的 AWS Identity and Access Management (IAM) 角色的亚马逊资源名称 (ARN)。如果未指定角色,SSM Automation 将使用启动此运行手册的用户的权限。

      • 类型:AWS::IAM::Role::Arn

    • RestApiId (必填):

      • 描述:(必填)需要进行故障排除的 API 的 API ID。必须是 10 个字符的字母数字字符串。

      • 类型:String

      • 允许的模式:^[a-zA-Z0-9]{10}$

    • StageName (必填):

      • 描述:(必填)已部署阶段的名称。必须是 1-128 个字符,包含字母、数字、下划线或连字符。

      • 类型:String

      • 允许的模式:^[a-zA-Z0-9_\\-]{1,128}$

    • ResourcePath (可选):

      • 描述:(可选)为其配置方法的资源路径。示例://store/items/{resource}

      • 类型:String

      • 默认值:/

    • HttpMethod (可选):

      • 描述:(可选)配置资源路径的方法。

      • 类型:String

      • 允许的值:[ANY, DELETE, HEAD, OPTIONS, GET, POST, PUT, PATCH]

      • 默认值:GET

    • StartTime (可选):

      • 描述:(可选)查询 CloudWatch 日志的开始日期和时间。格式:采用 yyyy-MM-ddTHH:mm:ss UTC 时区。如果未指定,则默认为当前时间前 3 天。

      • 类型:String

      • 允许的模式:^$|^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])T(2[0-3]|[01][0-9]):[0-5][0-9]:[0-5][0-9]$

      • 默认值:""

    • EndTime (可选):

      • 描述:(可选)查询 CloudWatch 日志的结束日期和时间。格式:采用 yyyy-MM-ddTHH:mm:ss UTC 时区。如果未指定,则默认为当前时间。

      • 类型:String

      • 允许的模式:^$|^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])T(2[0-3]|[01][0-9]):[0-5][0-9]:[0-5][0-9]$

      • 默认值:""

    • AccessLogs (可选):

      • 描述:(可选)是否应分析访问日志。

      • 类型:Boolean

      • 允许的值:[true, false]

      • 默认值:false

    • RequestId (可选):

      • 描述:(可选)观察到错误的请求的请求 ID。必须是有效的 UUID 格式。

      • 类型:String

      • 允许的模式:^$|^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$

      • 默认值:""

  4. 选择执行

  5. 自动化启动。

  6. 文档将执行以下步骤:

    • CheckApiExists:

      验证所提供的 REST API 是否存在,并且您是否具有访问该应用程序的必要权限。

    • CheckStageExists:

      验证所提供的阶段名称是否存在于给定的 API 中,并检索访问日志组信息。

    • CheckResourceExists:

      验证所提供的资源路径是否存在于 API 中,并检索资源 ID。

    • CheckMethodExists:

      验证指定资源是否存在所提供的 HTTP 方法。

    • AnalyseLogs:

      使用提供的参数搜索日志,并根据发现的任何错误返回建议。此步骤将分析执行和访问日志(如果启用),以识别 4XX 和 5XX 错误,并提供具体的补救指导。

  7. 完成后,请查看 “输出” 部分,了解执行的详细结果,包括错误分析和补救建议。

参考

Systems Manager Automation