Как использовать хост-бастион для SSH в Redshift

Я пытался выяснить, как подключиться к кластерам Amazon Redshift, когда они являются частными, а не общедоступными. Я пытаюсь безопасно переместить данные из нашей текущей базы данных MySQL в кластер Redshift. В настоящее время у меня есть сценарий Python, который создает CSV-файл данных, помещает его в S3, создает таблицу для данных, а затем использует COPY, чтобы поместить его в Redshift. Мы используем скрипт Python для автоматизации процесса.

Однако я полностью не могу установить соединение с Redhsift, когда кластер настроен как частный. Я немного покопался и узнал о SSH-туннелировании как о потенциальном решении. Хотя Redshift не поддерживает SSH, насколько мне известно, можно использовать хост-бастион для подключения с помощью экземпляра ec2, на котором запущен psql. Проблема в том, что мне нужно выполнить это в скрипте Python, чтобы процесс оставался максимально автоматизированным.

Я создал экземпляр ec2 и использовал PuTTY для загрузки в него psql, однако я не уверен, как использовать этот экземпляр в качестве хоста-бастиона, то есть подключиться к нему и использовать его для подключения к Redshift, и как фактически выполнить это в python скрипт, если это вообще возможно. Кто-нибудь делал что-нибудь подобное или знает, как подключиться к ec2 и от ec2 к красному смещению?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
1 583
1

Ответы 1

Bastion будет просто использоваться для пересылки запросов с вашего компьютера в Amazon Redshift. Вам же нет нужно установить любое программное обеспечение (например, psql) на Bastion.

Предполагая, что вы можете успешно использовать PuTTY для входа в Bastion, измените эту конфигурацию в PuTTY:

  • Перейдите на страницу конфигурации Туннели
  • Исходный порт: 5439
  • Назначения: Полное DNS-имя вашего кластера Redshift, за которым следует :5439
  • Нажмите Добавлять
  • Сохраните настройки PuTTY

Вот картинка из Подключение к кластеру Redshift с частным IP:

PuTTY for Redshift

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

Таким образом, Bastion действует как Прыжковая коробка, перенаправляя ваш трафик и фактически не выполняя никаких действий.

Вы можете изменить локальный исходный порт на все, что захотите, чтобы у вас было несколько туннелей в одном SSH-соединении.

Другие вопросы по теме