通过SST控制台向API Gateway发送POST请求返回403禁止错误
排查SST框架下API路由403 Forbidden及Lambda未触发问题
核心排查方向及操作步骤
1. 确认API Gateway认证配置
- 检查SST路由定义中是否误添加了
authorizer配置,若无需认证,确保路由未启用任何认证规则(SST默认路由无认证)。一旦开启认证但未正确配置Cognito/IAM等认证源,会直接返回403。 - 查看API Gateway的资源策略,确认是否存在限制请求来源、账户的规则,比如仅允许特定IP访问的策略会拦截不符合条件的请求。
2. 验证Lambda触发权限
- 检查Lambda执行角色的信任关系,确保包含API Gateway服务主体:
apigateway.amazonaws.com,允许其调用Lambda函数。 - 确认角色权限策略中包含
lambda:InvokeFunction权限,且作用域覆盖当前Lambda函数。
3. 核对路由配置正确性
- 检查路由的HTTP方法是否与请求一致,比如定义的是GET路由但发送POST请求,部分场景下API Gateway会返回403而非405。
- 确认路由路径拼写完全匹配,比如定义
/api/orders却请求/api/order,路径不匹配也可能触发权限类错误。
4. 排查VPC网络限制(若Lambda配置了VPC)
- 检查Lambda所在安全组是否允许API Gateway的流量进入,或是否配置了NAT网关/API Gateway VPC端点,确保API Gateway能正常触发VPC内的Lambda。
- 查看网络ACL规则,确认没有阻止API Gateway与Lambda之间的通信。
5. 开启API Gateway访问日志细化排查
- 在SST配置中开启API Gateway的访问日志,开启后可在CloudWatch中看到请求被拦截的具体原因,比如认证失败、资源不存在、权限不足等,这比仅看Lambda日志更能定位403根源。
快速验证手段
- 临时创建一个无认证的极简测试路由(如返回固定字符串的GET路由),通过SST控制台请求。若测试路由正常,说明原路由配置有问题;若仍返回403,问题出在API Gateway全局配置或账户级权限。
- 用AWS CLI直接调用Lambda:
aws lambda invoke --function-name <你的Lambda函数名> output.json,若能正常执行返回结果,说明Lambda本身无问题,故障点在API Gateway到Lambda的触发链路。
内容的提问来源于stack exchange,提问作者Wet_Bones
相关产品推荐
相关产品推荐

