В настоящее время у меня есть файл .csv в корзине S3, который я хотел бы добавить к таблице в базе данных Redshift, используя скрипт Python. У меня есть отдельный анализатор файлов и загрузка на S3, которая отлично работает.
Код, который у меня есть для подключения / копирования в таблицу, приведен ниже. Я получаю следующее сообщение об ошибке:
OperationalError: (psycopg2.OperationalError) не удалось подключиться к серверу: Тайм-аут подключения (0x0000274C / 10060) Сервер работает на хосте "redshift_cluster_name.unique_here.region. redshift.amazonaws.com "(18.221.51.45) и принимая соединения TCP / IP через порт 5439?
Я могу подтвердить следующее:
Что я должен исправить, чтобы убедиться, что я могу подключить свой файл в S3 к Redshift? Спасибо всем за любую помощь, которую вы можете предоставить.
Также я посмотрел вокруг на Переполнение стека и ServerFault , но, похоже, это либо для MySQL для Redshift, либо для решений (таких как связанный ServerFaultРешение CIDR) не сработало.
Спасибо за любую помощь!
DATABASE = "db"
USER = "user"
PASSWORD = "password"
HOST = "redshift_cluster_name.unique_here.region.redshift.amazonaws.com"
PORT = "5439"
SCHEMA = "public"
S3_FULL_PATH = 's3://bucket/file.csv'
#ARN_CREDENTIALS = 'arn:aws:iam::aws_id:role/myRedshiftRole'
REGION = 'region'
############ CONNECTING AND CREATING SESSIONS ############
connection_string = f"redshift+psycopg2://{USER}:{PASSWORD}@{HOST}:{PORT}/{DATABASE}"
engine = sa.create_engine(connection_string)
session = sessionmaker()
session.configure(bind=engine)
s = session()
SetPath = f"SET search_path TO {SCHEMA}"
s.execute(SetPath)
###########################################################
############ RUNNING COPY ############
copy_command = f
'''
copy category from '{S3_FULL_PATH}'
credentials 'aws_iam_role={ARN_CREDENTIALS}'
delimiter ',' region '{REGION}';
'''
s.execute(copy_command)
s.commit()
######################################
#################CLOSE SESSION################
s.close()
##############################################