View a markdown version of this page

AWSSupport-TroubleshootAPIGatewayHttpErrors - AWS Systems Manager Automation Runbook 參考

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWSSupport-TroubleshootAPIGatewayHttpErrors

Description

AWSSupport-TroubleshootAPIGatewayHttpErrors Runbook 透過剖析存取和/或執行日誌和分析錯誤,透過 re:Post 文章和 AWS 文件提供修復步驟,協助疑難排解調用已部署 Amazon API Gateway REST API 時的 5XX/4XX 錯誤。

重要

此 Runbook 具有下列限制:

  • 必須啟用記錄。請參閱使用 API Gateway 主控台設定 Amazon CloudWatch API 記錄

  • 日誌必須在 (發生錯誤) 之前啟用。日誌擷取和分析無法回溯完成。

  • 涵蓋的錯誤: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: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. 在文件下的 Systems Manager AWSSupport-TroubleshootAPIGatewayHttpErrors 中導覽至 。

  2. 選擇 Execute automation (執行自動化)。

  3. 針對輸入參數,輸入下列內容:

    • 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}$

      • 預設:""

  4. 選取執行

  5. 自動化會啟動。

  6. 文件會執行下列步驟:

    • CheckApiExists

      驗證提供的 REST API 是否存在,而且您具有存取它的必要許可。

    • CheckStageExists

      驗證提供的階段名稱是否存在於指定的 API 中,並擷取存取日誌群組資訊。

    • CheckResourceExists

      驗證提供的資源路徑是否存在於 API 中,並擷取資源 ID。

    • CheckMethodExists

      驗證提供的 HTTP 方法是否存在於指定的資源。

    • AnalyseLogs

      使用提供的參數搜尋日誌,並根據發現的任何錯誤傳回建議。此步驟會分析執行和存取日誌 (如果啟用),以識別 4XX 和 5XX 錯誤,並提供特定的修補指引。

  7. 完成後,請檢閱輸出區段以取得執行的詳細結果,包括錯誤分析和修復建議。

參考

Systems Manager Automation