# Triggers in Cloud Functions. Overview

_Triggers_ are criteria that automatically start a Cloud Functions [function](../function.md) when met. 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 info %}

The trigger is initiated within five minutes after it is created.

{% endnote %}

The following types of triggers are available in Cloud Functions: 
* [Timer](timer.md)
* [Trigger for Message Queue](ymq-trigger.md)
* [Trigger for Object Storage](os-trigger.md)
* [Trigger for Container Registry](cr-trigger.md)
* [Trigger for Cloud Logging](cloud-logging-trigger.md)
* [Trigger for Yandex IoT Core](iot-core-trigger.md)
* [Trigger for budgets](budget-trigger.md)
* [Trigger for Data Streams](data-streams-trigger.md)
* [Email trigger](mail-trigger.md)

Each trigger type has its own conditions. For example, a trigger for Object Storage may fire when an object is [created](../../../storage/operations/objects/upload.md) or [updated](../../../storage/operations/objects/edit-acl.md). You can set some conditions in the service object settings, e.g., notification thresholds in the [budget](../../../billing/concepts/budget.md) settings would act as trigger conditions for budgets.

## Specifics of functions invoked by triggers {#invoke}

Triggers call functions based on preset [quotas and limits](../limits.md).

When a function is called by a trigger, the following specifics apply:
- Functions are always called by triggers with the `?integration=raw` query string parameter. To learn more about function calls, see [this guide](../function-invoke.md).
- Before the trigger delivers messages to a function, it changes their format. Each trigger type uses a message format of its own. Read more about this in the relevant trigger description.
- The service account used to invoke the function needs the `functions.functionInvoker` role. Other roles required for the trigger to operate correctly depend on trigger type. Read more about this in 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.

## Message batching {#batch-messages}

You can configure the following triggers to batch messages before calling a function:

* 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

This way you can call a function for a whole batch of messages rather than each message separately. Specify the following in the trigger parameters:

* **Waiting time, s**: Message batching time. The number of messages cannot exceed the specified batch size.
* **Batch size**: Number of messages for batching.

For more information about message batching, see the guides for creating the relevant trigger.

## Function invocation retries {#invoke-retry}

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](../dlq.md).

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 {#examples}

* [Writing device data to a database](../../tutorials/data-recording.md)
* [Streaming Yandex Cloud Postbox events to Yandex Data Streams and analyzing them using Yandex DataLens](../../tutorials/events-from-postbox-to-yds.md)
* [Configuring responses in Yandex Cloud Logging and Cloud Functions](../../tutorials/logging-functions.md)
* [Writing load balancer logs to PostgreSQL](../../tutorials/logging.md)
* [Running scheduled computations in DataSphere](../../tutorials/regular-launch-datasphere.md)
* [Creating a budget trigger that invokes a Cloud Functions function to stop VM instances](../../tutorials/serverless-trigger-budget-vm.md)
* [Converting a video to a GIF in Python](../../tutorials/video-converting-queue/index.md)

## See also {#see-also}

* [Triggers to run a Serverless Containers container](../../../serverless-containers/concepts/trigger/index.md)
* [Triggers to send messages to WebSocket connections](../../../api-gateway/concepts/trigger/index.md)