Подключение Redshift, PostgreSQL и AlloyDB
Следующие поля обязательны при создании подключения Postgres, Redshift или AlloyDB:
Поле | Описание | Примеры |
---|---|---|
Host Name | Имя хоста базы данных Postgres, Redshift или AlloyDB, к которой нужно подключиться. Это может быть как имя хоста, так и IP-адрес. | xxx.us-east-1.amazonaws.com или hostname.us-east-1.redshift.amazonaws.com или workgroup-name.123456789.us-east-1.redshift-serverless.amazonaws.com |
Port | Обычно 5432 (Postgres) или 5439 (Redshift) | 5439 |
Database | Логическая база данных, к которой нужно подключиться и выполнять запросы. | analytics |
Примечание: При настройке подключения Redshift или Postgres в dbt Cloud параметры, связанные с SSL, недоступны для ввода.
Параметры аутентификации
Для аутентификации пользователи dbt Cloud могут использовать либо Имя пользователя и пароль базы данных, либо теперь могут использовать Аутентификацию пользователя IAM для Redshift через расширенные атрибуты.
- Database
- IAM User
Следующая таблица содержит параметры для метода подключения на основе пароля.
Поле | Описание | Примеры |
---|---|---|
user | Имя пользователя для входа в ваш кластер | myuser |
password | Пароль для аутентификации | _password1! |
В Cloud аутентификация пользователя IAM в настоящее время поддерживается только через расширенные атрибуты. После создания проекта среды разработки и развертывания могут быть обновлены для использования расширенных атрибутов для передачи полей, описанных ниже, так как некоторые из них не поддерживаются через текстовое поле.
Вам нужно будет создать пользователя IAM, сгенерировать ключ доступа и либо:
- в кластере ожидается пользователь базы данных в поле
user
. Пользователь IAM используется только для аутентификации, пользователь базы данных — для авторизации - в Serverless предоставьте разрешение пользователю IAM в Redshift. Поле
user
игнорируется (но все равно требуется) - Для обоих поле
password
будет игнорироваться.
Поле профиля | Пример | Описание |
---|---|---|
method | IAM | используйте IAM для аутентификации через аутентификацию пользователя IAM |
cluster_id | CLUSTER_ID | Требуется для аутентификации IAM только для предоставленного кластера, не для Serverless |
user | username | Пользователь, выполняющий запросы к базе данных, игнорируется для Serverless (но все равно требуется) |
region | us-east-1 | Регион вашего экземпляра Redshift |
access_key_id | ACCESS_KEY_ID | идентификатор ключа доступа пользователя IAM |
secret_access_key | SECRET_ACCESS_KEY | секретный ключ доступа пользователя IAM |
Пример расширенных атрибутов для пользователя IAM на Redshift Serverless
Чтобы избежать вставки секретов в расширенные атрибуты, используйте переменные окружения:
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
должны быть назначены для каждой среды, использующей расширенные атрибуты таким образом.
Подключение через SSH-туннель
Чтобы подключиться к экземпляру Postgres, Redshift или AlloyDB через SSH-туннель, выберите опцию Использовать SSH-туннель при создании подключения. При настройке туннеля необходимо указать имя хоста, имя пользователя и порт для бастионного сервера.
После сохранения подключения будет сгенерирован и отображен открытый ключ для подключения. Вы можете скопировать этот открытый ключ на бастионный сервер, чтобы авторизовать dbt Cloud для подключения к вашей базе данных через бастионный сервер.
О бастионном сервере в AWS
Что такое бастионный сервер?
Бастионный сервер в Amazon Web Services (AWS) — это хост, который позволяет dbt Cloud открыть SSH-соединение.
dbt Cloud отправляет только запросы и не передает большие объемы данных. Это означает, что бастионный сервер может работать на экземпляре AWS любого размера, например, t2.small или t2.micro.
Убедитесь, что местоположение экземпляра совпадает с той же виртуальной частной сетью (VPC), что и экземпляр Redshift, и настройте группу безопасности для бастионного сервера, чтобы обеспечить возможность подключения к порту хранилища.
Настройка бастионного сервера в AWS
Чтобы настроить SSH-туннель в dbt Cloud, вам нужно будет предоставить имя хоста/IP вашего бастионного сервера, имя пользователя и порт, который вы выберете, к которому dbt Cloud будет подключаться. Ознакомьтесь со следующими шагами:
- Убедитесь, что на бастионном сервере установлены сетевые правила безопасности для принятия подключений с IP-адресов dbt Cloud на любом порту, который вы настроили.
- Настройте учетную запись пользователя, используя CLI экземпляра бастионного сервера. В следующем примере используется имя пользователя
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 Cloud открытый ключ в файл authorized_keys.
Теперь бастионный сервер должен быть готов для использования dbt Cloud в качестве туннеля в среду Redshift.
Конфигурация
Чтобы оптимизировать производительность с конфигурациями, специфичными для платформы данных в dbt Cloud, обратитесь к конфигурации, специфичной для Redshift.
Чтобы предоставить пользователям или ролям разрешения базы данных (права доступа и привилегии), обратитесь к странице разрешений Redshift или разрешений Postgres.