イベント通知
イベント通知は、R2バケット内のデータが変更されると、キューにメッセージを送信します。これらのメッセージは、コンシューマワーカーを使用して消費するか、Cloudflare Workersの外部からHTTPプルで取得できます。
開始する前に、以下が必要です:
- 既存のR2バケット。既存のR2バケットがない場合は、バケットの作成を参照してください。
- 既存のキュー。キューがない場合は、キューの作成を参照してください。
- キューにコンシューマワーカーまたはHTTPプルが有効になっていること。
まず、Wranglerのインストール/更新を参照して、Cloudflare Developer Platform CLIであるWranglerをインストールします。wrangler loginコマンドを使用してWranglerにログインします。
イベント通知を有効にするには、r2 bucket notification createコマンドを実行して、バケットにイベント通知ルールを追加します。イベント通知ルールは、通知をトリガーするイベントタイプを決定し、オブジェクトのprefixおよびsuffixに基づいてフィルタリングを有効にします。
npx wrangler r2 bucket notification create <BUCKET_NAME> --event-type <EVENT_TYPE> --queue <QUEUE_NAME>prefixまたはsuffixに基づいてフィルタリングを追加するには、それぞれ--prefixまたは--suffixフラグを使用します。
# プレフィックスを使用してフィルタリング$ 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 | 新しいオブジェクトが作成されるか、既存のオブジェクトが上書きされるとトリガーされます。 |
|
object-delete | オブジェクトがバケットから明示的に削除されるとトリガーされます。 注意: ベータ中は、オブジェクトライフサイクルポリシーの結果として発生する削除は、このイベントをトリガーしません。 |
|
キューのコンシューマは、メッセージとして通知を受け取ります。以下は、コンシューマワーカーが受け取るメッセージのボディの例です:
{ "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 | 文字列 | イベント通知をトリガーしたアクションのタイプ。例としては、 |
bucket | 文字列 | イベントが発生したバケットの名前。 |
object | オブジェクト | イベントに関与するオブジェクトの詳細を含むネストされたオブジェクト。 |
object.key | 文字列 | バケット内のオブジェクトのキー(または名前)。 |
object.size | 数値 | オブジェクトのサイズ(バイト単位)。注意:object-deleteイベントでは存在しません。 |
object.eTag | 文字列 | オブジェクトのエンティティタグ(eTag)。注意:object-deleteイベントでは存在しません。 |
eventTime | 文字列 | イベントをトリガーしたアクションが発生した時間。 |
copySource | オブジェクト | コピーされたオブジェクトのソースに関する詳細を含むネストされたオブジェクト。注意: |
copySource.bucket | 文字列 | ソースオブジェクトを含むバケット。 |
copySource.object | 文字列 | ソースオブジェクトの名前。 |
ベータ中、イベント通知には以下の制限があります:
- キューのキューごとのメッセージスループットは現在400メッセージ/秒です。ワークロードが1秒あたり400以上の通知を生成する場合、メッセージがドロップされる可能性があります。
- 特定のバケットに対して、キューごとに1つのイベント通知ルールのみを作成できます。
- 各バケットには最大5つのイベント通知ルールを持つことができます。
- オブジェクトライフサイクルポリシーの結果として発生する削除は、イベント通知をトリガーしません。
- 管轄制限のあるバケットではイベント通知は利用できません。