Триггер для Object Storage

Триггер для Object Storage запускает функцию, когда наступает определенное событие с объектом Yandex Object Storage. Триггер должен находиться в одном облаке с бакетом, на события которого он подписан.

Триггеру для Object Storage необходим сервисный аккаунт для вызова функции.

События для настройки триггера

События с объектами в бакете, которые можно отслеживать с помощью триггера:

Фильтрация событий по объектам

События фильтруются с помощью префиксов и суффиксов для ключа объекта:

  • Префикс — это часть ключа объекта, которая содержит начало ключа объекта.
  • Суффикс — это часть ключа объекта, которая содержит конец ключа объекта.

Префикс и суффикс могут быть произвольной длины. При использовании префикса и суффикса одновременно, фильтрация происходит по принципу логического И: чтобы триггер сработал, ключ объекта должен подходить и по префиксу, и по суффиксу.

Роли, необходимые для корректной работы триггера для Object Storage

  • Для создания триггера вам необходимо разрешение на сервисный аккаунт, от имени которого триггер выполняет операцию. Это разрешение входит в роли iam.serviceAccounts.user, editor и выше.
  • Для работы триггера сервисному аккаунту необходима роль serverless.functions.invoker на каталог с функцией, которую вызывает триггер.

Подробнее об управлении доступом.

Формат сообщения от триггера Object Storage

После того, как триггер сработает, он отправит в функцию следующее сообщение:

{
  "messages": [
    {
      "event_metadata": {
        "event_id": "bb1dd06d-a82c-49b4-af98-d8e0c5a1d8f0",
        "event_type": "yandex.cloud.events.storage.ObjectDelete",
        "created_at": "2019-12-19T14:17:47.847365Z",
        "tracing_context": {
          "trace_id": "dd52ace79c62892f",
          "span_id": "",
          "parent_span_id": ""
        },
        "cloud_id": "b1gvlrnlei4l5idm9cbj",
        "folder_id": "b1g88tflru0ek1omtsu0"
      },
      "details": {
        "bucket_id": "s3-for-trigger",
        "object_id": "dev/0_15a775_972dbde4_orig12.jpg"
      }
    }
  ]
}