首次使用AWS API Gateway遇{"message":"Not Found"}错误排查求助
HTTP API Gateway 调用返回{"message":"Not Found"}的排查方向
核心原因说明
你未点击API页面的Deploy按钮是导致该错误的主要问题——HTTP API Gateway无论是否需要多版本或多配置,都必须完成部署才能对外提供服务。未部署的API,其生成的Invoke URL并未关联任何有效路由和后端集成,这里的"Not Found"指的是API Gateway无法匹配到已部署的路由规则及对应的后端资源(你的Lambda函数)。
具体排查步骤
确认API部署状态
进入API Gateway控制台,找到你的HTTP API,点击左侧「Deployments」选项卡,检查是否存在已部署的阶段(如默认的$default)。若没有,点击「Deploy」按钮,选择目标阶段(可直接使用默认的$default)完成部署,之后重新调用Invoke URL测试。检查路由配置匹配性
部署完成后,验证路由配置是否与调用的URL一致:- 确认路由的HTTP方法(如GET/POST)和路径(如
/)与你实际调用的URL路径、请求方法完全匹配 - 确认路由的集成目标是你指定的Lambda函数,且集成配置中的Lambda入口函数(
lambda_function.second)填写正确
- 确认路由的HTTP方法(如GET/POST)和路径(如
验证Lambda集成权限
尽管你在Lambda控制台测试正常,但API Gateway需要具备调用该Lambda函数的权限:- 进入Lambda控制台,找到你的函数,点击「配置」→「权限」,检查资源策略中是否包含API Gateway的调用权限
- 若缺失,可通过AWS CLI添加权限(替换占位符为你的实际资源信息):
aws lambda add-permission --function-name your-lambda-function-name --statement-id apigateway-invoke --action lambda:InvokeFunction --principal apigateway.amazonaws.com --source-arn "arn:aws:execute-api:your-region:your-account-id:your-api-id/*/your-http-method/your-path"
查看API Gateway日志定位细节
开启API Gateway的访问日志,获取更详细的错误信息:- 进入API Gateway控制台,找到你的API,点击「设置」,配置日志目标为CloudWatch Logs,开启日志记录
- 再次调用Invoke URL后,前往CloudWatch控制台查看对应日志组的日志内容,根据具体错误信息进一步排查
你的Lambda代码参考
import logging logger = logging.getLogger() logger.setLevel(logging.INFO) def second(event, context): ... result = None action = 'increment' number = event.get('number', 17) if action == 'increment': result = number + 1 logger.info('Calculated result of %s', result) else: logger.error("%s is not a valid action.", action) response = {'result': result} return response
内容的提问来源于stack exchange,提问作者Joymaker
相关产品推荐
相关产品推荐

