View a markdown version of this page

AWSSupport-TroubleshootAPIGatewayLambdaInvocation - AWS Systems Manager Automation Runbook 參考

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

AWSSupport-TroubleshootAPIGatewayLambdaInvocation

說明

AWSSupport-TroubleshootAPIGatewayLambdaInvocation Runbook 可協助您疑難排解 Amazon API Gateway 與 HTTP 和 REST APIs 中 AWS Lambda 函數的整合。Runbook 支援 Lambda 函數做為整合或授權方使用,並涵蓋下列使用案例:

  • 許可不足或缺少:識別 Lambda 資源政策或 IAM 角色中缺少的許可。

  • Lambda 函數限流:偵測並行限制導致的限流並提供建議。

  • Lambda 整合逾時:分析逾時問題並建議最佳化策略。

  • Lambda 函數錯誤:識別函數錯誤並引導您記錄分析。

  • Lambda 格式錯誤的回應:偵測 Lambda 整合和授權方的回應格式問題。

  • 無效組態:驗證 API Gateway 和 Lambda 組態。

限制

此 Runbook 具有下列限制:

  • Runbook 不支援跨帳戶 Lambda 案例。

  • Runbook 不會分析 API Gateway 映射範本、regex 模式或整合回應。

  • Runbook 僅支援 Lambda 授權方。它不支援 IAM 授權方或 Amazon Cognito 授權方。

  • Runbook 不涵蓋 API Gateway 上的用戶端限流。

額外費用

使用此 Runbook 會從 Amazon CloudWatch 查詢指標。對於分析期間查詢的指標,標準 CloudWatch 費用可能適用於 AWS 您的帳戶。如需定價的詳細資訊,請參閱 Amazon CloudWatch 定價

運作方式

Runbook 會執行下列驗證和分析步驟:

  • 驗證指定的 API Gateway API、階段和路由或資源是否存在,並確認已設定 Lambda 整合或授權方。

  • 透過使用 IAM 政策模擬評估 Lambda 資源政策和 IAM 角色,檢查 API Gateway 是否有足夠的許可來叫用 Lambda 函數。

  • 從 CloudWatch 擷取 API Gateway 指標 (4xxErrorLatency、、 5xxError CountIntegrationLatency),以偵測 API 層級錯誤。

  • 從 CloudWatch 擷取 Lambda 指標 (InvocationsDuration、、 Throttles ErrorsConcurrentExecutions),並將其與 API Gateway 錯誤建立關聯。

  • 當 API 錯誤持續存在但未偵測到 Lambda 錯誤時,分析 Lambda 授權方和整合回應格式。

  • 使用調查結果、建議和相關參考來編譯摘要報告。

執行此自動化 (主控台)

文件類型

 自動化

擁有者

Amazon

平台

/

必要的 IAM 許可

AutomationAssumeRole 參數需要下列動作才能成功使用 Runbook。

  • apigateway:GET

  • apigatewayv2:GetApi

  • apigatewayv2:GetRoute

  • apigatewayv2:GetStage

  • apigatewayv2:GetAuthorizer

  • apigatewayv2:GetIntegration

  • lambda:GetFunction

  • lambda:GetAccountSettings

  • lambda:GetPolicy

  • lambda:GetProvisionedConcurrencyConfig

  • lambda:GetFunctionConcurrency

  • iam:GetRole

  • iam:GetContextKeysForPrincipalPolicy

  • iam:GetContextKeysForCustomPolicy

  • iam:SimulatePrincipalPolicy

  • iam:SimulateCustomPolicy

  • cloudwatch:GetMetricData

IAM 政策範例:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "APIGatewayReadAccess", "Effect": "Allow", "Action": [ "apigateway:GET", "apigatewayv2:GetApi", "apigatewayv2:GetRoute", "apigatewayv2:GetStage", "apigatewayv2:GetAuthorizer", "apigatewayv2:GetIntegration" ], "Resource": [ "arn:aws:apigateway:*::/restapis/*", "arn:aws:apigateway:*::/apis/*" ] }, { "Sid": "LambdaReadAccess", "Effect": "Allow", "Action": [ "lambda:GetFunction", "lambda:GetPolicy", "lambda:GetProvisionedConcurrencyConfig", "lambda:GetFunctionConcurrency", "lambda:GetAccountSettings" ], "Resource": "*" }, { "Sid": "IAMReadAndSimulate", "Effect": "Allow", "Action": [ "iam:GetRole", "iam:GetContextKeysForPrincipalPolicy", "iam:GetContextKeysForCustomPolicy", "iam:SimulatePrincipalPolicy", "iam:SimulateCustomPolicy" ], "Resource": "*" }, { "Sid": "CloudWatchMetricsRead", "Effect": "Allow", "Action": [ "cloudwatch:GetMetricData" ], "Resource": "*" } ] }
注意

啟動 Runbook 的 IAM 使用者或角色需要下列動作:

  • iam:ListRoles

  • iam:PassRole

  • ssm:DescribeAutomationExecutions

  • ssm:DescribeAutomationStepExecutions

  • ssm:DescribeDocument

  • ssm:GetAutomationExecution

  • ssm:GetDocument

  • ssm:ListDocuments

  • ssm:StartAutomationExecution

指示

請依照下列步驟設定自動化:

  1. 在 Systems Manager 的文件下開啟 AWSSupport-TroubleshootAPIGatewayLambdaInvocation

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

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

    • AutomationAssumeRole (選用):

      IAM 角色的 Amazon Resource Name (ARN),可讓 Systems Manager Automation 代表您執行動作。如果未指定角色,Systems Manager Automation 會使用您的許可。

    • ApiId (必要):

      需要故障診斷之 API Gateway API 的 API ID。

    • HttpMethod (必要):

      需要疑難排解的資源或路由的 HTTP 方法。允許的值:ANYDELETEHEADOPTIONSGETPOSTPUTPATCH、、$default

    • RouteIdOrResourceId (必要):

      具有需要故障診斷之 Lambda 整合或授權方的路由 ID (HTTP API) 或資源 ID (REST API)。例如,dsyrv84對於 HTTP API 路由,或jklob2對於 REST API 資源。

    • StageName (必要):

      部署 API 的階段。

    • StartTime (選用):

      UTC 的開始時間,以識別要查詢的時間範圍。格式必須為 yyyy-MM-ddTHH:mm:ss(例如,1970-01-01T00:00:00)。開始時間不得超過過去 30 天。如果此輸入遺失或無效,則 Runbook 預設為結束時間前 2 天。如果未指定結束時間,則 Runbook 預設為目前時間之前的 2 天。

    • EndTime (選用):

      識別查詢時間範圍的 UTC 結束時間。格式必須為 yyyy-MM-ddTHH:mm:ss(例如,1970-01-01T00:00:00)。結束時間不得超過開始時間後 2 天。如果此輸入遺失或無效,則 Runbook 預設為目前時間。

  4. 選擇 Execute (執行)。

  5. 自動化會啟動。

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

    • ValidateResourcesAndInputs:

      驗證 API Gateway API、階段和路由或資源是否存在,並確認已設定 Lambda 整合或授權方。驗證時間範圍輸入並擷取 Lambda 函數和 API 詳細資訊。

    • CheckAPIGatewayLambdaInvokePermissions:

      模擬 IAM 角色許可並評估 Lambda 資源政策,以判斷 API Gateway 是否有權叫用 Lambda 函數。當許可不足時產生範例政策。

    • GetAPIMetrics:

      從 CloudWatch 擷取指定時間範圍的 API Gateway 指標 (4xxErrorLatency、、 5xxError CountIntegrationLatency),並識別 API 層級錯誤模式。

    • GetLambdaMetrics:

      從 CloudWatch 擷取 Lambda 指標 (InvocationsDuration、、 Throttles ErrorsConcurrentExecutions),並將其與 API Gateway 錯誤時間戳記建立關聯。

    • CompareAPIGatewayAndLambdaMetrics:

      分析和關聯 API Gateway 和 Lambda 指標,以識別限流模式、逾時案例和未處理的 Lambda 函數錯誤。確定調用問題的根本原因。

    • AuthorizerAndIntegrationTroubleshooting:

      當 API 錯誤持續存在,但未偵測到 Lambda 錯誤時, 會分析 Lambda 授權方和整合回應格式,並提供適當的 Lambda 函數輸出格式建議。

    • CompileResults:

      使用可行的指引和相關參考,編譯調查結果、驗證問題、許可問題和故障診斷建議的摘要報告。

  7. 完成後,請檢閱輸出區段以取得執行的詳細結果。

參考

Systems Manager Automation