Cloudflare R2 Storage を使うと、一般的なクラウドストレージにつきものの高額な送信帯域料金なしで、大量の非構造化データを保存できます。オブジェクトストレージ上のデータのライフサイクルは、アップロード、変更、削除だけではありません。変換、分析、後処理が必要なこともあります。R2 は、こうしたイベント駆動のワークフローを扱う イベント通知 を提供します。
この文書では、組み込みのサーバーレス Cloudflare Workers、または外部サービスで、データ変更の通知を監視し、適切に処理する方法を説明します。
イベント通知は、データに変更があると queue(キュー)へメッセージを送ります。メッセージは consumer Worker が処理します。consumer Worker は、キューを購読してメッセージを消費するクライアントです。consumer Worker はこれらのメッセージを自動で受け取り、その後に行う処理を定義できます。
たとえば、R2 バケットへ新しい画像がアップロードされたときに通知を出せます。その通知で、画像をテキストに変換するなどの AI ワークロードを自動で開始できます。
次はプッシュ型の後処理の例です。ユーザーが R2 へ新しいオブジェクトをアップロードしたら、そのイベントをログに残し、別の R2 バケットへ保存します。同じシナリオは、次のチュートリアルで作れます。イベント通知でアップロードイベントをログに残し、R2 へ保存する。
- ユーザーが新しいオブジェクトを R2 へ直接アップロードします。
- イベント通知がキューへ送られます。
- consumer Worker は、キューから新しい作業をプッシュされます。
- Worker はログイベントを R2 へ書き込みます。
または プル型コンシューマー を作れます。任意の環境から HTTP 経由でキューをプルします。Cloudflare の外にある既存インフラでメッセージを消費し、消費速度を細かく制御したい場合に使います。
プル型コンシューマーは、準備ができたときだけ、キューからメッセージを明示的にプル(その後に確認応答)する必要があります。
次のシナリオを考えてください。ユーザーが R2 から削除を開始します。外部サービスへ削除を知らせる必要があるため、外部サービスが通知を取得できるようにプル型キューを用意します。
- ユーザーが R2 から削除を開始します。
- イベント通知がキューへ送られます。
- 外部サービスは、処理の準備ができたら、キューへ HTTP POST リクエストを送り、メッセージをプルします。
- キューは、ステップ 3 の POST リクエストへの応答としてメッセージを返します。
- 外部サービスは、メッセージを受け取ったことを確認応答する必要があります。
プル型コンシューマーの設定手順 に従ってください。
- R2 からオブジェクトが削除されるたびに、管理者へメールを送ります。
- 動画やポッドキャストが R2 へアップロードされると、Cloudflare の Automatic Speech Recognition(ASR)AI モデルの 1 つで自動処理し、字幕を生成したり、コンテンツを翻訳したりします。
- R2 のオブジェクトが削除されたら、関連するデータベースエントリも削除します。