我在 AWS Elastic Beanstalk (EB) 中有 2 个环境,运行一个使用 Mongoose 框架连接到 DocumentDB 的 Node.js 应用程序。其中一个环境莫名其妙地停止工作,而另一个环境工作正常。两者都是从使用 EB CLI 部署应用程序代码的 CI/CD 构建服务器部署的。
有问题的环境在 nodejs.log 中生成以下错误:
name: 'MongooseTimeoutError',
reason:
{ Error: unable to get local issuer certificate
at TLSSocket.onConnectSecure (_tls_wrap.js:1058:34)
at TLSSocket.emit (events.js:198:13)
at TLSSocket._finishInit (_tls_wrap.js:636:8)
name: 'MongoNetworkError',
[Symbol(mongoErrorContextSymbol)]: {} },
[Symbol(mongoErrorContextSymbol)]: {} }
两者都使用相同的连接字符串,因为它们连接到同一个实例mongodb://*****:*****@docdb-2019-08-**-**-**-**.cluster-**********.us-east-2.docdb.amazonaws.com:27017/db_name?ssl=true&ssl_ca_certs=/etc/ssl/certs/rds-combined-ca-bundle.pem&replicaSet=rs0
证书 pem 文件与两者使用的文件相同,并通过 EB .ebextensions 脚本部署到实例。
我尝试过的事情:
- 连接到问题环境的 EC2 实例,安装 mongodb shell 并能够使用 Mongo 连接字符串中指定的证书成功连接到 DocumentDB 实例。
- 通过 Elastic Beanstalk Web 管理控制台重建 EB 环境。
目前有点卡住,没有想法。