コンテンツにスキップ

イベント通知

イベント通知は、R2バケット内のデータが変更されると、キューにメッセージを送信します。これらのメッセージは、コンシューマワーカーを使用して消費するか、Cloudflare Workersの外部からHTTPプルで取得できます。

イベント通知の開始

前提条件

開始する前に、以下が必要です:

Wranglerのセットアップ

まず、Wranglerのインストール/更新を参照して、Cloudflare Developer Platform CLIであるWranglerをインストールします。wrangler loginコマンドを使用してWranglerにログインします。

R2バケットでのイベント通知の有効化

イベント通知を有効にするには、r2 bucket notification createコマンドを実行して、バケットにイベント通知ルールを追加します。イベント通知ルールは、通知をトリガーするイベントタイプを決定し、オブジェクトのprefixおよびsuffixに基づいてフィルタリングを有効にします。

Terminal window
npx wrangler r2 bucket notification create <BUCKET_NAME> --event-type <EVENT_TYPE> --queue <QUEUE_NAME>

prefixまたはsuffixに基づいてフィルタリングを追加するには、それぞれ--prefixまたは--suffixフラグを使用します。

Terminal window
# プレフィックスを使用してフィルタリング
$ npx wrangler r2 bucket notification create <BUCKET_NAME> --event-type <EVENT_TYPE> --queue <QUEUE_NAME> --prefix "<PREFIX_VALUE>"
# サフィックスを使用してフィルタリング
$ npx wrangler r2 bucket notification create <BUCKET_NAME> --event-type <EVENT_TYPE> --queue <QUEUE_NAME> --suffix "<SUFFIX_VALUE>"
# プレフィックスとサフィックスを使用してフィルタリング。両方の条件がフィルタリングに使用されます
$ npx wrangler r2 bucket notification create <BUCKET_NAME> --event-type <EVENT_TYPE> --queue <QUEUE_NAME> --prefix "<PREFIX_VALUE>" --suffix "<SUFFIX_VALUE>"

より完全なステップバイステップの例については、R2でのイベント通知を使用したログとストレージのアップロードイベントの例を参照してください。

イベントタイプ

イベントタイプ説明トリガーアクション
object-create

新しいオブジェクトが作成されるか、既存のオブジェクトが上書きされるとトリガーされます。

  • PutObject
  • CopyObject
  • CompleteMultipartUpload
object-delete

オブジェクトがバケットから明示的に削除されるとトリガーされます。



注意: ベータ中は、オブジェクトライフサイクルポリシーの結果として発生する削除は、このイベントをトリガーしません。

  • DeleteObject

メッセージフォーマット

キューのコンシューマは、メッセージとして通知を受け取ります。以下は、コンシューマワーカーが受け取るメッセージのボディの例です:

{
"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文字列イベントに関連付けられたCloudflareアカウントID。
action文字列

イベント通知をトリガーしたアクションのタイプ。例としては、PutObjectCopyObjectCompleteMultipartUploadDeleteObjectなどがあります。

bucket文字列イベントが発生したバケットの名前。
objectオブジェクト

イベントに関与するオブジェクトの詳細を含むネストされたオブジェクト。

object.key文字列バケット内のオブジェクトのキー(または名前)。
object.size数値

オブジェクトのサイズ(バイト単位)。注意:object-deleteイベントでは存在しません。

object.eTag文字列

オブジェクトのエンティティタグ(eTag)。注意:object-deleteイベントでは存在しません。

eventTime文字列イベントをトリガーしたアクションが発生した時間。
copySourceオブジェクト

コピーされたオブジェクトのソースに関する詳細を含むネストされたオブジェクト。注意:CopyObjectによってトリガーされたイベントにのみ存在します。

copySource.bucket文字列ソースオブジェクトを含むバケット。
copySource.object文字列ソースオブジェクトの名前。

制限事項

ベータ中、イベント通知には以下の制限があります:

  • キューのキューごとのメッセージスループットは現在400メッセージ/秒です。ワークロードが1秒あたり400以上の通知を生成する場合、メッセージがドロップされる可能性があります。
  • 特定のバケットに対して、キューごとに1つのイベント通知ルールのみを作成できます。
  • 各バケットには最大5つのイベント通知ルールを持つことができます。
  • オブジェクトライフサイクルポリシーの結果として発生する削除は、イベント通知をトリガーしません。
  • 管轄制限のあるバケットではイベント通知は利用できません。