Triggers in Serverless Containers. Overview
A trigger is a condition which, when met, automatically invokes a Serverless Containers container. A single trigger can invoke several Serverless Containers containers and Cloud Functions functions at the same time and send messages to WebSocket connections of one or more Yandex API Gateway API gateways; the recipient types can be combined.
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 Serverless Containers:
- 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 container invocations by triggers
Triggers invoke a container based on preset quotas and limits.
When invoking a container with a trigger, the following considerations apply:
- You need to configure the container to return the
2xxstate code if invoked successfully. Other state codes will be interpreted as an invocation error followed by a retry attempt to invoke the container. - Before delivering messages to the container, the trigger changes their format. Each trigger type uses a message format of its own. For more details, see the relevant trigger description.
- The service account which will invoke the container must have the
serverless-containers.containerInvokerrole. 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.
Container invocation retries
You can configure invoking a container again if the current attempt fails. Specify the following in the trigger parameters:
- Interval: Invocation retry interval.
- Number of attempts: Number of container invocation retries before the trigger moves a message to the dead letter queue.
This setting is available for all trigger types except the one for Message Queue.
For more information about invocation retries, see the guide for creating the relevant trigger.