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»