Рубрики
Uncategorized

Exoframe v5.0 — упрощение развертываний функции JS

Exoframe — это самообъективный инструмент, который позволяет простым развертыванию одной команды, используя Docker. Если у вас нев … Теги с DevOps, Node, JavaScript, Docker.

Exoframe Является ли самосовестным инструментом, который позволяет простым развертываниям в одно командах, используя Docker. Если вы никогда не слышали об этом, вы можете прочитать больше здесь или увидеть это в действии здесь Отказ

И сегодня я рад выпустить Exoframe v5.0 Это добавляет поддержку простых развертываний функций JavaScript в одной команде. В настоящее время Exoframe поддерживает 4 типа функций JavaScript:

  • Функции http — ваш типичный http-обработчик запроса
  • Рабочие функции — все, что нужно бежать на заднем плане (например, боты, повторные задачи и т. Д.)
  • Функции триггера — ваши собственные триггеры, которые могут вызывать пользовательские функции
  • Пользовательские функции — обработчики для ваших пользовательских триггеров

Вот быстрый пример прохождения, которые демонстрируют создание каждого типа функций.

Создание функции HTTP

Во-первых, давайте напишем саму функцию. Exoframe будет требуется Весь функциональная папка, поэтому обязательно позвоните в ваш файл index.js или включить package.json это указывает на ваш основной файл. В этом случае давайте Нажмите index.js и напишите следующий код в нем:

// index.js
module.exports = async (event, context) => {
  // use context.log to provide logs to exoframe
  // those logs can be then accessed from exoframe CLI
  context.log('test log');
  context.log('other log');

  // you can just return a value
  return `hello world`;

  // alternatively you can use reply prop
  // to directly access Fastify reply object
  context.reply.code(200).send('hello world!');
  // make sure to return false-y value if you do this
  // so exoframe doesn't try to send the response second time
  return false;
};

Обратите внимание на использование context.log для регистрации. Это позволит вам получить журналы из вашей функции, используя Exoframe журналы вашей функции? команда.

Далее нам нужно создать новую конфигурацию Exoframe для вашей функции. Для этого просто выполнить:

$ exoframe init -f

Это будет генерировать конфигурацию, которая выглядит так:

{
  "name": "test-function",
  "function": true
}

По умолчанию Exoframe рассматривает функции, чтобы быть функциями HTTP и наложит их в /$ (konfig.name} — Итак, /Тестовая функция в нашем случае. Это может быть изменено путем редактирования конфигурации, чтобы включить Маршрут Собственность, например:

{
  "name": "test-function",
  "function": {
    "route": "test"
  }
}

Теперь вы можете развернуть свою функцию, используя Exoframe, просто работаю Exoframe Deploy Действительно

Создание рабочей функции

Еще раз, давайте начнем с самой функции. Давайте Нажмите index.js и напишите следующий код в нем:

// index.js
module.exports = async (_, context) => {
  // use context.log to log stuff, just as in HTTP function
  context.log('Worker started.');
  // worker can execute any long-running task you want
  let counter = 0;
  setInterval(() => {
    context.log(`Worker: ${counter++}`);
  }, 1000);
};

После этого мы хотим генерировать конфигурацию Exoframe таким же образом, как для функции HTTP, но тогда нам нужно будет изменить его, чтобы включить новый Тип Собственность, как так:

{
  "name": "test-worker",
  "function": {
    "type": "worker"
  }
}

Это скажет exoframe оно должно начать текущую функцию в отдельном Рабочая нить . И теперь ваша рабочая функция готова к развертыванию!

Создание функции триггера

И снова давайте начнем с самой функции. Давайте Нажмите index.js и напишите следующий код в нем:

module.exports = async (dispatchEvent, context) => {
  // log
  context.log('Trigger started.');

  // in this case we trigger all subscribed functions every 1s
  const interval = setInterval(() => {
    context.log(`Triggering!`);
    // dispatching new events to all function with data
    dispatchEvent({data: 'hello world!'});
  }, 1000);

  // trigger function should return a cleanup function
  return () => {
    clearInterval(interval);
  };
};

Обратите внимание, что ваш триггер должен вернуть функцию очистки, что, ну, хорошо, делает очистку после удаления функции с вашего сервера.

После этого вам нужно будет генерировать файл конфигурации и редактировать его, чтобы включить Тип Собственность набор на триггер , вот так:

{
  "name": "test-trigger",
  "function": {
    "type": "trigger"
  }
}

Вот и все, ваш триггер готов быть развернутым!

Создание функции пользовательских обработчиков

Наконец, давайте посмотрим, как вы можете создавать пользовательские обработчики для ваших триггеров. Давайте напишем, что index.js снова:

module.exports = async (event, context) => {
  // Will get custom data from trigger above, so logging will say:
  // Custom function triggered: {"data": "hello world!"}
  context.log(`Custom function triggered: ${JSON.stringify(event.data)}`);
};

Теперь нам нужно сказать exoframe, что наша текущая функция должна реагировать на наш пользовательский триггер. Это делается с помощью Тип Свойство и присвоение значения, равное названию нашего пользовательского триггера, вроде:

{
  "name": "test-triggered-fn",
  "function": {
    "type": "test-trigger"
  }
}

И теперь вы можете развернуть ваш пользовательский обработчик!

Вот и все!

Это охватывает все основы в отношении работы с функциями в Exoframe. Вы можете найти более подробную информацию в Exoframe Docs Отказ

Попробуйте это И дайте мне знать, что вы думаете!

Оригинал: «https://dev.to/yamalight/exoframe-v5-0-simplifying-js-function-deployments-46l7»