我在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秒后超时" }
我该如何解决这个问题?
答案 0 :(得分:4)
最有可能是超时,因为无法建立网络连接。
如果您希望通过公共IP地址连接到数据库,那么您的Lambda函数应该不连接到VPC。相反,连接将从Lambda通过互联网进入VPC和Amazon RDS实例。
如果您希望通过私有IP地址连接到数据库,则应将Lambda函数配置为使用与Amazon RDS实例相同的VPC。
在这两种情况下,应使用RDS实例的 DNS名称建立连接,但它将在VPC内外以不同方式解析。
最后,与Amazon RDS实例关联的安全组需要允许传入连接。这也将取决于请求是来自公共空间还是私人空间。您可以通过打开安全组0.0.0.0/0
进行测试,如果有效,则尝试将其限制在可能的最小范围内。