Перейти к основному содержимому

Подключение Redshift

Платформа dbt поддерживает подключение к Redshift.

При создании подключения требуются следующие поля:

FieldDescriptionExamples
Host NameИмя хоста базы данных, к которой выполняется подключение. Это может быть как hostname, так и IP-адрес. См. страницы настройки, чтобы узнать hostname для вашего адаптера.Redshift: hostname.region.redshift.amazonaws.com
PortОбычно 5439 (Redshift)5439
DatabaseЛогическая база данных, к которой выполняется подключение и в которой будут выполняться запросы.analytics
Loading table...

Примечание: При настройке подключения к Redshift в dbt параметры, связанные с SSL, недоступны для ввода.

Настройка подключения к RedshiftНастройка подключения к Redshift

Параметры аутентификации

Ниже приведены поддерживаемые способы аутентификации для 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 будет игнорироваться.
Profile fieldExampleDescription
methodIAMиспользование IAM для аутентификации через IAM User
cluster_idCLUSTER_IDТребуется для IAM-аутентификации только для provisioned-кластера, не для Serverless
userusernameПользователь, выполняющий запросы к базе данных; игнорируется для Serverless (но всё равно обязателен)
regionus-east-1Регион вашего экземпляра Redshift
access_key_idACCESS_KEY_IDaccess key id IAM User
secret_access_keySECRET_ACCESS_KEYsecret access key IAM User
Loading table...

Пример Extended Attributes для IAM User в Redshift Serverless

Чтобы не вставлять секреты напрямую в extended attributes, используйте переменные окружения:

~/.dbt/profiles.yml
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. Выполните следующие шаги:

  1. Убедитесь, что сетевые правила безопасности bastion‑сервера настроены так, чтобы принимать подключения с IP‑адресов dbt на тот порт, который вы настроили.

  2. Создайте пользовательскую учётную запись с помощью 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
  3. Скопируйте и вставьте сгенерированный dbt публичный ключ в файл authorized_keys.

После этого bastion‑сервер будет готов к использованию dbt в качестве туннеля для подключения к окружению Redshift.

Конфигурация

Чтобы оптимизировать производительность с помощью платформо-специфичных настроек в dbt, см. настройки, специфичные для Redshift.

Чтобы выдать пользователям или ролям права доступа к базе данных (права и привилегии), см. страницу Redshift permissions.

FAQs

 Ошибка базы данных - не удалось подключиться к серверу: время ожидания подключения истекло

Нашли ошибку?

0
Loading