Я пытался выяснить, как подключиться к кластерам Amazon Redshift, когда они являются частными, а не общедоступными. Я пытаюсь безопасно переместить данные из нашей текущей базы данных MySQL в кластер Redshift. В настоящее время у меня есть сценарий Python, который создает CSV-файл данных, помещает его в S3, создает таблицу для данных, а затем использует COPY, чтобы поместить его в Redshift. Мы используем скрипт Python для автоматизации процесса.
Однако я полностью не могу установить соединение с Redhsift, когда кластер настроен как частный. Я немного покопался и узнал о SSH-туннелировании как о потенциальном решении. Хотя Redshift не поддерживает SSH, насколько мне известно, можно использовать хост-бастион для подключения с помощью экземпляра ec2, на котором запущен psql. Проблема в том, что мне нужно выполнить это в скрипте Python, чтобы процесс оставался максимально автоматизированным.
Я создал экземпляр ec2 и использовал PuTTY для загрузки в него psql, однако я не уверен, как использовать этот экземпляр в качестве хоста-бастиона, то есть подключиться к нему и использовать его для подключения к Redshift, и как фактически выполнить это в python скрипт, если это вообще возможно. Кто-нибудь делал что-нибудь подобное или знает, как подключиться к ec2 и от ec2 к красному смещению?






Bastion будет просто использоваться для пересылки запросов с вашего компьютера в Amazon Redshift. Вам же нет нужно установить любое программное обеспечение (например, psql) на Bastion.
Предполагая, что вы можете успешно использовать PuTTY для входа в Bastion, измените эту конфигурацию в PuTTY:
:5439Вот картинка из Подключение к кластеру Redshift с частным IP:

Эта конфигурация говорит: «Перенаправьте локальный порт 5439 через SSH-соединение на сервер Bastion. Оттуда пусть Bastion отправляет трафик на REDSHIFT-DNS: 5439».
Таким образом, Bastion действует как Прыжковая коробка, перенаправляя ваш трафик и фактически не выполняя никаких действий.
Вы можете изменить локальный исходный порт на все, что захотите, чтобы у вас было несколько туннелей в одном SSH-соединении.