Настройка AWS PrivateLink для Redshift
Эта функция доступна на следующих уровнях dbt Enterprise:
- Enterprise+
- Virtual Private
Чтобы узнать больше об этих тарифах, свяжитесь с нами по адресу sales@getdbt.com.
AWS предоставляет два способа создания конечной точки VPC PrivateLink для кластера Redshift, работающего в другой VPC:
- Конечные точки PrivateLink, управляемые Redshift
- Конечные точки PrivateLink интерфейсного типа для Redshift
dbt поддерживает оба типа конечных точек, но при выборе типа необходимо учитывать ряд особенностей. Конечные точки, управляемые Redshift, проще настроить, и они не требуют дополнительных затрат, что делает их предпочтительным вариантом для многих пользователей. Однако они могут быть доступны не во всех средах. Определите подходящий для вашей системы тип с учётом этих критериев. Следуйте инструкциям в разделе ниже, соответствующем выбранному типу конечной точки.
Конечные точки частного подключения не поддерживают соединения между разными облачными провайдерами (AWS, Azure и GCP). Чтобы частное подключение работало, и dbt, и сервер (например, Redshift) должны быть размещены у одного облачного провайдера. Например, dbt, размещённый в AWS, не может подключаться к сервисам, размещённым в Azure, а dbt, размещённый в Azure, не может подключаться к сервисам, размещённым в GCP.
Настроить конечную точку AWS PrivateLink для Redshift можно двумя способами:
- Самостоятельная настройка частных конечных точек: создавайте конечные точки Redshift PrivateLink и управляйте ими непосредственно в пользовательском интерфейсе dbt platform. Сейчас эта возможность находится в стадии бета-тестирования.
- Настройка с помощью службы поддержки: обратитесь в службу поддержки dbt для настройки конечной точки Redshift PrivateLink.
Настройка на стороне AWS одинакова для обоих способов. Вы подготавливаете ресурсы AWS (предоставляете доступ для конечных точек, управляемых Redshift, или создаёте сервис конечных точек VPC для конечных точек интерфейсного типа), а затем отправляете запрос через интерфейс (при самостоятельной настройке) или по электронной почте в службу поддержки dbt (при настройке с помощью службы поддержки).
Самостоятельная настройка частных конечных точек Бета-версия
Самостоятельная настройка частных конечных точек для Redshift в AWS сейчас находится в стадии бета-тестирования и доступна всем клиентам, соответствующим требованиям. Если в настройках вашего аккаунта нет раздела Private endpoints, используйте настройку с помощью службы поддержки.
При самостоятельной настройке вы запрашиваете конечную точку Redshift PrivateLink в dbt platform без создания обращения в службу поддержки. Если запрос завершится ошибкой, вы сможете изменить и повторно отправить его либо удалить конечную точку и повторить попытку самостоятельно.
dbt platform поддерживает самостоятельную настройку для всех трёх типов Redshift:
- Redshift Managed — выделенные кластеры Redshift (выберите Redshift Managed в интерфейсе).
- Redshift Managed Serverless — Redshift Serverless (выберите Redshift Managed в интерфейсе, затем выберите Serverless).
- Redshift интерфейсного типа (выберите Redshift в интерфейсе).
Предварительные требования
- Набор разрешений Account admin или Project creator в dbt platform. Пользователи с лицензией IT также могут создавать частные конечные точки.
- Завершённая настройка на стороне AWS для выбранного типа конечной точки. Выполните те же действия, что и при настройке с помощью службы поддержки: предоставьте доступ для конечных точек, управляемых Redshift, или подготовьте сервис конечных точек VPC для конечных точек интерфейсного типа. Однако остановитесь перед шагом Отправьте запрос в службу поддержки dbt и вместо него воспользуйтесь инструкциями для интерфейса ниже.
Запрос новой частной конечной точки
-
В dbt platform перейдите в Account settings → Private endpoints.
-
В таблице Private endpoints просмотрите существующие конечные точки. В таблице представлены все частные конечные точки вашего аккаунта (включая те, которые не относятся к Redshift) с такими сведениями, как Name, Connection type, URL, Connectivity status, а также количеством подключений (Connections), использующих конечную точку. Поиск доступен по Name или URL.
-
Чтобы запросить новую конечную точку, нажмите Request new.
-
В разделе Provider type выберите вариант, соответствующий типу вашей конечной точки, затем заполните поля для этого типа:
- Redshift Managed / Serverless
- Redshift (интерфейсного типа)
Выберите Redshift Managed как для выделенных кластеров Redshift, так и для Redshift Serverless.
- На шаге Step 1: Choose your deployment type выберите Provisioned или Serverless. Если вы выбрали Serverless и у вас несколько рабочих групп, обязательно предоставьте доступ в разделе Granted accounts для каждой рабочей группы при настройке на стороне AWS. См. раздел Необходима авторизация для каждой рабочей группы.
- На шаге Step 2: Enter your cluster details укажите Cluster identifier и Resource owner AWS account ID.
- На шаге Step 3: Select your AWS region выберите регион AWS, в котором размещён кластер или рабочая группа Redshift.
- Нажмите Submit request.
Для конечной точки интерфейсного типа выберите Redshift.
- На шаге Step 1: Enter your AWS PrivateLink service name введите имя сервиса конечных точек AWS VPC, который вы настроили для своего кластера Redshift (например,
com.amazonaws.vpce.us-east-1.vpce-svc-xxxxxxxxxxxxxxxxx). - На шаге Step 2: Name your Redshift endpoint выберите имя для идентификации конечной точки. При регистрации оно используется как префикс имени хоста.
- Нажмите Submit request.
-
После отправки запрос и его статус появятся в таблице Private endpoints. После одобрения вы получите уведомление.
-
Перейдите на страницу Connections и выполните действия из раздела Создание подключения в dbt, чтобы настроить PrivateLink. После настройки новая конечная точка появится в разделе Private endpoints → Associated connections.
Если проверка подключения завершается ошибкой сразу после настройки, это ожидаемо и не означает, что что-то не так. Распространение изменений DNS может занять несколько минут. Подождите несколько минут и повторите проверку, прежде чем обращаться в службу поддержки.
Устранение неполадок и ошибки
Если запрос конечной точки завершается ошибкой, dbt platform отображает её в баннере на странице сведений о конечной точке вместе с подробностями, которыми можно безопасно делиться за пределами организации. Изучите сообщение, устраните причину (например, убедитесь, что аккаунту AWS dbt предоставлен доступ в разделе Granted accounts кластера), затем нажмите Retry.
Если отображается состояние ошибки без понятных дальнейших действий, соберите сведения о запросе (имя конечной точки, время создания и статус) и обратитесь в службу поддержки dbt.
Настройка с помощью службы поддержки
Если раздел Private endpoints недоступен в настройках вашего аккаунта, настройте Redshift PrivateLink, выполнив приведённые ниже действия и отправив запрос в службу поддержки dbt.
Настройка PrivateLink, управляемого Redshift
-
Найдите раздел Granted accounts в настройках Redshift
-
Стандартный Redshift
- В работающем кластере Redshift выберите вкладку Properties.
-
Redshift Serverless
- На странице Workgroup configuration в Redshift Serverless. Если у вас несколько рабочих групп, обязательно предоставьте доступ в разделе Granted accounts для каждой рабочей группы при настройке на стороне AWS. См. раздел Необходима авторизация для каждой рабочей группы.
-
-
В разделе Granted accounts нажмите Grant access.
-
Введите идентификатор аккаунта AWS:
346425330055— ПРИМЕЧАНИЕ: этот идентификатор аккаунта применим только к мультитенантным средам dbt. Для получения идентификаторов аккаунтов Virtual Private/Single-Tenant обратитесь в службу поддержки. -
Выберите Grant access to all VPCs —или— (необязательно) обратитесь в службу поддержки, чтобы получить соответствующий региональный идентификатор VPC для указания в поле Grant access to specific VPCs.
-
Добавьте необходимые сведения в следующий шаблон и отправьте запрос в службу поддержки dbt:
-
Стандартный Redshift
-
Redshift Serverless
-
Необходима авторизация для каждой рабочей группы
В Redshift Serverless раздел Granted accounts относится к одной рабочей группе. Если в вашей среде несколько рабочих групп, необходимо отдельно предоставить доступ для каждой рабочей группы, которую вы хотите подключить к dbt.
- Авторизация одной рабочей группы (например, sales) не распространяется на другие рабочие группы (например, finance или product).
- Повторите шаги с 1 по 4 из раздела Настройка PrivateLink, управляемого Redshift отдельно для каждой рабочей группы.
Это требование действует независимо от того, настраиваете ли вы конечную точку самостоятельно или с помощью службы поддержки.
dbt Labs выполнит настройку приватного подключения от вашего имени. Пожалуйста, заложите 3–5 рабочих дней на завершение этого процесса. Служба поддержки свяжется с вами, когда конечная точка (endpoint) будет доступна.
Настройка PrivateLink интерфейсного типа для Redshift
1. Подготовьте ресурсы AWS
Для создания подключения Interface VPC PrivateLink необходимо создать несколько ресурсов AWS в аккаунте, содержащем кластер Redshift:
-
Группа безопасности (Security Group) — если вы подключаетесь к существующему кластеру Redshift, она, скорее всего, уже существует. Однако может потребоваться добавить или изменить правила группы безопасности, чтобы принимать трафик от Network Load Balancer (NLB), созданного для этого сервиса конечных точек.
-
Целевая группа (Target Group) — целевая группа подключается к NLB и указывает, куда направлять запросы. Для целевых групп NLB доступны различные типы целей, но здесь будет использоваться тип IP-адреса.
-
Тип цели (Target Type): IP
-
Стандартный Redshift
- По возможности используйте IP-адреса из раздела Network Interfaces кластера Redshift. IP-адреса из раздела Node IP addresses тоже подойдут, но вероятность их изменения выше.
- Изначально, скорее всего, будет только один сетевой интерфейс (NI), но если кластер переключится в другую зону доступности (AZ), для этой зоны также будет создан новый NI. IP-адрес NI из исходной зоны доступности продолжит работать, но IP-адрес нового NI тоже можно добавить в целевую группу. При добавлении дополнительных IP-адресов учтите, что соответствующую зону доступности также нужно добавить в NLB. После создания сетевые интерфейсы должны оставаться неизменными (это наше наблюдение по результатам тестирования, но AWS официально это не документирует).
-
Redshift Serverless
- Чтобы найти IP-адреса экземпляра Redshift Serverless, найдите и скопируйте конечную точку (только URL, указанный до порта) в разделе Workgroup configuration консоли AWS для этого экземпляра.
- Выполните в командной строке команду
nslookup <endpoint>, используя конечную точку из предыдущего шага, и укажите полученные IP-адреса в целевой группе.
-
-
Протокол целевой группы (Target Group protocol): TCP
-
-
Network Load Balancer (NLB) — необходимо создать прослушиватель (Listener), связанный с только что созданной целевой группой (порт по умолчанию —
5439)- Scheme: Internal
- IP address type: IPv4
- Network mapping: выберите VPC, в которой развёртываются сервис конечных точек VPC и NLB, и выберите подсети как минимум из двух зон доступности.
- Security Groups: у Network Load Balancer (NLB), связанного с сервисом конечных точек VPC, либо не должно быть связанной группы безопасности, либо в этой группе должно быть правило, разрешающее запросы из соответствующих частных CIDR-диапазонов dbt. Обратите внимание: они отличаются от статических публичных IP-адресов, перечисленных на странице dbt Доступ, регионы и IP-адреса. Служба поддержки dbt может предоставить нужные частные CIDR-диапазоны по запросу. При необходимости, пока вы не сможете сузить правило до меньшего CIDR-диапазона, предоставленного dbt, временно добавьте разрешающее правило для
10.0.0.0/8, чтобы обеспечить подключение. - Listeners: создайте по одному прослушивателю для каждой целевой группы, сопоставив соответствующий входящий порт с соответствующей целевой группой (подробнее).
-
Сервис конечных точек VPC (VPC Endpoint Service) — свяжите его с только что созданным NLB.
- Acceptance required (необязательно) — требуется принять наш запрос на подключение после того, как dbt создаст конечную точку.
Мы настоятельно рекомендуем включить балансировку нагрузки между зонами для вашего NLB или целевой группы (Target Group); для некоторых подключений она может быть необходима. Балансировка нагрузки между зонами также может улучшить распределение трафика и повысить устойчивость подключений к сбоям. Обратите внимание, что подключение между зонами может повлечь дополнительные расходы на передачу данных, хотя для запросов от dbt они должны быть минимальными.
2. Предоставьте аккаунту AWS dbt доступ к сервису конечных точек VPC
В созданном сервисе конечных точек VPC откройте вкладку Allow principals. Нажмите Allow principals, чтобы предоставить доступ. Введите ARN корневого пользователя соответствующего производственного аккаунта AWS и сохраните изменения.
- Principal:
arn:aws:iam::346425330055:role/MTPL_Admin
3. Получите имя сервиса конечных точек VPC
После создания сервиса конечных точек VPC его имя можно найти в консоли AWS: перейдите в VPC → Endpoint Services и выберите соответствующий сервис конечных точек. Скопируйте значение поля имени сервиса и включите его в обращение в службу поддержки dbt.
4. Отправьте запрос в службу поддержки dbt
Добавьте необходимые сведения в шаблон ниже и отправьте запрос в службу поддержки dbt:
dbt Labs выполнит настройку приватного подключения от вашего имени. Пожалуйста, заложите 3–5 рабочих дней на завершение этого процесса. Служба поддержки свяжется с вами, когда конечная точка (endpoint) будет доступна.
Создание подключения в dbt
После того как служба поддержки dbt завершит настройку, вы сможете создавать новые подключения с использованием PrivateLink.
- Перейдите в Account Settings → Projects → Create new project.
- В разделе Configure your development environment step выберите Add new connection.
- Вы перейдёте на страницу Add new connection. Выберите Redshift.
- В разделе Settings выберите PrivateLink Endpoint.
- Выберите частную конечную точку из раскрывающегося списка (поле имени хоста/учётной записи заполнится автоматически).
- Настройте остальные параметры платформы данных.
- Проверьте подключение и сохраните его.
Устранение неполадок
Если эндпоинт PrivateLink уже создан и настроен в dbt, но подключение по-прежнему не работает, проверьте следующие параметры сетевой конфигурации, чтобы убедиться, что запросы и ответы могут успешно передаваться между dbt и обслуживающим сервисом.
Конфигурация
Начните с конфигурации:
Мониторинг
Чтобы локализовать проблемы с подключением через PrivateLink из dbt, можно использовать несколько источников данных мониторинга для проверки активности запросов. Чтобы в данных мониторинга что-либо появилось, сначала необходимо отправить запросы к конечной точке. Обратитесь в службу поддержки dbt, чтобы узнать, когда проводилась проверка подключения, или запросить новые попытки подключения. Сопоставьте время этих попыток с активностью в следующих источниках данных мониторинга.









