подключение к amazon rds с помощью psycopg2 через лямбду - PullRequest
0 голосов
/ 20 сентября 2018

мой код в aws lambda:

import sys, boto3, logging, rds_config, psycopg2

rds_host = "hostname"
name = rds_config.db_username
password = rds_config.db_password
db_name = rds_config.db_name

s3 = boto3.resource('s3')
rds_client = boto3.client('rds',aws_access_key_id=Access_Key,aws_secret_access_key=Secret_Access_Key)
instances = rds_client.describe_db_instances()
print (instances)

try:
    conn = psycopg2.connect(host=rds_host,
                        database=db_name,
                        user=name,
                        password=password)
    cur = conn.cursor()

except:
    logger.error("ERROR: Unexpected error: Could not connect to Postgresql instance.")
    sys.exit()

Я полагаю, что я подключил boto3.client к инстансу RDS, потому что информация об экземпляре выводится на экран.

Но с psycopg2 этоне будет.
И вместо logger.error я получил сообщение об ошибке тайм-аута:

Task timed out after 60.06 seconds

в дополнение: я могу подключиться к RDS либо с моей локальной консоли psql, либо с помощью скрипта python из моеголокальный сервер.Только если я протестирую сценарий с помощью aws-lambda в сети, он не будет работать

Какая-нибудь помощь по этому поводу?Спасибо!

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

В последнее время та же проблема.Эти 60 секунд типичны для тайм-аута подключения к экземпляру RDB.

Дважды проверьте группы безопасности и настройки vpc, по умолчанию доступ запрещен, и вам необходимо включить его явно.

0 голосов
/ 20 сентября 2018

Документация RDS предполагает, что, если вы получаете ошибки тайм-аута, а хост и порт указаны правильно, вам следует проверить группу безопасности, в которой находится БД, разрешающая доступ к сети.По умолчанию экземплярам БД не предоставляется доступ к сети.

См. Начало работы и Управление доступом с помощью групп безопасности Amazon RDS

...