Serverless scheduled jobs: полные cron-выражения с историей и повторами
Пайплайны с cron-триггером: выражение проверяется при сохранении, каждый прогон — запись в консоли рядом с HTTP-вызовами, повторы настраиваются без внешнего планировщика.
Last updated: 2026-04-20
Answer first
Direct answer
Serverless scheduled jobs: полные cron-выражения с историей и повторами. Полные cron-выражения: `0 9 * * 1-5` работает. Выражение валидируется при сохранении — опечатка выявляется сразу.
When it fits
- Нужны полные cron-выражения
- Важна история прогонов и алерты на ошибки
Tradeoffs
- Cloudwatch Events и IFTTT не дают полной истории и контроля над повторами.
- Без проверки cron-выражения при вводе опечатка запускает задачу не тогда, когда ожидалось — и обнаруживается только в продакшне.
Нагрузка и где ломается
Проблемы с расписаниями вне managed-платформ
- VPS crontab: output routed to root mail nobody reads; no retry on failure
- systemd timers: better reliability, but logs scattered, secrets manual, no history
- Kubernetes CronJob: correct primitives but cluster overhead for small teams
Crontab на VPS теряет историю; ошибка — тихий сбой в 3 ночи. Kubernetes CronJob — сложная настройка ради простой задачи.
Компромиссы
Когда простые планировщики не подходят
Cloudwatch Events и IFTTT не дают полной истории и контроля над повторами.
Без проверки cron-выражения при вводе опечатка запускает задачу не тогда, когда ожидалось — и обнаруживается только в продакшне.
Как помогает Inquir
Что даёт Inquir для scheduled jobs
Полные cron-выражения: `0 9 * * 1-5` работает. Выражение валидируется при сохранении — опечатка выявляется сразу.
История каждого прогона в консоли рядом с HTTP-вызовами. Повторы, таймауты и логи — единые для всех триггеров.
Что получаете
Что входит в managed scheduled jobs
Валидация cron
Синтаксис cron-выражения проверяется при сохранении: следующий запуск показывается до применения.
История прогонов
Каждый запуск — запись с временем, статусом и логами.
Повторы
Политика повторов на уровне пайплайна — для задач, которые иногда падают из-за временных ошибок.
Секреты
Те же переменные окружения, что у HTTP-функций — меняются без редеплоя.
Что делать дальше
Как настроить расписание
Написать функцию-обработчик
Обработчик события scheduled: логика, которую нужно запускать по расписанию.
Создать пайплайн с cron-триггером
В настройках пайплайна выбрать schedule, ввести cron-выражение — сохранить.
Проверить в консоли
После первого срабатывания — история с логами и статусом прогона.
Пример кода
Nightly sync job with watermark
Scheduled handler reads cursor from environment, fetches incremental updates, upserts idempotently, and returns new cursor for the next run.
export async function handler(event) { // event.trigger?.type === 'schedule' when fired by a cronTrigger node const since = process.env.SYNC_CURSOR ?? new Date(Date.now() - 86_400_000).toISOString(); const records = await source.fetchUpdatedSince(since); if (records.length === 0) return { synced: 0, cursor: since }; await destination.upsertBatch(records); // idempotent by record ID const newCursor = records.at(-1)?.updatedAt ?? since; // Store cursor for next run (update env var or external store) return { synced: records.length, cursor: newCursor }; }
Когда подходит
Когда использовать
Когда это уместно
- Нужны полные cron-выражения
- Важна история прогонов и алерты на ошибки
Когда лучше не трогать
- Простая раз-в-час задача без требований к истории — crontab достаточен
FAQ
Вопросы и ответы
Поддерживается секундный cron?
Минимальный интервал — 1 минута, что соответствует стандартному unix cron.
Можно ли запустить вручную?
Да — через UI консоли или HTTP-вызов того же пайплайна без cron-триггера.