AWS Lambda 上的节点函数无法使用 node-pg 连接到数据库
Posted
技术标签:
【中文标题】AWS Lambda 上的节点函数无法使用 node-pg 连接到数据库【英文标题】:Node function on AWS Lambda can't connect to database with node-pg 【发布时间】:2016-03-30 01:46:30 【问题描述】:我的函数在本地工作,但是当我部署到 AWS Lambda 时,它似乎无法连接到我的 postgres 数据库。这是错误:
[Error: connect ECONNREFUSED] code: 'ECONNREFUSED', errno: 'ECONNREFUSED', syscall: 'connect' , isOperational: true, code: 'ECONNREFUSED', errno: 'ECONNREFUSED', syscall: 'connect'
我的数据库托管在 Azure 虚拟机上,我在本地运行时从任何其他应用程序或此应用程序连接到它都没有问题。在 Lambda 上运行时可能导致连接失败的原因是什么?
【问题讨论】:
某种防火墙? @Michelem Amazon 说他们限制 TCP 端口 25 上的流量,并且他们限制 TCP 的出站流量。他们管理入站。我将连接字符串从postgres://
更改为 tcp://
但这似乎没有帮助。
您应该尝试从 lambda 服务器中对 Postgres 端口进行 nmap 映射,检查是否可以访问它:nmap -p 5432 <postgres-hostname>
【参考方案1】:
事实证明这是一件愚蠢的事情。我正在使用 node-lambda 并认为它创建的 .env 文件已传播到函数的环境。记录我的数据库连接字符串表明情况并非如此。一旦我设置好了,一切都是金色的。
【讨论】:
以上是关于AWS Lambda 上的节点函数无法使用 node-pg 连接到数据库的主要内容,如果未能解决你的问题,请参考以下文章
是啥导致 AWS Lambda 上的 Mongodb 超时错误?
Lambda 上的 FFmpeg 转码导致无法使用(静态)音频
AWS 事件总线无法将日志写入来自 AWS Lambda 的自定义日志组上的 CloudWatch