Создать триггер для бюджетов, который вызывает функцию Cloud Functions
Создайте триггер для бюджетов, который будет вызывать функцию Cloud Functions при превышении пороговых значений.
Перед началом работы
Для создания триггера вам понадобятся:
-
Функция, которую триггер будет вызывать. Если у вас нет функции:
-
(Опционально) Очередь Dead Letter Queue, куда будут перенаправляться сообщения, которые не смогла обработать функция. Если у вас нет очереди, создайте ее.
-
Сервисные аккаунты с правами на вызов функции и (опционально) запись в очередь Dead Letter Queue. Вы можете использовать один и тот же сервисный аккаунт или разные. Если у вас нет сервисного аккаунта, создайте его.
- Бюджет, при превышении порога которого триггер будет запускаться. Если у вас нет бюджета, создайте его.
Создать триггер
Примечание
Триггер начинает работать в течение 5 минут после создания.
-
В консоли управления
перейдите в каталог, в котором хотите создать триггер. -
Выберите сервис Cloud Functions.
-
На панели слева выберите
Триггеры. -
Нажмите кнопку Создать триггер.
-
В блоке Базовые параметры:
- Введите имя и описание триггера.
- В поле Тип выберите Бюджет.
- В поле Запускаемый ресурс выберите Функция.
-
В блоке Настройки бюджета выберите платежный аккаунт и бюджет. Можно выбрать Все бюджеты.
-
В блоке Настройки функции выберите функцию и укажите:
- Тег версии функции.
- Сервисный аккаунт, от имени которого будет вызываться функция.
-
(Опционально) В блоке Настройки повторных запросов:
- В поле Интервал укажите время, через которое будет сделан повторный вызов функции, если текущий завершился неуспешно. Допустимые значения — от 10 до 60 секунд, значение по умолчанию — 10 секунд.
- В поле Количество попыток укажите количество повторных вызовов функции, которые будут сделаны, прежде чем триггер отправит сообщение в Dead Letter Queue. Допустимые значения — от 1 до 5, значение по умолчанию — 1.
-
(Опционально) В блоке Настройки Dead Letter Queue выберите очередь Dead Letter Queue и сервисный аккаунт с правами на запись в нее.
-
Нажмите кнопку Создать триггер.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы создать триггер, который вызывает функцию, выполните команду:
yc serverless trigger create billing-budget \
--name <имя_триггера> \
--billing-account-id <идентификатор_платежного_аккаунта> \
--budget-id <идентификатор_бюджета> \
--invoke-function-id <идентификатор_функции> \
--invoke-function-service-account-id <идентификатор_сервисного_аккаунта> \
--retry-attempts 1 \
--retry-interval 10s \
--dlq-queue-id <идентификатор_очереди_Dead_Letter_Queue> \
--dlq-service-account-id <идентификатор_сервисного_аккаунта>
Где:
--name
— имя триггера.--billing-account-id
— идентификатор платежного аккаунта.--budget-id
— идентификатор бюджета.
--invoke-function-id
— идентификатор функции.--invoke-function-service-account-id
— идентификатор сервисного аккаунта с правами на вызов функции.--retry-attempts
— количество повторных вызовов, которые будут сделаны, прежде чем триггер отправит сообщение в Dead Letter Queue. Необязательный параметр. Допустимые значения — от 1 до 5, значение по умолчанию — 1.--retry-interval
— время, через которое будет сделан повторный вызов функции, если текущий завершился неуспешно. Необязательный параметр. Допустимые значения — от 10 до 60 секунд, значение по умолчанию — 10 секунд.--dlq-queue-id
— идентификатор очереди Dead Letter Queue. Необязательный параметр.--dlq-service-account-id
— идентификатор сервисного аккаунта с правами на запись в очередь Dead Letter Queue. Необязательный параметр.
Результат:
id: a1sfe084v4**********
folder_id: b1g88tflru**********
created_at: "2019-12-04T08:45:31.131391Z"
name: budget-trigger
rule:
billing-budget:
billing-account-id: dn2char50j**********
budget-id: dn2jnshmdlc1********
invoke_function:
function_id: d4eofc7n0m03********
function_tag: $latest
service_account_id: aje3932acd0c********
retry_settings:
retry_attempts: "1"
interval: 10s
dead_letter_queue:
queue-id: yrn:yc:ymq:ru-central1:aoek49ghmknn********:dlq
service-account-id: aje3932acd0c********
status: ACTIVE
Чтобы создать триггер для бюджетов, воспользуйтесь методом REST API create для ресурса Trigger или вызовом gRPC API TriggerService/Create.
Проверить результат
Проверьте, что триггер работает корректно. Для этого посмотрите логи функции, в них отображается информация о вызовах.