Устранение ошибки Unauthenticated
Описание проблемы
Попытка установить доступ к Managed Service for YDB с локальной машины завершается ошибкой Unauthenticated.
Решение
Можно авторизоваться с помощью IAM-токена или токена сервисного аккаунта. Примеры кода приведены здесь
Пример работы с YDB Python SDK
- Создайте каталог, например
ydb, и перейдите в него через PowerShell или Bash:cd ydb. Далее команды в этом терминале нужно будет выполнять в этой папке. - Создайте авторизованный ключ для сервисного аккаунта:
yc iam key create --service-account-id <id_СА> --output token.json. Ключtoken.jsonбудет создан в каталогеydb. - Выполните проверку работоспособности ключа:
ydb --endpoint grpcs://ydb.serverless.yandexcloud.net:2135 --database /kz1/b1gb4.../etn0fu... --sa-key-file token.json discovery whoami. Должен получиться ответ:User SID: ajei6s...@as— это значит, что соединение работает. - Клонируйте пример из GitHub:
git clone https://github.com/ydb-platform/ydb-python-sdk.git. Он сохранится в текущем каталогеydbдля удобства. - Установите библиотеку:
python -m pip install iso8601. - Добавьте в переменную
YDB_SERVICE_ACCOUNT_KEY_FILE_CREDENTIALSокружения расположение этого файла:- Linux:
export YDB_SERVICE_ACCOUNT_KEY_FILE_CREDENTIALS=~/ydb/token.json; - Microsoft Windows®:
$YDB_SERVICE_ACCOUNT_KEY_FILE_CREDENTIALS="C:\Users\<user>\ydb\token.json".
- Linux:
- Выполните скрипт:
python ydb-python-sdk/examples/basic_example_v1/ -e grpcs://ydb.serverless.yandexcloud.net:2135 -d /kz1/b1gb4.../etn0fu....