← Cloudflare R2 / r2 / buckets
Уведомления о событиях
Уведомления о событиях отправляют сообщения в вашу очередь при изменении данных в вашем бакете R2. Эти сообщения можно получать с помощью Worker-получатель или загрузка по HTTP за пределами Cloudflare Workers.
Начало работы с уведомлениями о событиях
Предварительные требования
Прежде чем начать, вам потребуется:
- Существующий бакет R2. Если у вас еще нет бакета R2, см. Создание бакетов.
- Существующая очередь. Если у вас еще нет очереди, см. Создайте очередь.
- A Worker-получатель или HTTP pull включено для вашей Queue.
Включение уведомлений о событиях через Dashboard
-
На панели управления Cloudflare перейдите к разделу Объектное хранилище R2 страницу.
Перейдите в Обзор ↗ -
Выберите бакет, для которого нужно добавить правило уведомлений о событиях.
-
Перейдите на вкладку Настройки вкладке, затем прокрутите вниз до Уведомления о событиях карточка.
-
Выберите Добавление уведомления и выберите очередь, в которую хотите получать уведомления, и тип событий которые будут их запускать.
-
Выберите Добавление уведомления.
Включение уведомлений о событиях через Wrangler
Настройка Wrangler
Для начала установите npm ↗. Затем установите Wrangler, интерфейс командной строки платформы разработчика.
Включение уведомлений о событиях для бакета R2
Войдите в Wrangler с помощью wrangler login команда. Затем добавьте правило уведомлений о событиях к вашему бакету, выполнив r2 bucket notification create команда.
npx wrangler r2 bucket notification create <BUCKET_NAME> --event-type <EVENT_TYPE> --queue <QUEUE_NAME>Чтобы добавить фильтрацию на основе prefix или suffix используйте --prefix или --suffix флаг соответственно.
# Filter using prefix
$ npx wrangler r2 bucket notification create <BUCKET_NAME> --event-type <EVENT_TYPE> --queue <QUEUE_NAME> --prefix "<PREFIX_VALUE>"
# Filter using suffix
$ npx wrangler r2 bucket notification create <BUCKET_NAME> --event-type <EVENT_TYPE> --queue <QUEUE_NAME> --suffix "<SUFFIX_VALUE>"
# Filter using prefix and suffix. Both the conditions will be used for filtering
$ npx wrangler r2 bucket notification create <BUCKET_NAME> --event-type <EVENT_TYPE> --queue <QUEUE_NAME> --prefix "<PREFIX_VALUE>" --suffix "<SUFFIX_VALUE>"Более полный пошаговый пример см. в Регистрируйте и сохраняйте события загрузки в R2 с помощью уведомлений о событиях пример.
Правила уведомлений о событиях
Правила уведомлений о событиях определяют типы событий которые запускают уведомления и при необходимости позволяют фильтровать по prefix и suffix. Для одного бакета R2 можно настроить до 100 правил уведомлений о событиях.
Типы событий
| Тип события | Описание | Действия триггеров |
|---|---|---|
object-create |
Срабатывает при создании новых объектов или перезаписи существующих. |
|
object-delete |
Срабатывает при явном удалении объекта из бакета. |
|
Формат сообщения
Получатели Queue получают уведомления в виде Сообщения. Ниже приведён пример тела сообщения, которое получит Worker-получатель:
{
"account": "3f4b7e3dcab231cbfdaa90a6a28bd548",
"action": "CopyObject",
"bucket": "my-bucket",
"object": {
"key": "my-new-object",
"size": 65536,
"eTag": "c846ff7a18f28c2e262116d6e8719ef0"
},
"eventTime": "2024-05-24T19:36:44.379Z",
"copySource": {
"bucket": "my-bucket",
"object": "my-original-object"
}
}Свойства
| Свойство | Тип | Описание |
|---|---|---|
account |
String | Cloudflare account ID, связанный с этим событием. |
action |
String | Тип действия, которое вызвало уведомление о событии. Примеры действий: PutObject, CopyObject, CompleteMultipartUpload, DeleteObject. |
bucket |
String | Имя бакета, в котором произошло событие. |
object |
Объект | Вложенный объект с данными об объекте, связанном с событием. |
object.key |
String | Ключ (или имя) объекта в бакете. |
object.size |
Число | Размер объекта в байтах. Примечание: отсутствует для событий удаления объекта. |
object.eTag |
String | Тег объекта (eTag). Примечание: отсутствует для событий удаления объекта. |
eventTime |
String | Время, когда произошло действие, вызвавшее событие. |
copySource |
Объект | Вложенный объект с данными об источнике скопированного объекта. Примечание: присутствует только для событий, вызванных CopyObject. |
copySource.bucket |
String | Бакет, в котором находился исходный объект. |
copySource.object |
String | Имя исходного объекта. |
Примечания
- Queues пропускная способность сообщений на очередь в настоящее время составляет 5,000 сообщений в секунду. Если ваша нагрузка формирует более 5,000 уведомлений в секунду, рекомендуется распределить правила уведомлений между несколькими очередями.
- Правила без префикса или суффикса применяются ко всем объектам в бакете.
- Перекрывающиеся или противоречащие друг другу правила, которые могут вызвать несколько уведомлений для одного и того же события, не допускаются. Например, если у вас есть
object-create(илиPutObjectдействие) без префикса и суффикса, а затем добавив ещё одноobject-create(илиPutObjectдействие) с префиксом вродеimages/может вызвать более одного уведомления для одной загрузки, что недопустимо.