API Gateway对接DynamoDB调用GetItem按主键查询返回404错误如何解决
问题根因
该404错误返回网页内容,说明请求根本没有正确命中DynamoDB的服务接口,和你配置的Mapping Template无关(你日志中转换后的请求体格式完全符合DynamoDB GetItem的要求),核心是API Gateway的DynamoDB集成配置错误,可能的具体原因如下:
- 集成请求的HTTP方法配置错误:DynamoDB的所有操作都要求使用
POST方法发起请求,如果你为GetItem接口错配了GET方法,就会返回404网页响应 - 集成端点路径配置错误:对接DynamoDB时路径必须填写为
/,如果误填了其他路径(比如添加了资源路径、参数占位符),就会请求到DynamoDB不存在的路由,返回404 - 请求头配置缺失/错误:你没有配置
X-Amz-Target请求头,该请求头的值必须固定为DynamoDB_20120810.GetItem,同时需要配置Content-Type请求头为application/x-amz-json-1.0,缺少这两个头也会导致DynamoDB无法识别请求,返回404 - 端点域名配置错误:如果填错了对应区域的DynamoDB服务域名,也会触发该报错。你写入正常仅查询报错,说明仅GetItem对应的接口集成配置有误,全局的服务域名配置大概率是正确的。
解决方法
- 进入API Gateway对应GetItem接口的集成请求配置页面
- 确认集成请求的HTTP方法为
POST - 确认DynamoDB端点路径为
/,无任何额外后缀 - 在HTTP请求头配置项中添加两个固定请求头:
X-Amz-Target:值为DynamoDB_20120810.GetItemContent-Type:值为application/x-amz-json-1.0
- 保存配置后重新部署API网关对应的阶段,再次测试即可正常返回查询结果
内容的提问来源于stack exchange,提问作者James Black
相关产品推荐
相关产品推荐

