繁体   English   中英

AWS Lambda 上的 Psycopg2 未连接到 RDS 数据库

[英]Psycopg2 on AWS Lambda not connecting to RDS database

当我尝试连接到我的 RDS Postgresql DB 时,我得到以下 output

{
   "errorMessage": "2022-01-07T13:28:35.428Z 975a92cd-936c-4d1c-8c23-6318cd609bff Task timed out after 10.01 seconds"
}

数据库设置为公共访问

Lambda psycopg2 连接代码

connection = psycopg2.connect(user=user,
                              password=password,
                              host=host,
                              port=port,
                              database=database)

打印(连接)

<connection object at 0x7ff7eb854b90; dsn: 'user=db_user password=db_password dbname=db_name host=rds_host port=5432', closed: 0>

RDS_LAMBDA_SECURITY_GROUP 入站在此处输入图像描述

VPC 路由表路由在此处输入图像描述

此外,所有子网都与路由表相关联

Lambda_Role 权限
在此处输入图像描述

VPC 日志
很多被拒绝的连接,不确定在这里发布打印是否安全。 有时与数据库的连接状态为 ACCEPTED,但还有一些其他状态为 REJECTED 状态

关于为什么我仍然无法连接到我的数据库的任何想法?

将 RDS 安全组中的 Lambda 安全组列入白名单,以允许来自 lambda 的入站访问。 (使用 RDS 端口在 RDS 入站规则中添加 Lambda SG 作为源 SG)

除了让 lambda 在同一 VPC 或具有对等互连的不同 VPC 中运行之外,这是必需的

前一周我遇到了这个问题。 将 lambda function 和 RDS 放在同一个 VPC 中,具有相同的安全组和子网。 Go 到 RDS 连接和安全选项卡。显示引用的端点地址的图像

端点是您放入psycopg2的主机。

这对我有用,我将sqlalchemypsycopg2引擎一起使用。

我将lamba更改为nodejs,然后按照与这个问题完全相同的步骤进行操作,然后我就可以让它工作了。 我认为该错误与没有 NAT 的公共子网有关

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM