Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

イベント通知

最終更新 Markdown で表示Agent セットアップ

イベント通知は、R2 バケット内のデータが変わったときに、キュー へメッセージを送ります。これらのメッセージは、コンシューマー Worker で消費するか、Cloudflare Workers の外から HTTP で pull できます。

イベント通知を始める

前提条件

始める前に、次が必要です。

ダッシュボードでイベント通知を有効にする

  1. Cloudflare ダッシュボードで R2 object storage ページを開きます。

    Overview を開く ↗
  2. イベント通知ルールを追加するバケットを選びます。

  3. Settings タブに切り替え、Event notifications カードまでスクロールします。

  4. Add notification を選び、通知を受け取るキューと、通知を出す イベントの種類 を選びます。

  5. Add notification を選びます。

Wrangler でイベント通知を有効にする

Wrangler をセットアップする

まず npm をインストールします。次に Developer Platform CLI の Wrangler をインストール します。

R2 バケットでイベント通知を有効にする

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 に保存する を参照してください。

イベント通知ルール

イベント通知ルールは、通知を出す イベントの種類 を決め、任意でオブジェクトの prefixsuffix による絞り込みを有効にします。R2 バケットあたり最大 100 件のイベント通知ルールを設定できます。

イベントの種類

イベントの種類 説明 トリガーになる操作
object-create 新しいオブジェクトが作成されたとき、または既存オブジェクトが上書きされたときに発生します。
  • PutObject
  • CopyObject
  • CompleteMultipartUpload
object-delete オブジェクトがバケットから明示的に削除されたときに発生します。
  • DeleteObject
  • LifecycleDeletion

メッセージ形式

キューのコンシューマーは、通知を 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 イベント通知を出した操作の種類です。例: PutObjectCopyObjectCompleteMultipartUploadDeleteObject
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 回のアップロードで複数の通知が発生する可能性があり、無効です。

役に立ちましたか?