在 AWS Lambda 中连接 AWS RDS (psql)

Par*_*thy 0 python amazon-web-services python-3.x psql aws-lambda

我在 python 中编写了一个简单的 lambda 函数来从 AWS RDS 获取一些数据。PostgreSQL 是数据库引擎。

conn = psycopg2.connect(host=hostname, user=username, password=password, dbname=db_name,  connect_timeout=50)
Run Code Online (Sandbox Code Playgroud)

我就是喜欢这个。但它没有用。总是返回这样的错误

响应:{“errorMessage”:“2018-06-06T11:28:53.775Z 任务在 3.00 秒后超时”}

我该如何解决这个问题??

Joh*_*ein 5

很可能是超时,因为无法建立网络连接。

如果您想通过一个连接到数据库的公网IP地址,那么你的lambda函数应该连接到VPC。相反,连接将从 Lambda 通过互联网进入 VPC 和 Amazon RDS 实例。

如果您希望通过私有 IP 地址连接到数据库,则您的 Lambda 函数应配置为使用与 Amazon RDS 实例相同的 VPC。

在这两种情况下,都应使用RDS 实例的DNS 名称建立连接,但它在 VPC 内部和外部的解析方式不同。

最后,与 Amazon RDS 实例关联的安全组需要允许传入连接。这也将根据请求是来自公共空间还是私人空间而有所不同。您可以通过打开安全组来进行测试0.0.0.0/0,如果有效,则尝试将其限制在可能的最小范围内。