Для этого есть несколько вопросов / ответов, но ни одно из решений, похоже, не работает.
Моя текущая настройка:
Я использую 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)
Что мне не хватает? Как я могу успешно подключиться к RDS с моей Lambda? Спасибо!
Во фрагменте кода не отображаются значения для host
или port
в вызове connect()
. Вы просто не скопировали их в вопрос или их нет в вашем коде?
@kdgregory, черт возьми, ты прав! Я добавлю это и посмотрю, исправит ли это.
@kdgregory вот и все! Я смотрел на это слишком долго и совершенно упустил из виду. Я даже включил host в переменные окружения, но не думал, что он отсутствует в моем коде. Спасибо!
@Katherine, раздача здесь была в сообщении об ошибке ... Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
... это дает вам две части информации, которые указывают на то, что ваш код не пытался подключиться к отдельному серверу: "Сервер работает локально?" Вы не пытались подключиться к локальному серверу, вы пытались подключиться к удаленному ... и "сокет домена unix" никогда не подключает вас к другому компьютеру, только к локальному.
В этом есть смысл @ Michael-sqlbot, спасибо за это объяснение.
Если вы запустите это на экземпляре EC2 в той же подсети, что и функция Lambda, и с тем же SG, сможете ли вы подключиться?