Подключение к экземпляру сервиса
Подключиться к экземпляру сервиса Cloud Trino можно только по TLS с помощью веб-интерфейса и сторонних клиентов, например DBeaver.
-
Перейдите в раздел Data Platform → Экземпляры сервисов.
-
Нажмите на название экземпляра сервиса.
-
На странице экземпляра перейдите на вкладку Общая информация.
-
Перейдите по ссылке, указанной в поле Trino Admin UI / CLI Client.
-
В зависимости от браузера:
- Google Chrome: нажмите Дополнительные настройки → Перейти на сайт.
- Mozilla Firefox: нажмите Дополнительно → Перейти на <URL_АДРЕС>.
- Яндекс Браузер: нажмите Подробнее → Сделать исключение для этого сайта.
- Safari: нажмите Подробнее → посетить этот сайт.
-
Введите логин и пароль учетной записи Cloud Trino.
-
Нажмите Log In.
-
Перейдите в раздел Data Platform → Экземпляры сервисов.
-
Нажмите на название экземпляра сервиса.
-
На странице экземпляра перейдите на вкладку Общая информация.
-
Скопируйте URL-адрес, указанный в поле Trino JDBC Connection string.
-
Откройте DBeaver.
-
Cоздайте новое подключение к Trino:
-
Слева в окне Database Navigator нажмите в пустое пространство правой кнопкой мыши и выберите Create → Connection.
-
В открывшемся окне выберите сервис
Trino. -
В поле Connect by выберите
URL. -
Вставьте скопированный URL-адрес в поле JDBC URL.
-
(Только для Standalone в VK Private Cloud) Укажите логин учетной записи Cloud Trino в поле Username.
-
(Только для Standalone в VK Private Cloud) Укажите пароль учетной записи Cloud Trino в поле Password.
-
(Только для Standalone) Добавьте в URL-адрес в поле JDBC URL параметр
externalAuthentication=true. Пример:jdbc:trino://<АДРЕС_TRINO>:<ПОРТ>?SSL=true&SSLVerification=NONE&externalAuthentication=trueПри подключении DBeaver перенаправит вас в систему CIAM для аутентификации.
-
Нажмите кнопку Finish.
Новое подключение отобразится в окне Database Navigator.
-
-
Нажмите правой кнопкой мыши на созданное подключение и выберите Connect.
-
Если DBeaver предложит загрузить драйвер для работы с Trino, загрузите его.
В Standalone управление идентификацией и доступом выполняется через систему CIAM. Подробнее — в официальной документации CIAM.
Для подключения к Cloud Trino из скрипта или CLI-клиента создайте учетную запись сервисного пользователя и получите CIAM-токен.
-
Перейдите в раздел Data Platform → Экземпляры сервисов.
-
Нажмите на имя нужного экземпляра.
-
Перейдите на вкладку Сервисные пользователи.
-
Нажмите Добавить сервисного пользователя.
-
Нажмите Сгенерировать, чтобы сгенерировать секрет сервисного пользователя. Идентификатор сервисного пользователя создается автоматически.
-
Нажмите Сохранить изменения.
Для подключения к Cloud Trino без логина и пароля получите CIAM-токен. Для этого отправьте запрос POST к эндпоинту получения токена CIAM:
ACCESS_TOKEN=$(curl -k -X POST ${<LK_UI_URL>}/iam/hydra/oauth2/token \-u "${<CLIENT_ID>}:${<CLIENT_SECRET>}" \-d "grant_type=client_credentials" \-d "scope=openid" \-d "audience=${<TRINO_APP_ID>}" | jq -r .access_token)
Здесь:
<LK_UI_URL>— URL веб-интерфейса VK Data Platform из адресной строки браузера.<CLIENT_ID>— ID сервисного пользователя.<CLIENT_SECRET>— секрет сервисного пользователя.<TRINO_APP_ID>— ID экземпляра сервиса. Отображается на вкладке Общая информация в поле ID экземпляра.
Выполните команду, указав значения переменных:
trino --debug \--user=${<CLIENT_ID>} \--server=${<TRINO_URL>} \--access-token=${<ACCESS_TOKEN>} \--insecure \--execute="show catalogs;"
Здесь:
<CLIENT_ID>— ID сервисного пользователя.<TRINO_URL>— адрес экземпляра Cloud Trino.<ACCESS_TOKEN>— CIAM-токен, полученный ранее.
Создайте Python-файл и скопируйте в него скрипт, указав значения переменных:
import jsonfrom urllib.parse import quoteimport requestsfrom trino.auth import JWTAuthenticationfrom trino.dbapi import connectoauth2_token_url = f"{<LK_UI_URL>}/iam/hydra/oauth2/token"response = requests.post(oauth2_token_url,auth=(<CLIENT_ID>, quote(<CLIENT_SECRET>)),data={"grant_type": "client_credentials","scope": "openid","audience": <TRINO_APP_ID>,},verify=False,timeout=10,)access_token = json.loads(response.text)["access_token"]conn = connect(host=<TRINO_URL>,port=<TRINO_PORT>,http_scheme="https",auth=JWTAuthentication(access_token),verify=False,)cur = conn.cursor()cur.execute("SHOW catalogs")rows = cur.fetchall()for row in rows:print(row)
Здесь:
<LK_UI_URL>— URL веб-интерфейса VK Data Platform из адресной строки браузера.<CLIENT_ID>— ID сервисного пользователя.<CLIENT_SECRET>— секрет сервисного пользователя.<TRINO_APP_ID>— ID экземпляра сервиса. Отображается на вкладке Общая информация в поле ID экземпляра.<TRINO_URL>— адрес экземпляра Cloud Trino.<TRINO_PORT>— порт экземпляра Cloud Trino.
Если сервисный пользователь больше не нужен, удалите его, чтобы отозвать доступ к экземпляру сервиса.
- Перейдите в раздел Data Platform → Экземпляры сервисов.
- Нажмите на имя нужного экземпляра.
- Перейдите на вкладку Сервисные пользователи.
- Нажмите ••• для нужного сервисного пользователя и выберите пункт Удалить.
- Подтвердите удаление.