You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法通过Lambda向DocDB集合发起POST请求(GET请求正常)

DocumentDB写入操作返回code301错误的排查与解决

错误原因分析

你遇到的code:301错误是DocumentDB的重定向错误,核心逻辑是:

  • 读操作(如GET请求)允许在集群从节点执行,因此你的GET路由能正常返回数据
  • 写入操作(如POST插入)必须在主节点执行,但当前Lambda连接的是集群从节点,导致请求被重定向,最终触发错误

解决方案

1. 更新连接URI为集群完整地址

当前你的连接URI仅指定单个节点,大概率是从节点。需替换为包含集群所有节点的连接字符串,并指定副本集参数:

// 从AWS DocumentDB控制台"连接"页面复制完整集群连接字符串
const uri = 'mongodb://<username>:<password>@docdb-2023-06-08-15-56-01.cuz2po50vpwx.us-east-1.docdb.amazonaws.com:27017,docdb-2023-06-08-15-56-01-secondary.cuz2po50vpwx.us-east-1.docdb.amazonaws.com:27017/?replicaSet=rs0';

2. 显式配置MongoClient副本集参数

创建MongoClient时,明确指定副本集名称(DocumentDB默认副本集名为rs0),帮助客户端自动发现主节点:

const client = new MongoClient(uri, {
  tls: true,
  tlsCAFile: 'global-bundle.pem',
  replicaSet: 'rs0',
  directConnection: false, // 禁用直连,允许客户端自动选择主节点
});

3. 额外排查点

  • 权限验证:用Mongo Shell连接集群,执行命令确认用户拥有test数据库读写权限:
    use test
    db.grantRolesToUser('<username>', [{role: 'readWrite', db: 'test'}])
    
  • VPC安全组检查:确保Lambda所在VPC安全组允许访问DocumentDB集群所有节点的27017端口,DocumentDB安全组也要允许Lambda的IP/安全组访问。
  • 主节点状态确认:在AWS控制台查看DocumentDB集群主节点信息,尝试直接连接主节点执行写入操作,验证是否能正常插入。

内容的提问来源于stack exchange,提问作者yungfrankling

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 02:52:48