在AWS Lambda

时间:2018-06-06 11:42:53

标签: 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秒后超时" }

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

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

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

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

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

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