Функции (Workers)
Проект Cloudflare Workers на WebShield без переделок — wrangler.jsonc, Durable Objects, D1, KV и cron. Выкатка, миграции D1, импорт KV, возврат данных к моменту, свой домен с защитой WAF.
Функция — это проект Cloudflare Workers,
который работает у нас в том виде, в каком написан: тот же wrangler.jsonc, тот же код,
те же привязки. Запросы к функции проходят ту же защиту, что и запросы к
приложению, — WAF, лимиты, баны и бот-защиту, если вы её включили.
Функция живёт в проекте раздела Услуги → Приложения: при добавлении выберите Функция (Workers). Сейчас это бета-версия.
Что поддерживается
Заголовок раздела «Что поддерживается»- обработчики
fetchиscheduled(cron изtriggers.crons); - Durable Objects вместе с SQLite-хранилищем и будильниками (
alarm); - D1 и KV;
- очереди;
- переменные:
varsиз конфига плюс переменные из кабинета.
Не поддерживаются Containers и Sandbox.
Выкатка
Заголовок раздела «Выкатка»Нужен каталог проекта, в котором лежит wrangler.jsonc или wrangler.json; wrangler.toml
не подойдёт — переведите его в JSON. Если есть package.json, ставим зависимости тем
менеджером, чей lock-файл найдём (npm, pnpm или yarn), и запускаем скрипт build, если он
объявлен. Затем выкатываем по конфигу Wrangler.
webshield apps deploy --project shop --app apiРаботает и архив с компьютера во вкладке Выкатки, и https-ссылка на .tar.gz
(подробнее о способах — в Приложениях). Новая версия начинает
отвечать в течение десяти секунд после того, как выкатка встала в статус Работает.
Переменные. Вкладка Переменные — то, что Worker получает в env поверх vars из
конфига; хранятся зашифрованными, так что сюда же кладите секреты. Ссылки на базы проекта
тоже работают: DATABASE_URL = ${{db.url}}. Переменные входят в выкатку, поэтому после
правки нажмите Выкатить заново: функция пересоберётся из того же архива с новыми
значениями. Из терминала — webshield apps env set … --redeploy.
Откат. Вернуть эту версию у прежней выкатки переключает код за секунды, данные остаются как есть. Прежняя версия вернётся с теми переменными, что были у неё.
Свой домен и журнал
Заголовок раздела «Свой домен и журнал»Имена привязываются вкладкой Имена — так же, как у
приложения. Внутри Worker’а request.url содержит именно ваше
имя, а не наш адрес.
Вкладка Журнал показывает вывод функции за последние 7 дней: console.log и
необработанные исключения обработчиков вместе со стеком. Посетитель при таком исключении
получает ответ 500 без подробностей — текст ошибки и стек видны только вам.
D1 и KV
Заголовок раздела «D1 и KV»Базы D1 и пространства KV объявляются в wrangler.jsonc, как обычно. Снаружи до них
достаёт CLI. Команды запускаются из каталога проекта: им нужны wrangler.jsonc, каталог
migrations и файлы ключей.
webshield apps d1 migrate --app api app-db # применить новые миграции из migrations/webshield apps d1 migrations --app api app-db # какие уже примененыwebshield apps d1 execute --app api app-db --command "SELECT count(*) FROM users"webshield apps d1 execute --app api app-db --file seed.sqlwebshield apps kv import --app api CACHE seed/keys.json # формат bulk у Wranglerwebshield apps kv delete-keys --app api CACHE old-keys.jsonapp-db — это database_name из wrangler.jsonc, CACHE — id пространства KV. Файл
ключей должен лежать внутри каталога и попадать в архив (не исключаться .gitignore).
Функция должна быть уже выкачена. Запрос SQL — до 100 КБ: большие наборы данных
оформляйте миграциями.
История операций и их вывод — во вкладке Данные.
Возврат данных к моменту
Заголовок раздела «Возврат данных к моменту»Данные функции — Durable Objects, D1, KV, очереди и будильники — можно вернуть к любому моменту за последние 7 дней. Код при этом остаётся текущим.
Вкладка Данные → Вернуть данные к моменту, или из терминала:
webshield apps window --app api # с какого и по какой моментwebshield apps restore --app api --time 2026-10-21T15:00:00+03:00Пока идёт восстановление, функция остановлена и отвечает 503. История сохраняется: если вернулись не туда, верните данные к моменту перед восстановлением.
Объём данных
Заголовок раздела «Объём данных»На данные одной функции отведено 2 ГБ. В объём входят и прежние версии данных за 7 дней: на них держится возврат к моменту. Сколько занято, видно во вкладке Данные; на 80% придёт письмо.
Когда место кончается, функция перестаёт отвечать на запросы, даже не трогающие данные, и сама из этого не выйдет. Не доводите до этого — удаляйте ненужное заранее, место освобождается, когда версии удалённого выходят из окна. Если объёма не хватает, напишите в поддержку.
С Всегда запущено экземпляров = 0 функция засыпает без запросов. Будильники Durable Objects и cron мы отслеживаем сами и будим функцию к сроку, поэтому расписание выполняется и у спящей функции. Первый ответ после сна приходит с задержкой; если она мешает, поставьте 1.
Как у приложений: CPU и память — пока функция работает, данные — по цене объектного хранилища, включая прежние версии за 7 дней. Спящая функция платит только за данные.