Triggers in Cloud Functions. Overview
A trigger is a condition which, when met, automatically invokes a Cloud Functions function.
A single trigger can invoke several Cloud Functions functions and Serverless Containers containers at the same time and send messages to WebSocket connections of one or more Yandex API Gateway API gateways.
Triggers allow you to automate your work with other Yandex Cloud services, such as Yandex Object Storage, Yandex Message Queue, and Yandex Container Registry.
Note
The trigger is initiated within five minutes after it is created.
The following types of triggers are available in Cloud Functions:
- Timer
- Trigger for Message Queue
- Trigger for Object Storage
- Trigger for Container Registry
- Trigger for Cloud Logging
- Trigger for Yandex IoT Core
- Trigger for budgets
- Trigger for Data Streams
- Email trigger
- Trigger for Telegram
Each trigger type has its own conditions. For example, a trigger for Object Storage may fire when an object is created or updated. You can set some conditions in the service object settings, e.g., notification thresholds in the budget settings would act as trigger conditions for budgets.
Specifics of functions invoked by triggers
Triggers call functions based on preset quotas and limits.
When a function is called by a trigger, the following specifics apply:
- Functions are always called by triggers with the
?integration=rawquery string parameter. For more on function calls, see Invoking a function in Cloud Functions. - Before the trigger delivers messages to a function, it changes their format. Each trigger type uses a message format of its own. For more details, see the relevant trigger description.
- The service account used to invoke the function needs the
functions.functionInvokerrole. Other roles required for the trigger to operate correctly depend on trigger type. For more details, see the relevant trigger description. - If the trigger is suspended and then restarted by the user, it will not process any events that occurred during its idle time.
Filtering events
You can configure a filter for each resource invoked in a trigger. The filter is a jq expression
true, the event is forwarded to the target.falseor if the event fails to parse, the event is dropped and not sent.
Filters are defined separately for each target, i.e., a single trigger can deliver different events to different targets. If no filter is set, all events are sent to the target.
Transforming events
For each target in a trigger, you can specify a jq
- Convert the event to the format expected by the target.
- Keep only the required fields in the event.
- Add custom fields and values to the event.
The template is defined separately for each target, so one trigger can send different representations of the same event to different targets. If no template is specified, the event is sent to the target as is.
Event batching
The batching settings allow you to send several events to a target at the same time. They set a top limit on the event batch size and accumulation time. For example, if the event batch size is 3, the target can receive batches of one to three events.
You can configure the following triggers to batch events before sending them to a target:
- Trigger for Message Queue.
- Trigger for Cloud Logging.
- Trigger for Object Storage.
- Trigger for Container Registry.
- Trigger for Yandex IoT Core.
- Trigger for Data Streams.
- Email trigger.
- Trigger for Telegram.
Function invocation retries
You can configure invoking a function again if the current attempt fails. To do this, in the trigger parameters, specify as follows:
- Interval: Invocation retry interval.
- Number of attempts: Number of invocation retries before the trigger sends a message to the dead letter queue.
This setting is available for all trigger types except the trigger for Message Queue.
For more information about invocation retries, see the guide for creating the relevant trigger.
Use cases
- Writing device data to a database
- Streaming Yandex Cloud Postbox events to Yandex Data Streams and analyzing them using Yandex DataLens
- Configuring responses in Yandex Cloud Logging and Cloud Functions
- Writing load balancer logs to PostgreSQL
- Running scheduled computations in DataSphere
- Creating a budget trigger that invokes a Cloud Functions function to stop VM instances
- Converting a video to a GIF in Python