yandex-cloud-lite

Yandex Cloud SDK lite

Usage no npm install needed!

<script type="module">
  import yandexCloudLite from 'https://cdn.skypack.dev/yandex-cloud-lite';
</script>

README

yandex-cloud-lite

Минимальный 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: ''
}
*/

Создание сессии

Создать сессию можно одним из следующих способов:

  1. Используя готовый iamToken (например в cloud function):

    const session = new Session({ iamToken: '<iam_token>' });
    
  2. Используя файл авторизованных ключей (для сервисного аккаунта):

    const session = new Session({ authKeyFile: '.auth-key.json' });
    

    Создать такой файл можно командой:

    yc iam key create --service-account-name <service-account-name> -o .auth-key.json
    
  3. Используя конфиг yc cli:

    const session = new Session({ useCliConfig: true });
    
  4. Используя oauth token своего аккаунта на Яндексе:

    const session = new Session({ oauthToken: '<your_oauth_token>' });
    

Лицензия

MIT @ Vitaliy Potapov