AWS GET方法调用异常:API Gateway测试成功Postman报内部错误
API Gateway外部请求报Internal Server Error的解决方案
核心问题
API Gateway控制台测试用的是内部临时权限,会跳过Lambda的资源策略校验;但外部工具(比如Postman)发起请求时,必须要求API Gateway在Lambda的资源策略里拥有调用权限,当前日志明确提示Invalid permissions on Lambda function,就是这个原因。
解决步骤
1. 查看Lambda资源策略
打开Lambda控制台,找到目标函数:
- 切换到「配置」标签页
- 选择左侧「权限」菜单
- 拉到页面下方的「资源策略」区域,检查是否存在允许API Gateway调用的规则
2. 添加上调用权限
方法一:AWS CLI命令执行
替换命令里的占位符为你的实际信息后运行:
aws lambda add-permission \ --function-name 你的Lambda函数名或ARN \ --statement-id apigateway-invoke \ --action lambda:InvokeFunction \ --principal apigateway.amazonaws.com \ --source-arn "arn:aws:execute-api:你的AWS区域:你的账号ID:你的API Gateway ID/*/GET/test"
方法二:控制台手动添加
在Lambda资源策略页面点击「添加权限」:
- 权限类型选「API Gateway」
- 选择你创建的目标API
- 部署阶段选你正在使用的阶段(比如prod)
- 方法选GET,资源路径填/test
- 确认后点击「保存」
3. 重新部署API Gateway
回到API Gateway控制台:
- 找到你的API,点击「部署API」
- 选择对应的阶段完成部署,确保权限变更生效
验证
用Postman重新发起GET请求,此时应该正常返回"Hello, world!",同时Lambda的日志里会出现lambda start!!!的输出。
内容的提问来源于stack exchange,提问作者上嶋光優
相关产品推荐
相关产品推荐

