AWS - подключиться к PostgreSQL из Python не работает - PullRequest
0 голосов
/ 01 августа 2020

Извините за беспокойство, но я изо всех сил пытался использовать Python для подключения к базе данных AWS PostgreSQL на основе этой инструкции https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.Connecting.Python.html, так как она всегда отображает ошибку тайм-аута.

Я также настроил файл конфигурации в папке ~ /.aws для настройки boto3 со следующим:

[default] 
aws_access_key_id = X
aws_secret_access_key = X

import os
import boto3
import psycopg2

ENDPOINT="url"
PORT="5432"
USR="kaggle"
REGION="us-east-2a"
os.environ['LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN'] = '1'

session = boto3.Session(profile_name='default')
client = boto3.client('rds',region_name=REGION)

token = client.generate_db_auth_token(DBHostname=ENDPOINT, Port=PORT, DBUsername=USR, Region=REGION)

try:
    conn = psycopg2.connect(host=ENDPOINT, port=PORT, user=USR, password=token)
    cur = conn.cursor()
    cur.execute("""SELECT now()""")
    query_results = cur.fetchall()
    print(query_results)
except Exception as e:
    print("Database connection failed due to {}".format(e))

Ошибка:


Database connection failed due to could not connect to server: Connection timed out (0x0000274C/10060)
    Is the server running on host "url" (IP) and accepting
    TCP/IP connections on port 5432?

1 Ответ

0 голосов
/ 01 августа 2020

Похоже, ваш сценарий:

  • База данных Amazon RDS в VP C с Publicly Accessible = Yes
  • Ваш собственный компьютер в Inte rnet (за пределами AWS)
  • Вы хотите подключиться к Amazon RDS со своего компьютера

Что нужно проверить:

  • Amazon RDS запущен в publi c su bnet (определяется как su bnet с записью в таблице маршрутов, указывающей на шлюз Inte rnet)
  • Вы используете DNS Имя базы данных RDS для подключения (как указано в консоли RDS)
  • A Группа безопасности в базе данных RDS, которая разрешает входящий доступ через порт 5432 к вашему компьютеру publi c IP-адрес или на 0.0.0.0/0 (но это плохо с точки зрения безопасности)
...