Триггер для Object Storage, который отправляет сообщения в WebSocket-соединения
Триггер для Object Storage отправляет сообщения в WebSocket-соединения, когда наступает определенное событие с объектом Object Storage. Триггер должен находиться в одном облаке с бакетом, на события которого он подписан.
Триггеру для Object Storage необходим сервисный аккаунт для отправки сообщений в WebSocket-соединения.
О том, как создать триггер для Object Storage, читайте в инструкции Создать триггер для Object Storage, который отправляет сообщения в WebSocket-соединения.
События для настройки триггера
События с объектами в бакете, которые можно отслеживать с помощью триггера:
Фильтрация событий по объектам
События фильтруются с помощью префиксов и суффиксов для ключа объекта:
- Префикс — это часть ключа объекта, которая содержит начало ключа объекта.
- Суффикс — это часть ключа объекта, которая содержит конец ключа объекта.
Префикс и суффикс могут быть произвольной длины. При использовании префикса и суффикса одновременно, фильтрация происходит по принципу логического И
: чтобы триггер сработал, ключ объекта должен подходить и по префиксу, и по суффиксу.
Батчинг
Настройки батчинга позволяют отправлять в WebSocket-соединения сразу несколько событий. Эти настройки задают ограничение сверху по размеру группы событий и по времени ее накопления. Например, если размер группы событий равен 3, то в WebSocket-соединения могут отправляться группы, в которых содержится от 1 до 3 событий.
Роли, необходимые для корректной работы триггера для Object Storage
- Для создания триггера вам необходимо разрешение на сервисный аккаунт, от имени которого триггер выполняет операцию. Это разрешение входит в роли iam.serviceAccounts.user, editor и выше.
- Для работы триггера сервисному аккаунту необходима роль
api-gateway.websocketBroadcaster
на каталог, в котором находится API-шлюз.
Подробнее об управлении доступом.
Формат сообщения от триггера Object Storage
После того как триггер сработает, он отправит в WebSocket-соединения следующее сообщение:
{
"messages": [
{
"event_metadata": {
"event_id": "bb1dd06d-a82c-49b4-af98-d8e0********",
"event_type": "yandex.cloud.events.storage.ObjectDelete",
"created_at": "2019-12-19T14:17:47.847365Z",
"tracing_context": {
"trace_id": "dd52ace7********",
"span_id": "",
"parent_span_id": ""
},
"cloud_id": "b1gvlrnlei4l********",
"folder_id": "b1g88tflru0e********"
},
"details": {
"bucket_id": "s3-for-trigger",
"object_id": "dev/0_15a775_972dbde4_orig12.jpg"
}
}
]
}