AWS Lambda与API Gateway CRUD操作遇CORS拦截及方法不支持错误
排查API Gateway + Lambda CRUD的400 "Unsupported method"错误
核心排查方向
1. API Gateway资源与HTTP方法映射检查
- 确认你调用的**HTTP方法(GET/POST/PUT/DELETE)**在对应API资源下已创建并部署:
- 检查API Gateway控制台中,目标资源(比如
/todos)下是否存在你使用的HTTP方法; - 若使用带路径参数的资源(比如
/todos/{id}),确保请求URL的路径参数格式与配置完全匹配。
- 检查API Gateway控制台中,目标资源(比如
- 验证方法的集成请求设置:
- 进入对应方法的集成请求页面,确认
集成类型为Lambda函数,且HTTP方法设置为POST(Lambda集成统一用POST触发,不受前端请求方法影响); - 检查是否开启
使用Lambda代理集成,若开启,Lambda函数需通过event.httpMethod字段区分请求类型。
- 进入对应方法的集成请求页面,确认
2. Lambda函数的请求方法处理逻辑
检查todosHandler代码,确认是否正确解析API Gateway传递的请求方法参数:
// 示例Node.js Lambda处理逻辑 exports.handler = async (event) => { const httpMethod = event.httpMethod; switch(httpMethod) { case 'GET': // 处理GET请求逻辑 return { statusCode: 200, body: JSON.stringify({ data: 'todos list' }) }; case 'POST': // 处理POST请求逻辑 return { statusCode: 201, body: JSON.stringify({ message: 'todo created' }) }; case 'PUT': case 'DELETE': // 处理PUT/DELETE逻辑 break; default: // 避免未匹配方法时直接返回400,可先排查请求方法是否传递正确 return { statusCode: 400, body: JSON.stringify({ error: "Unsupported method" }) }; } };
- 确认代码中没有遗漏对目标请求方法的判断,排除因分支覆盖不全导致的错误返回。
3. CORS配置的完整性
即使配置了CORS,仍需验证:
- 确认**所有需要跨域的方法(含OPTIONS)**都配置了CORS规则;
- 检查CORS配置的
允许的方法列表是否包含你使用的HTTP方法(GET/POST/PUT/DELETE); - 修改CORS配置后,必须重新部署API到对应阶段,确保配置生效。
4. 请求URL与部署阶段匹配
- 确认前端请求的是API Gateway已部署阶段的URL(比如
https://xxxxxx.execute-api.region.amazonaws.com/prod/todos),而非未部署的编辑环境URL; - 检查URL中的资源路径是否与API Gateway配置完全一致,避免拼写错误。
5. 集成请求映射模板检查(非代理集成场景)
若未使用Lambda代理集成:
- 确认
集成请求的映射模板已正确将HTTP方法传递给Lambda函数; - 检查
请求体传递方式是否设置为当没有模板时通过,避免请求参数丢失导致方法判断失败。
内容的提问来源于stack exchange,提问作者Onur Serbes
相关产品推荐
相关产品推荐

