Создание таймера, который запускает функцию
Создайте таймер, который будет вызывать функцию Cloud Functions каждую минуту.
Перед началом работы
- Создайте функцию, которую хотите вызывать по таймеру. Например, можно создать любую функцию из списка.
- Создайте сервисный аккаунт, от имени которого будет вызываться функция и назначьте ему роль
functions.functionInvoker
.
Создайте таймер
Примечание
Триггер начинает работать в течение 5 минут после создания.
-
В консоли управления
перейдите в каталог, в котором хотите создать таймер. -
Выберите сервис Cloud Functions.
-
На панели слева выберите
Триггеры. -
Нажмите кнопку Создать триггер.
-
В блоке Базовые параметры:
- Введите имя триггера —
timer
. - В поле Тип выберите
Таймер
. - В поле Запускаемый ресурс выберите
Функция
.
- Введите имя триггера —
-
В блоке Настройки таймера введите
* * ? * * *
или выберитеКаждую минуту
. -
В блоке Настройки функции выберите свою функцию и укажите:
- Тег версии функции —
$latest
. - Сервисный аккаунт, который создали ранее.
- Тег версии функции —
-
Нажмите кнопку Создать триггер.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы создать таймер, который вызывает функцию каждую минуту, выполните команду:
yc serverless trigger create timer \
--name timer \
--cron-expression '* * ? * * *' \
--invoke-function-id <идентификатор_функции> \
--invoke-function-service-account-id <идентификатор_сервисного_аккаунта>
Где:
--name
— имя таймера.--cron-expression
— расписание вызова функции в формате cron-выражения.--invoke-function-id
— идентификатор функции.--invoke-function-service-account-id
— идентификатор сервисного аккаунта.
Результат:
id: a1s2aanidtep********
folder_id: b1gtmgn9gbvm********
created_at: "2023-03-03T12:18:15.707328472Z"
name: timer
rule:
timer:
cron_expression: '* * ? * * *'
invoke_function_with_retry:
function_id: d4eaic3se926********
function_tag: $latest
service_account_id: ajek1us5r79c********
status: ACTIVE
Создать таймер можно с помощью метода API create.
Проверьте результат
Чтобы проверить, что таймер работает корректно, посмотрите логи функции. В них должно отображаться, что функция вызывается каждую минуту.
-
В консоли управления
перейдите в каталог, в котором находится функция. -
Выберите сервис Cloud Functions.
-
Нажмите на функцию, журнал выполнения которой хотите посмотреть.
-
В открывшемся окне перейдите в раздел Логи и укажите период, за который хотите посмотреть логи. По умолчанию задан период 1 час.
Чтобы посмотреть логи функции, выполните команду:
yc serverless function logs <идентификатор_функции>
Результат:
2023-03-03 12:44:12 INFO START RequestID: 5906fbf3-7ff5-4fe4-a0b2-b35c******** Version: d4efs25vm37e********
2023-03-03 12:44:12 INFO END RequestID: 5906fbf3-7ff5-4fe4-a0b2-b35c********
2023-03-03 12:44:12 INFO REPORT RequestID: 5906fbf3-7ff5-4fe4-a0b2-b35c******** Duration: 8.951 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 48 MB Queuing Duration: 0.066 ms Function Init Duration: 5.892 ms
2023-03-03 12:45:12 INFO START RequestID: e806a5c4-e06a-4a6f-b468-386d******** Version: d4efs25vm37e********
2023-03-03 12:45:12 INFO END RequestID: e806a5c4-e06a-4a6f-b468-386d********
2023-03-03 12:45:12 INFO REPORT RequestID: e806a5c4-e06a-4a6f-b468-386d******** Duration: 10.266 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 48 MB Queuing Duration: 0.054 ms Function Init Duration: 7.023 ms