本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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:GETlogs:CreateLogGrouplogs:CreateLogStreamlogs:DescribeLogGroupslogs:DescribeLogStreamslogs:PutLogEventslogs:StartQuerylogs: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": "*" } ] }
说明
按照这些步骤对自动化进行配置:
-
AWSSupport-TroubleshootAPIGatewayHttpErrors在 Systems Manager 的 “文档” 下导航至。 -
选择 Execute automation(执行自动化)。
-
对于输入参数,请输入以下内容:
-
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:ssUTC 时区。如果未指定,则默认为当前时间前 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:ssUTC 时区。如果未指定,则默认为当前时间。类型:
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}$ 默认值:
""
-
-
选择执行。
-
自动化启动。
-
文档将执行以下步骤:
-
CheckApiExists:
验证所提供的 REST API 是否存在,并且您是否具有访问该应用程序的必要权限。
-
CheckStageExists:
验证所提供的阶段名称是否存在于给定的 API 中,并检索访问日志组信息。
-
CheckResourceExists:
验证所提供的资源路径是否存在于 API 中,并检索资源 ID。
-
CheckMethodExists:
验证指定资源是否存在所提供的 HTTP 方法。
-
AnalyseLogs:
使用提供的参数搜索日志,并根据发现的任何错误返回建议。此步骤将分析执行和访问日志(如果启用),以识别 4XX 和 5XX 错误,并提供具体的补救指导。
-
-
完成后,请查看 “输出” 部分,了解执行的详细结果,包括错误分析和补救建议。
参考
Systems Manager Automation