Подключение к кластеру YTsaurus
Примечание
Сервис находится на стадии Preview.
К кластеру YTsaurus можно подключиться:
- С виртуальных машин Yandex Cloud.
- Через интернет по HTTPS.
Примеры строк подключения
Примеры для Linux проверялись в следующем окружении:
- Виртуальная машина в Yandex Cloud с Ubuntu 20.04 LTS.
- Bash:
5.0.16. - Python:
3.8.2; pip3:20.0.2. - Go:
1.24.8.
Bash
Перед подключением:
-
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
-
Установите YTsaurus CLI по инструкции
. -
Установите зависимости:
sudo apt update && sudo apt install -y python3 python3-pip && \ pip3 install ytsaurus-client-yc-auth
-
Получите конфигурационный файл доступа с помощью команды YC CLI:
yc managed-ytsaurus cluster get-configuration <имя_или_идентификатор_кластера> --privateПример конфигурационного файла
{ auth_class = { module_name = "yc_managed_ytsaurus_auth"; class_name = "IamTokenAuth"; }; proxy = { url = "http://hp.<идентификатор_кластера_YTsaurus>.ytsaurus.mdb.yandexcloud.net:32100"; network_name = "external"; http_proxy_role = "default"; } }Конфигурационный файл будет сохранен по пути
~/.yt/config.Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Выполните запрос списка содержимого корневого каталога:
yt list /
-
Получите конфигурационный файл доступа с помощью команды YC CLI:
yc managed-ytsaurus cluster get-configuration <имя_или_идентификатор_кластера>Пример конфигурационного файла
{ auth_class = { module_name = "yc_managed_ytsaurus_auth"; class_name = "IamTokenAuth"; }; proxy = { url = "https://<идентификатор_кластера_YTsaurus>.proxy.ytsaurus.yandexcloud.net"; enable_proxy_discovery = %false; } }Конфигурационный файл будет сохранен по пути
~/.yt/config.Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Выполните запрос списка содержимого корневого каталога:
yt list /
Go
В примере используется авторизация при помощи OAuth-токена.
Чтобы подключиться к кластеру:
-
Установите зависимости:
sudo apt update && sudo apt install --yes golang git && \ go mod init example && go get go.ytsaurus.tech/yt/go -
Выпустите OAuth-токен.
-
Подготовьте пример файла для подключения:
connect.go
package main import ( "context" "flag" "fmt" "time" ycsdk "github.com/yandex-cloud/go-sdk" ytsdk "go.ytsaurus.tech/yt/go/yt" ythttpsdk "go.ytsaurus.tech/yt/go/yt/ythttp" ) func main() { clusterID := flag.String("id", "", "YTsaurus cluster ID") token := flag.String("token", "", "OAuth token") flag.Parse() ctx := context.Background() sdk, err := ycsdk.Build(ctx, ycsdk.Config{ Credentials: ycsdk.OAuthToken(*token), }) if err != nil { panic(err) } iamTokenProvider, err := IamTokenProvider(ctx, sdk) if err != nil { panic(err) } timeout := 10 * time.Second client, err := ythttpsdk.NewClient(&ytsdk.Config{ Proxy: fmt.Sprintf("https://%s.proxy.ytsaurus.yandexcloud.net", *clusterID), LightRequestTimeout: &timeout, DisableProxyDiscovery: true, CredentialsProviderFn: iamTokenProvider, }) if err != nil { panic(err) } res, err := client.WhoAmI(context.Background(), nil) if err != nil { panic(err) } fmt.Printf("Logged in as %s\n", res.Login) } func IamTokenProvider(ctx context.Context, sdk *ycsdk.SDK) (ytsdk.CredentialsProviderFn, error) { var now = time.Now tokenMiddleware := ycsdk.NewIAMTokenMiddleware(sdk, now) return func(ctx context.Context) (ytsdk.Credentials, error) { currentToken, err := tokenMiddleware.GetIAMToken(ctx, false) if err != nil { return nil, err } return &ytsdk.BearerCredentials{Token: currentToken}, nil }, nil } -
Выполните команду:
go run connect.go -id <идентификатор_кластера_YTsaurus> -token <OAuth_токен_пользователя>Идентификатор кластера можно запросить со списком кластеров в каталоге.
Python
Перед подключением:
-
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
-
Установите YTsaurus CLI по инструкции
. -
Установите зависимости:
sudo apt update && sudo apt install -y python3 python3-pip && \ pip3 install ytsaurus-client-yc-auth
-
Пример кода:
connect.pyimport yt.wrapper as yt from yc_managed_ytsaurus_auth import with_iam_token_auth client = yt.YtClient( proxy="http://hp.<идентификатор_кластера_YTsaurus>.ytsaurus.mdb.yandexcloud.net:32100", config=with_iam_token_auth( config={"proxy": {"network_name": "external", "http_proxy_role": "default"}} ), ) client.list("/") -
Подключение:
python3 connect.py
-
Пример кода:
connect.pyimport yt.wrapper as yt from yc_managed_ytsaurus_auth import with_iam_token_auth client = yt.YtClient( proxy="https://<идентификатор_кластера_YTsaurus>.proxy.ytsaurus.yandexcloud.net", config=with_iam_token_auth(config={"proxy": {"enable_proxy_discovery": False}}), ) client.list("/") -
Подключение:
python3 connect.py