Таймер, который вызывает функцию Cloud Functions
Таймер — это триггер, который запускает функцию Cloud Functions по расписанию. Расписание задается в виде cron-выражения. Время в cron-выражении указывается по UTC+0
Таймеру необходим сервисный аккаунт для вызова функции.
О том, как создать таймер, читайте в инструкции Создать таймер, который вызывает функцию Cloud Functions.
Формат 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 и выше.
- Для работы таймера сервисному аккаунту необходима роль
functions.functionInvoker
на каталог с функцией, которую вызывает таймер.
Подробнее об управлении доступом.
Формат сообщения от таймера
После того как триггер сработает, он отправит в функцию следующее сообщение:
{
"messages": [
{
"event_metadata": {
"event_id": "a1s41g2n5g0o********",
"event_type": "yandex.cloud.events.serverless.triggers.TimerMessage",
"created_at": "2019-12-04T12:05:14.227761Z",
"cloud_id": "b1gvlrnlei4l********",
"folder_id": "b1g88tflru0e********"
},
"details": {
"trigger_id": "a1sfe084v4se********",
"payload": "payload-message"
}
}
]
}