本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWSSupport-TroubleshootAPIGatewayHttpErrors
Description
AWSSupport-TroubleshootAPIGatewayHttpErrors Runbook 透過剖析存取和/或執行日誌和分析錯誤,透過 re:Post 文章和 AWS 文件提供修復步驟,協助疑難排解調用已部署 Amazon API Gateway REST API 時的 5XX/4XX 錯誤。
重要
此 Runbook 具有下列限制:
日誌必須在 (發生錯誤) 之前啟用。日誌擷取和分析無法回溯完成。
涵蓋的錯誤:500、502、503、504、401、403、429。
僅支援 REST API。此 Runbook 未涵蓋 WebSocket 和 HTTP (v2)。
重要
對於 REST API 擷取 AWS 的 Amazon CloudWatch Logs,以及分析中使用的 CloudWatch Logs Insights,使用此 Runbook 可能會對您的帳戶產生額外費用。如需可能產生之費用的詳細資訊,請參閱 Amazon CloudWatch 定價aws:deletestack步驟失敗,請前往 CloudFormation 主控台手動刪除堆疊。此 Runbook 建立的堆疊名稱開頭為 AWSSupport-TroubleshootAPIGatewayHttpErrors。如需有關刪除 CloudFormation 堆疊的資訊,請參閱 AWS CloudFormation 《 使用者指南》中的刪除堆疊。
如何運作?
Runbook 會執行下列驗證和分析步驟:
驗證指定的 REST API 是否存在,而且您具有必要的許可。
驗證 API 中是否存在指定的階段。
驗證 API 中是否存在指定的資源路徑。
驗證指定的 HTTP 方法是否存在於資源。
分析指定參數和時間範圍的 CloudWatch Logs,以識別錯誤並提供修補建議。
文件類型
自動化
擁有者
Amazon
平台
/
必要的 IAM 許可
AutomationAssumeRole 參數需要下列動作才能成功使用 Runbook。
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": "*" } ] }
指示
請依照下列步驟設定自動化:
-
在文件下的 Systems Manager
AWSSupport-TroubleshootAPIGatewayHttpErrors中導覽至 。 -
選擇 Execute automation (執行自動化)。
-
針對輸入參數,輸入下列內容:
-
AutomationAssumeRole (選用):
-
描述:(選用) 允許 SSM Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。如果未指定角色,SSM Automation 會使用啟動此 Runbook 之使用者的許可。
-
類型:
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 Logs 的開始日期和時間。格式:
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 Logs 的結束日期和時間。格式:
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