Таймер

Таймер — это триггер, который запускает функцию по расписанию. Расписание задается в виде сron-выражения. Время в cron-выражении указывается по UTC.

Формат cron-выражения

Порядок полей в cron-выражении: Minutes Hours Day-of-month Month Day-of-week Year.

Возможные значения полей

Примечание

Служебные символы, а также имена месяцев и дней недели не чувствительны к регистру: MON эквивалентно mon.

Название
поля
Обязательное
поле
Допустимые
значения
Поддержка
специальных
символов
Minutes (минуты) Да 0-59 ,, -, *, /
Hours (часы) Да 0-23 ,, -, *, /
Day of month (день месяца) Да 1-31 ,, -, *, ?, /, L, W
Month (месяц) Да 1-12,
JAN-DEC
,, -, *, /
Day of week (день недели) Да 1-7,
SUN-SAT
,, -, *, ?, /, L, #
Year (год) Нет пустое, 1970-2099 ,, -, *, /

Специальные символы

Для cron-выражения доступны следующие специальные символы:

  • * — выбор всех значений в поле.

    Символ * в поле Minutes: триггер запускается каждую минуту.

  • ? — выбор любого значения поля. Поля Day of month и Day of week не могут быть заполнены одновременно. Если вы указали значение в одном из этих полей, укажите символ ? в другом.

    Значение 10 в поле Day of month и символ ? в поле Day of week: триггер запускается каждый 10-ый день месяца.

  • - — выбор диапазона значений.

    Диапазон 10-12 в поле Hours: триггер запускается в 10, 11 и 12 часов.

  • , — выбор нескольких значений.

    Значения MON,WED,FRI в поле Day of week: триггер запускается в понедельник (Monday), среду (Wednesday) и пятницу (Friday).

  • / — инкрементальное увеличение значения.

    Значения 0/15 в поле Minutes: триггер запускается в 0, 15, 30 и 45 минут.

  • L — символ имеет разные значения для двух полей, в которых разрешен:

    • Для поля Day of month значит последний день месяца.
    • Для поля Day of week значит последний день недели, то есть 7 (суббота, SAT).

    Значение L в поле Day of month: триггер запускается 31 числа для января, 28 числа для февраля и т. д.

  • W — выбор ближайшего буднего дня к указанной дате.

    Значение 15W в поле Day of month: триггер запускается в ближайший будний день к 15 числу месяца. Если 15 число это суббота, триггер будет запускаться 14 числа в пятницу.

    Примечание

    Символы L и W в поле Day of month также объединяются в сочетание LW: триггер запускается в последний будний день месяца.

  • # — выбор N-ного дня месяца.

    Значение 6#3 в поле Day of week: триггер запускается в третью пятницу месяца (6 — пятница, 3 — третья пятница месяца).

Примеры cron-выражений

Cron-выражение Описание
* * * * ? * Триггер запускается каждую минуту.
0 * ? * * * Триггер запускается каждый час.
15 10 ? * * * Триггер запускается каждый день в 10:15.

Роли, необходимые для корректной работы таймера

  • Для создания таймера вам необходимо разрешение на сервисный аккаунт, от имени которого таймер выполняет операцию. Это разрешение входит в роли iam.serviceAccounts.user, editor и выше.
  • Для работы таймера сервисному аккаунту необходима роль serverless.functions.invoker на каталог с функцией, которую таймер вызывает.

Подробнее об управлении доступом.

Формат сообщения от таймера

После того, как триггер сработает, он отправит в функцию следующее сообщение:

{
  "messages": [
    {
      "event_metadata": {
        "event_id": "a1s41g2n5g0o5p778k4r",
        "event_type": "yandex.cloud.events.serverless.triggers.TimerMessage",
        "created_at": "2019-12-04T12:05:14.227761Z",
        "cloud_id": "b1gvlrnlei4l5idm9cbj",
        "folder_id": "b1g88tflru0ek1omtsu0"
      },
      "details": {
        "trigger_id": "a1sfe084v4se4morbu2i"
      }
    }
  ]
}