Подключение Redshift
Платформа dbt поддерживает подключение к Redshift.
При создании подключения требуются следующие поля:
| Loading table... |
Примечание: При настройке подключения к Redshift в dbt параметры, связанные с SSL, недоступны для ввода.
Параметры аутентификации
Ниже приведены поддерживаемые способы аутентификации для Redshift:
- Имя пользователя и пароль
- SSH-туннелирование
- Identity Center через external Oauth
- Аутентификация IAM User через extended attributes
На dbt platform аутентификация IAM User в настоящее время поддерживается только через extended attributes. После создания проекта среды разработки и деплоя можно обновить так, чтобы использовать extended attributes для передачи описанных ниже полей, так как некоторые из них не поддерживаются через текстовые поля.
Вам потребуется создать IAM User, сгенерировать access key, а также:
- для кластера — в поле
userдолжен быть указан пользователь базы данных. IAM User используется только для аутентификации, а пользователь базы данных — для авторизации - для Serverless — выдать IAM User разрешения в Redshift. Поле
userигнорируется (но всё равно является обязательным) - в обоих случаях поле
passwordбудет игнорироваться.
| Loading table... |
Пример Extended Attributes для IAM User в Redshift Serverless
Чтобы не вставлять секреты напрямую в extended attributes, используйте переменные окружения:
host: my-production-instance.myregion.redshift-serverless.amazonaws.com
method: iam
region: us-east-2
access_key_id: '{{ env_var(''DBT_ENV_ACCESS_KEY_ID'') }}'
secret_access_key: '{{ env_var(''DBT_ENV_SECRET_ACCESS_KEY'') }}'
И DBT_ENV_ACCESS_KEY_ID, и DBT_ENV_SECRET_ACCESS_KEY должны быть заданы для каждой среды, использующей extended attributes таким образом.
Подключение через SSH-туннель
Чтобы подключиться к экземпляру Redshift через SSH‑туннель, при создании подключения выберите опцию Use SSH Tunnel. При настройке туннеля необходимо указать hostname, имя пользователя и порт для bastion‑сервера.
После сохранения подключения для него будет сгенерирован и отображён публичный ключ. Вы можете скопировать этот публичный ключ на bastion‑сервер, чтобы авторизовать dbt для подключения к вашей базе данных через bastion‑сервер.
О бастионном сервере в AWS
Что такое бастионный сервер?
Bastion‑сервер в Amazon Web Services (AWS) — это хост, который позволяет dbt устанавливать SSH‑соединение.
dbt отправляет только запросы и не передаёт большие объёмы данных. Это означает, что bastion‑сервер может работать на AWS‑инстансе практически любого размера, например t2.small или t2.micro.
Убедитесь, что инстанс расположен в той же Virtual Private Cloud (VPC), что и экземпляр Redshift, и что для группы безопасности bastion‑сервера настроены правила, позволяющие подключаться к порту хранилища данных.
Настройка bastion‑сервера в AWS
Чтобы настроить SSH‑туннель в dbt, вам нужно указать hostname/IP вашего bastion‑сервера, имя пользователя и порт (на ваш выбор), к которому будет подключаться dbt. Выполните следующие шаги:
-
Убедитесь, что сетевые правила безопасности bastion‑сервера настроены так, чтобы принимать подключения с IP‑адресов dbt на тот порт, который вы настроили.
-
Создайте пользовательскую учётную запись с помощью CLI инстанса bastion‑сервера. В следующем примере используется имя пользователя
dbtcloud:sudo groupadd dbtcloud
sudo useradd -m -g dbtcloud dbtcloud
sudo su - dbtcloud
mkdir ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys -
Скопируйте и вставьте сгенерированный dbt публичный ключ в файл
authorized_keys.
После этого bastion‑сервер будет готов к использованию dbt в качестве туннеля для подключения к окружению Redshift.
Конфигурация
Чтобы оптимизировать производительность с помощью платформо-специфичных настроек в dbt, см. настройки, специфичные для Redshift.
Чтобы выдать пользователям или ролям права доступа к базе данных (права и привилегии), см. страницу Redshift permissions.

