python - 在 AWS Lambda 中连接 AWS RDS (psql)

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

我用 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 秒后超时" }

我该如何解决这个问题?

最佳答案

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

如果您希望通过公共(public) IP 地址连接到数据库,则您的 Lambda 函数不应连接到 VPC。相反,连接将从 Lambda 通过互联网进入 VPC 和 Amazon RDS 实例。

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

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

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

关于python - 在 AWS Lambda 中连接 AWS RDS (psql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50719575/

相关文章:

cronjob 完成后的 Python print() 终端转储

java - 如何使用 Java SDK 或 Amazon API 从 EC2 获取 IAM 角色列表?

regex - 在 python 正则表达式的集合中使用 *

amazon-web-services - aws opsworks 多个 nodejs 应用程序?

java - 在生产 Java SDK 中向表添加和删除属性的 DynamoDB 解决方案

python - Dask apply_along_axis 错误,与 Numpy 的比较

python - 显示 ModelForms 的 Django 表单验证错误

python - 保持相同的SyntaxError : invalid syntax when trying to load packages using pypm

python - 使用lxml解析kml文件

python - 如何复制 Django 模型实例和所有相关数据