如何将VPC中的Lambda连接到RDS?

时间:2018-04-04 14:06:02

标签: python-2.7 amazon-web-services aws-lambda amazon-rds aws-vpc

对此有多个问题/答案,但没有一个解决方案似乎有效。

我目前的设置是:

  • Lambus(使用python 2.7运行时)在VPC中
  • 同一个VPC中的RDS实例(postgres)
  • Lambda角色具有对某些S3存储桶的读/写策略和AWSLambdaVPCAccessExecutionRole
  • Lambda子网的路由表可以访问本地IP,也可以访问S3的VPC端点
  • RDS子网的路由表可以访问本地IP
  • Lambda安全组(SG)有入境和安检组织。 Postgres的出境规则& VPC端点
  • RDS SG有入境和出入境Lambda SG id的出站规则

我正在使用psycopg2进行连接,这是在我的requirements.txt文件中。我尝试了一个简单的SELECT查询,如下所示:

conn = psycopg2.connect(dbname=os.environ['DB_NAME'], user=os.environ['USERNAME'], password=os.environ['PASSWORD'])
cursor = conn.cursor()
query = "SELECT * from {};".format(os.environ['TABLE'])
cursor.execute(query)
records = cursor.fetchall()

这给了我错误:

could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
: OperationalError
Traceback (most recent call last):
File "/var/task/mylambda.py", line 31, in call
conn = psycopg2.connect(dbname=os.environ['DB_NAME'], 
user=os.environ['USERNAME'], password=os.environ['PASSWORD'])
File "/tmp/sls-py-req/psycopg2/__init__.py", line 130, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)

我错过了什么?如何从Lambda成功连接到RDS? 谢谢!

0 个答案:

没有答案