本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 指標 (
4xxError、Latency、、5xxErrorCount和IntegrationLatency),以偵測 API 層級錯誤。從 CloudWatch 擷取 Lambda 指標 (
Invocations、Duration、、ThrottlesErrors和ConcurrentExecutions),並將其與 API Gateway 錯誤建立關聯。當 API 錯誤持續存在但未偵測到 Lambda 錯誤時,分析 Lambda 授權方和整合回應格式。
使用調查結果、建議和相關參考來編譯摘要報告。
文件類型
自動化
擁有者
Amazon
平台
/
必要的 IAM 許可
AutomationAssumeRole 參數需要下列動作才能成功使用 Runbook。
apigateway:GETapigatewayv2:GetApiapigatewayv2:GetRouteapigatewayv2:GetStageapigatewayv2:GetAuthorizerapigatewayv2:GetIntegrationlambda:GetFunctionlambda:GetAccountSettingslambda:GetPolicylambda:GetProvisionedConcurrencyConfiglambda:GetFunctionConcurrencyiam:GetRoleiam:GetContextKeysForPrincipalPolicyiam:GetContextKeysForCustomPolicyiam:SimulatePrincipalPolicyiam:SimulateCustomPolicycloudwatch: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:ListRolesiam:PassRolessm:DescribeAutomationExecutionsssm:DescribeAutomationStepExecutionsssm:DescribeDocumentssm:GetAutomationExecutionssm:GetDocumentssm:ListDocumentsssm:StartAutomationExecution
指示
請依照下列步驟設定自動化:
-
在 Systems Manager 的文件下開啟 AWSSupport-TroubleshootAPIGatewayLambdaInvocation
。 -
選擇 Execute automation (執行自動化)。
-
針對輸入參數,輸入下列內容:
-
AutomationAssumeRole (選用):
IAM 角色的 Amazon Resource Name (ARN),可讓 Systems Manager Automation 代表您執行動作。如果未指定角色,Systems Manager Automation 會使用您的許可。
-
ApiId (必要):
需要故障診斷之 API Gateway API 的 API ID。
-
HttpMethod (必要):
需要疑難排解的資源或路由的 HTTP 方法。允許的值:
ANY、DELETE、HEAD、OPTIONS、GET、POST、PUT、PATCH、、$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 預設為目前時間。
-
-
選擇 Execute (執行)。
-
自動化會啟動。
-
文件會執行下列步驟:
-
ValidateResourcesAndInputs:驗證 API Gateway API、階段和路由或資源是否存在,並確認已設定 Lambda 整合或授權方。驗證時間範圍輸入並擷取 Lambda 函數和 API 詳細資訊。
-
CheckAPIGatewayLambdaInvokePermissions:模擬 IAM 角色許可並評估 Lambda 資源政策,以判斷 API Gateway 是否有權叫用 Lambda 函數。當許可不足時產生範例政策。
-
GetAPIMetrics:從 CloudWatch 擷取指定時間範圍的 API Gateway 指標 (
4xxError、Latency、、5xxErrorCount和IntegrationLatency),並識別 API 層級錯誤模式。 -
GetLambdaMetrics:從 CloudWatch 擷取 Lambda 指標 (
Invocations、Duration、、ThrottlesErrors和ConcurrentExecutions),並將其與 API Gateway 錯誤時間戳記建立關聯。 -
CompareAPIGatewayAndLambdaMetrics:分析和關聯 API Gateway 和 Lambda 指標,以識別限流模式、逾時案例和未處理的 Lambda 函數錯誤。確定調用問題的根本原因。
-
AuthorizerAndIntegrationTroubleshooting:當 API 錯誤持續存在,但未偵測到 Lambda 錯誤時, 會分析 Lambda 授權方和整合回應格式,並提供適當的 Lambda 函數輸出格式建議。
-
CompileResults:使用可行的指引和相關參考,編譯調查結果、驗證問題、許可問題和故障診斷建議的摘要報告。
-
-
完成後,請檢閱輸出區段以取得執行的詳細結果。
參考
Systems Manager Automation