yandex-cloud-deploy-fn v2.0.0
yandex-cloud-deploy-fn
CLI для деплоя функций в Yandex Cloud на Node.js.
Зачем
Отличия от связки serverless framework + yandex-cloud-serverless-plugin:
- ✅ Нет зависимости на yc cli (#13)
 - ✅  Нет лишних сообщений в логах вида 
Serverless: Unknonwn function "xxx" found(#18) - ✅ загрузка кода через Object Storage (для архивов > 3.5 Mb)
 - ✅ Интерактивное выставление тегов
 
- ❌ Пока деплоится только функция. Триггеры, сервисные аккаунты и message queue не создаются
 
Установка
npm i -D yandex-cloud-deploy-fnИспользование
Создайте в корне проекта конфиг deploy.config.js следующего вида:
module.exports = {
  useCliConfig: true,
  functionName: 'test-fn',
  deploy: {
    files: [ 'package*.json', 'dist/**' ],
    handler: 'dist/index.handler',
    runtime: 'nodejs14',
    timeout: 5,
    memory: 128,
    environment: {
      NODE_ENV: 'production'
    },
  },
  // === Для загрузки больших функций через object storage ===
  // storage: {
  //   bucketName: 'upload',
  //   bucketPath: '/',
  //   accessKeyId: process.env.AWS_ACCESS_KEY_ID,
  //   secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
  // },
  // === Для интерактивного выставления тегов ===
  // tags: [
  //   'testing',
  //   { name: 'prod', cmdPre: 'TAG={newVersionTag} npm run test' },
  // ]
};Для деплоя функции запустите:
npx deploy-fnПример вывода:
[test-fn]: Deploying function "test-fn"...
[test-fn]: Creating zip...
[test-fn]: Authorized by: yc-cli
[test-fn]: Sending API request...
[test-fn]: Waiting operation complete...
[test-fn]: Version created: d4e5qq24h0cpqg9rfmi3
[test-fn]: Version size: 20 Kb
[test-fn]: Done (25s).Для интерактивного выставления тегов запустите:
npx deploy-fn-tagПример вывода:
? Select version of "test-fn": (Use arrow keys)
❯ d4e5qq24h0cpqg9rfmi3  $latest
  d4ebrpdvjl50mtccr5pu  prod
  d4eiuu6oc7thuu11v1jo  prod-1,testing
  d4ecqudlemi9f2qijgh6  prod-2
? Select tag: (Use arrow keys)
❯ prod
  testing
  all (prod, testing)
Set tag "testing" to version: d4e5qq24h0cpqg9rfmi3Другие способы авторизации
В примере выше используется авторизация через конфиг yc cli - поле useCliConfig: true.
Возможны и другие способы. Например, через файл авторизованных ключей сервисного аккаунта, от имени которого будете деплоить функцию:
Сгенерите файл
auth-key.json:yc iam key create --service-account-name <service-account-name> -o auth-key.jsonИзмените
deploy.config.js:module.exports = { - useCliConfig: true, + authKeyFile: 'auth-key.json', ...
Подробнее про способы авторизации можно посмотреть в доке по yandex-cloud-lite.
Лицензия
MIT @ Vitaliy Potapov
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago