基于FastAPI+Mangum的Lambda通过API Gateway外部调用遇权限错误排查
问题排查与解决方案
1. Lambda权限的Source ARN缺失部署阶段
控制台测试API Gateway时走的是内部测试通道,不需要指定部署阶段;但外部调用的是已发布到特定阶段(如prod、dev)的端点,当前Terraform配置的source_arn仅写了/*/*,未包含部署阶段路径,导致权限校验失败。
修改Lambda权限资源,补充部署阶段路径:
resource "aws_lambda_permission" "apigw" { statement_id = "AllowExecutionFromApiGateway" action = "lambda:InvokeFunction" function_name = aws_lambda_function.api_lambda.function_name principal = "apigateway.amazonaws.com" # 替换为你的实际部署阶段名称,比如"prod" source_arn = "${aws_api_gateway_rest_api.gapi.execution_arn}/stages/prod/*/*" }
如果使用变量管理阶段名,可替换为var.stage_name来动态配置。
2. API Gateway未重新部署到目标阶段
若你修改过权限或集成配置,必须重新部署API Gateway到对外的阶段才能让变更生效:
- 进入AWS控制台的API Gateway页面,找到对应阶段
- 点击重新部署,确保最新配置同步到外部访问的端点
3. 资源路径与调用路径不匹配
确认外部调用的路径与API Gateway配置完全一致:
- 当前配置使用根资源(
/),外部调用时不要额外添加路径后缀 - 检查
aws_api_gateway_method.gapi的HTTP方法是否与外部调用方法一致(均为POST)
4. 跨区域/跨账户配置错误
核对Lambda的Invoke ARN、API Gateway的Execution ARN是否属于同一AWS区域和账户,避免因资源跨域导致的权限识别失败
内容的提问来源于stack exchange,提问作者eery
相关产品推荐
相关产品推荐

