【问题标题】:Connect AWS RDS (psql) in AWS Lambda在 AWS Lambda 中连接 AWS RDS (psql)
【发布时间】:2018-11-16 02:10:40
【问题描述】:

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

conn = psycopg2.connect(host=hostname, user=username, password=password, dbname=db_name,  connect_timeout=50)

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

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

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

【问题讨论】:

  • 与 psql 的连接是否打开?您可以在从 lambda 测试之前测试连接性吗?
  • 我可以使用相同的凭据通过我的 pgAdmin 连接到这个数据库。你是说这种连接吗?

标签: python python-3.x amazon-web-services aws-lambda psql


【解决方案1】:

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

如果您希望通过公共 IP 地址 连接到数据库,那么您的 Lambda 函数应该连接到 VPC。相反,连接将从 Lambda 通过 Internet 进入 VPC 和 Amazon RDS 实例。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-25
    • 2017-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    • 2021-06-10
    相关资源
    最近更新 更多