После нескольких дней тестирования и исследований я пришел к выводу - чтобы помочь другим в такой же ситуации, ниже приведено полное руководство, в котором приведен пример подключения к серверу Amazon RDS через туннель SSH черезсервер приложений (EC2), что делает Elastic Beanstalk.
Ручное подключение к серверу с помощью командной строки Windows:
Это основано на том, что я нашел в эта статья о SSH-соединениях на терминале .Команда ssh может не только подключиться к целевому серверу, но и подключиться ко второму серверу через первый.Вот как это работает:
ssh -L 3307:databaseServer.rds.amazonaws.com:3306 -i myPemFile.pem ec2-user@ec2-myApplicationServer.us-west-2.compute.amazonaws.com
Эта команда выполняет следующие действия: 'ssh подключается к моему серверу приложений через порт 22 (по умолчанию) и привязывает каждый запрос к databaseServer: 3306 к локальному хосту моей локальной машины: 3307port '
Оставьте это командное окно как есть, откройте новое и напишите:
mysql -u "databaseUserName" -P 3307 -p"databasePassword"
С этим отображается приглашение mysql.Теперь вы отправляете команды MySQL серверу базы данных через SSH-соединение с сервером приложений.Локальный (ваш собственный компьютер) порт 3307 теперь привязан к серверу базы данных, используя сервер приложений в качестве прокси.
Установка tSshTunnel в Talend Open Studio для интеграции данных
Плагин, обнаруженный на торговой площадке Talend (я использую Talend TOS 7.1.1), не появился в меню «Палитра», поэтому я извлек файл tSshTunnel.zip в папку ~\TOS_DI-20181026_1147-V7.1.1\plugins\org.talend.designer.components.localprovider_7.1.1.20181026_1147\components\tSshTunnel
. Вернитесь в Talend Studio, нажмите CTRL SHIFT F3 для перезагрузки.компоненты или перезапустите TOS.
Ошибка в tSshTunnel и способы ее обхода
На конкретный вопрос: ссылки на базы данных Amazon RDS обычно очень длинные (например, ktofbf83428349cntdfg.clus33245kfur.us-west-2.rds.amazonaws.com) и причина сообщения « Cannot Store MAC », по-видимому, заключается в таком огромном размере ввода.Однако плагин принимает эквивалентные URL-адреса ec2-xx.xx.xx.xx.us-west-1.compute.amazonaws.com.Этот URL можно отследить с помощью инструмента, подобного ipinfo .Просто введите ссылку на вашу базу данных, и вы получите соответствующую ссылку в стиле ec2 (которая решает проблему пользователя).
Общие инструкции по использованию tSshTunnel для варианта использования Amazon RDS
Чтобы ответ был как можно более широким, я хотел бы добавить некоторые детали конфигурации:
- Используемые в вопросе компоненты верны
- Конфигурация для tSshComponent:
- Имя хоста: должен быть сервером приложений "ec2-xx.xx.xx.xx.us-west-2.compute.amazonaws.com"
- Порт: "22", междукавычки
- Имя пользователя: "ec2-user"
- Пароль: ""
- KeyFile: "C: /folder/pemFile.pem" (обратите внимание, что нам нужно использовать '/ 'обратная косая черта)
- L Строка туннеля: идет в формате «Порт на вашем компьютере, связанный с сервером базы данных»: «Сервер базы данных»: «Порт на сервере базы данных».Например, "3307: ec2-yy.yy.yy.yy -....: 3306"
- Конфигурация для компонента tDBConnection:
- Хост: "localhost"
- Порт: "3307"
- Имя пользователя: "имя пользователя базы данных"
- Пароль: "пароль пользователя"