イベント通知は、R2 バケット内のデータが変わったときに、キュー へメッセージを送ります。これらのメッセージは、コンシューマー Worker で消費するか、Cloudflare Workers の外から HTTP で pull できます。
始める前に、次が必要です。
- 既存の R2 バケット。まだない場合は バケットを作成する を参照してください。
- 既存のキュー。まだない場合は キューを作成する を参照してください。
- キューで有効にした コンシューマー Worker、または HTTP pull。
-
Cloudflare ダッシュボードで R2 object storage ページを開きます。
Overview を開く ↗ -
イベント通知ルールを追加するバケットを選びます。
-
Settings タブに切り替え、Event notifications カードまでスクロールします。
-
Add notification を選び、通知を受け取るキューと、通知を出す イベントの種類 を選びます。
-
Add notification を選びます。
まず npm ↗ をインストールします。次に Developer Platform CLI の Wrangler をインストール します。
wrangler login コマンド で Wrangler にログインします。次に 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 |
オブジェクトがバケットから明示的に削除されたときに発生します。 |
|
キューのコンシューマーは、通知を Messages として受け取ります。コンシューマー 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 のアカウント ID です。 |
action |
String | イベント通知を出した操作の種類です。例: PutObject、CopyObject、CompleteMultipartUpload、DeleteObject。 |
bucket |
String | イベントが発生したバケット名です。 |
object |
Object | イベントに関わるオブジェクトの詳細を含む入れ子オブジェクトです。 |
object.key |
String | バケット内のオブジェクトのキー(名前)です。 |
object.size |
Number | オブジェクトのサイズ(バイト)です。注: object-delete イベントでは含まれません。 |
object.eTag |
String | オブジェクトのエンティティタグ(eTag)です。注: object-delete イベントでは含まれません。 |
eventTime |
String | イベントを出した操作が発生した時刻です。 |
copySource |
Object | コピー元オブジェクトの詳細を含む入れ子オブジェクトです。注: CopyObject で発生したイベントにのみ含まれます。 |
copySource.bucket |
String | コピー元オブジェクトがあったバケットです。 |
copySource.object |
String | コピー元オブジェクトの名前です。 |
- Queues の キューあたりのメッセージスループット は、現在 1 秒あたり 5,000 メッセージです。ワークロードが 1 秒あたり 5,000 件を超える通知を出す場合は、通知ルールを複数のキューに分けることをおすすめします。
- prefix / suffix のないルールは、バケット内のすべてのオブジェクトに適用されます。
- 同じイベントに対して複数の通知が起きる、重複や矛盾するルールは許可されません。たとえば、prefix と suffix のない
object-create(またはPutObjectアクション)ルールがある状態で、images/のような prefix を付けた別のobject-create(またはPutObjectアクション)ルールを追加すると、1 回のアップロードで複数の通知が発生する可能性があり、無効です。