我有一个通过 API 网关访问的 lambda 函数。该函数接收用户名和密码并对给定的活动目录执行身份验证。
如果找到用户,则调用数据库通过用户名获取用户 > 生成 JWT 并在响应中返回。
最近几天我在登录页面上收到 CORS 错误。在进一步检查 cloudwatch 日志时,我看到了这些错误
{
"errno": "ETIMEDOUT",
"code": "ETIMEDOUT",
"syscall": "connect",
"address": "10.1.2.39",
"port": 389
}
error.code Error: connect ETIMEDOUT 10.1.2.39:389
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1144:16)
{ errno: 'ETIMEDOUT', code: 'ETIMEDOUT', syscall: 'connect', address: '10.1.2.39', port: 389}
ERROR: aws-serverless-express connection error
ERROR Error: socket hang up
at connResetException (internal/errors.js:609:14)
at Socket.socketOnEnd (_http_client.js:458:23)
at Socket.emit (events.js:326:22)
at endReadableNT (_stream_readable.js:1241:12)
at processTicksAndRejections (internal/process/task_queues.js:84:21) { code: 'ECONNRESET'}
奇怪的是,当我第一次尝试登录应用程序时,我收到了这些错误,但是假设我等待了大约 15-20 分钟,然后再次尝试登录,没有出现错误并且我被记录了很顺利。
AD 由客户维护,他们声称自己没有任何问题。尽管该应用自过去 6 个月以来一直在生产中,但最近开始出现此问题。
我正在使用 activedirectory 模块进行 AD 身份验证。如果我使用相同的用户名和密码在本地运行一个简单的身份验证代码,那么它就可以工作,因此 AD 身份验证或凭据没有问题。
我在我的 lambda 中使用节点 12。此外,我正在使用 aws-serverless-koa 而不是 express,所以我假设错误来自某些依赖项(可能是 activedirectory)。
任何帮助将不胜感激,因为我在过去两周内无法解决此问题。