Минимальный Node.js клиент для доступа к API сервисов Yandex Cloud по GRPC.
Отличия от официального клиента nodejs-sdk:
✅ можно работать с любыми сервисами, как только для них появляются proto-файлы. Например, API Gateway (#25) и Cloud logging (#34)
✅ вместо устаревшего пакета grpc используется @grpc/grpc-js (см. #18)
✅ для генерации js/ts вместо protobufjs используется google-protobuf. Обе либы не без изъянов, но есть мнение, что protobufjs умирает (хотя в комментах не все с этим согласны)
✅ нет зависимости от aws-sdk (см. #30)
npm i yandex-cloud-lite
import { Session } from 'yandex-cloud-lite';
import { FunctionServiceClient } from 'yandex-cloud-lite/generated/yandex/cloud/serverless/functions/v1/function_service_grpc_pb';
listFunctions();
async function listFunctions() {
const session = new Session({ authKeyFile: '.auth-key.json' });
const client = session.createClient(FunctionServiceClient);
const res = await client.list({ folderId: '<your_folder_id>' });
console.log(res.toObject());
}
/*
OUTPUT:
{
functionsList: [
{
id: 'xxx',
folderId: 'yyy',
createdAt: [Object],
name: 'test-fn',
description: 'Test function',
labelsMap: [],
logGroupId: 'zzz',
httpInvokeUrl: 'https://functions.yandexcloud.net/xxx',
status: 2
},
...
],
nextPageToken: ''
}
*/
Создать сессию можно одним из следующих способов:
Используя готовый iamToken (например в cloud function):
const session = new Session({ iamToken: '<iam_token>' });
Используя файл авторизованных ключей (для сервисного аккаунта):
const session = new Session({ authKeyFile: '.auth-key.json' });
Создать такой файл можно командой:
yc iam key create --service-account-name <service-account-name> -o .auth-key.json
Используя конфиг yc cli:
const session = new Session({ useCliConfig: true });
Используя oauth token своего аккаунта на Яндексе:
const session = new Session({ oauthToken: '<your_oauth_token>' });
MIT @ Vitaliy Potapov