Подключение Redshift к dbt v2
Настройте адаптер Redshift командой dbt init или вручную создайте profiles.yml с полями для выбранного способа аутентификации.
Адаптер Redshift для dbt v2 поддерживает следующие способы аутентификации:
- Password
- IAM profile
- IAM Identity Center (browser)
Разрешения в хранилище
Пользователь базы данных Redshift, которого использует dbt v2, должен иметь возможность выполнять рабочие нагрузки dbt и читать метаданные каталога, используемые для интроспекции.
Необходимые объекты Redshift
Перед подключением следующие объекты должны существовать или быть доступны:
| Объект | Назначение |
|---|---|
| Кластер (provisioned) или рабочая группа (serverless) | Вычислительный ресурс |
| База данных | Целевая база данных |
| Схема | Целевая схема в базе данных |
| Пользователь | Пользователь базы данных для аутентификации |
| Роль или профиль IAM (необязательно) | Для аутентификации на основе IAM |
Основные разрешения
Для базовых функций dbt необходимы следующие разрешения:
| Разрешение | Объект | Назначение |
|---|---|---|
USAGE | Схема | Доступ к схеме |
CREATE | Схема | Создание таблиц и представлений в схеме |
SELECT | Таблицы или представления | Чтение данных |
INSERT | Таблицы | Вставка данных |
UPDATE | Таблицы | Обновление данных |
DELETE | Таблицы | Удаление данных |
DROP | Таблицы или представления | Удаление или замена объектов |
TRUNCATE | Таблицы | Очистка таблиц |
Операции с метаданными
dbt v2 запрашивает следующие системные отношения Redshift:
| Системное отношение | Назначение | Необходимое разрешение |
|---|---|---|
SVV_ALL_COLUMNS | Метаданные столбцов | SELECT для системного представления |
pg_class | Получение списка отношений | Доступ к системному каталогу |
pg_namespace | Информация о схемах | Доступ к системному каталогу |
sys_query_detail | Проверка актуальности источников (время последней вставки) | SELECT для системного представления |
svv_table_info | Получение списка материализованных представлений, если они есть в проекте | SELECT для системного представления |
svv_mv_info | Получение списка материализованных представлений, если они есть в проекте | SELECT для системного представления |
Управление схемами
Разрешения для управления схемами, необходимые при определённых условиях
| Разрешение | Объект | Когда требуется |
|---|---|---|
CREATE SCHEMA | База данных | Автоматическое создание схем |
Примеры выдачи прав через SQL приведены в разделе Разрешения Redshift.
Настройка dbt v2
При запуске dbt init в CLI укажите следующие данные:
- Host: имя хоста кластера Redshift.
- User: имя пользователя для подключения к базе данных.
- Database: имя базы данных.
- Schema: имя схемы.
- Port (по умолчанию 5439): порт среды Redshift.
Файл profiles.yml также можно создать вручную. Формат полей показан в разделе Способы аутентификации. Если файл уже существует, можно сохранить текущие поля или перезаписать их.
Выберите способ аутентификации и заполните запрошенные поля.
Поддерживаемые способы аутентификации
- Password
- IAM profile
- IAM Identity Center (browser)
Для входа используйте пароль пользователя Redshift. Его также можно указать открытым текстом в profiles.yml.
Пример настройки с паролем
default:
target: dev
outputs:
dev:
type: redshift
port: 5439
database: JAFFLE_SHOP
schema: JAFFLE_TEST
ra3_node: true
method: database
host: ABC123.COM
user: JANE.SMITH@YOURCOMPANY.COM
password: ABC123
threads: 16
Укажите IAM-профиль для подключения сеансов dbt v2:
- IAM Profile: имя профиля.
- Cluster ID: уникальный идентификатор кластера AWS.
- Region: регион AWS, например us-east-1.
- Use RA3 node type (y/n): использовать высокопроизводительный узел AWS RA3.
Пример настройки IAM-профиля
default:
target: dev
outputs:
dev:
type: redshift
port: 5439
database: JAFFLE_SHOP
schema: JAFFLE_TEST
ra3_node: false
method: iam
host: YOURHOSTNAME.COM
user: JANE.SMITH@YOURCOMPANY.COM
iam_profile: YOUR_PROFILE_NAME
cluster_id: ABC123
region: us-east-1
threads: 16
Войдите через AWS IAM Identity Center и задайте для method значение browser_identity_center. dbt откроет окно браузера для аутентификации без необходимости указывать пароль или профиль IAM в файле profiles.yml.
Этот метод работает при локальном запуске dbt из командной строки. В dbt platform он пока не поддерживается.
Перед началом убедитесь, что ваш кластер или рабочая группа Redshift настроены для интеграции с IAM Identity Center. Вам понадобятся следующие поля:
| Поле профиля | Обязательное | По умолчанию | Описание |
|---|---|---|---|
method | Да | — | Задайте значение browser_identity_center. |
idc_region* | Да | — | Регион AWS, в котором находится ваш экземпляр IAM Identity Center (например, us-east-1). |
issuer_url | Да | — | URL издателя вашего экземпляра IAM Identity Center (например, https://identitycenter.amazonaws.com/ssoins-1234567890abcdef). |
idp_listen_port | Нет | 7890 | Локальный порт, на котором dbt ожидает перенаправление из браузера после входа. |
idc_client_display_name | Нет | Amazon Redshift driver | Имя приложения, отображаемое в запросе согласия в браузере. |
idp_response_timeout | Нет | 60 | Время в секундах, в течение которого dbt ожидает завершения входа до истечения времени ожидания. |
*idc_region — это не то же самое, что регион вашей учетной записи AWS. dbt пока не поддерживает указание region вместе с browser_identity_center в profiles.yml, поэтому считывает регион AWS из файла конфигурации AWS (~/.aws/config). Убедитесь, что в нем задан регион по умолчанию (например, выполнив aws configure).
Пример конфигурации IAM Identity Center
default:
target: dev
outputs:
dev:
type: redshift
method: browser_identity_center
host: hostname.region.redshift.amazonaws.com
port: 5439
dbname: analytics
schema: analytics
idc_region: us-east-1
issuer_url: https://identitycenter.amazonaws.com/ssoins-1234567890abcdef
# Необязательные параметры
idp_listen_port: 7890
idc_client_display_name: Amazon Redshift driver
idp_response_timeout: 60
threads: 4
Регистр идентификаторов
Redshift приводит имена к нижнему регистру, включая имена в кавычках, если для параметра enable_case_sensitive_identifier не установлено значение true в группе параметров кластера или в конфигурации рабочей группы Serverless. dbt не включает этот параметр. См. Настройка заключения в кавычки.
Дополнительные сведения
Настройки Redshift описаны в справочнике адаптера.