Skip to content

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

はじめに

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

このガイドでは、次の手順を説明します。

  • 最初の R2 バケット を作成し、データカタログ を有効にする
  • パイプラインがデータカタログへ認証するために必要な API トークン を作成する
  • 簡単な e コマーススキーマで、R2 Data Catalog が管理する Apache Iceberg テーブルへ書き込む最初のパイプラインを作成する
  • HTTP エンドポイント経由でサンプルの e コマースデータを送信する
  • バケット内のデータを確認し、R2 SQL でクエリする

前提条件

  1. Cloudflare アカウント に登録します。
  2. Node.js をインストールします。

Node.js のバージョンマネージャー

権限の問題を避け、Node.js のバージョンを切り替えられるよう、Voltanvm などの Node バージョンマネージャーを使います。このガイドの後半で説明する Wrangler には、Node バージョン 16.17.0 以降が必要です。

1. R2 バケットを作成する

  1. まだログインしていない場合は、次を実行します。

    npx wrangler login
  2. R2 バケットを作成します。

    npx wrangler r2 bucket create pipelines-tutorial
  1. Cloudflare ダッシュボードで R2 object storage ページを開きます。

    Overview を開く ↗
  2. Create bucket を選びます。

  3. バケット名に pipelines-tutorial を入力します。

  4. Create bucket を選びます。

2. R2 Data Catalog を有効にする

R2 バケットでカタログを有効にします。

npx wrangler r2 bucket catalog enable pipelines-tutorial

このコマンドを実行したら、「Warehouse」と「Catalog URI」を控えてください。あとで使います。

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

    Overview を開く ↗
  2. バケット pipelines-tutorial を選びます。

  3. Settings タブに切り替え、R2 Data Catalog までスクロールし、Enable を選びます。

  4. 有効になったら、Catalog URIWarehouse name を控えます。

3. API トークンを作成する

Pipelines は、カタログと R2 の権限を持つ R2 API トークン で R2 Data Catalog に認証する必要があります。

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

    Overview を開く ↗
  2. Manage API tokens を選びます。

  3. Create Account API token を選びます。

  4. API トークンに名前を付けます。

  5. PermissionsAdmin Read & Write 権限を選びます。

  6. Create Account API Token を選びます。

  7. Token value を控えます。

4. パイプラインを作成する

まず、e コマースのデータ構造を定義するスキーマファイルを作成します。

schema.json を作成します。

{
	"fields": [
		{
			"name": "user_id",
			"type": "string",
			"required": true
		},
		{
			"name": "event_type",
			"type": "string",
			"required": true
		},
		{
			"name": "product_id",
			"type": "string",
			"required": false
		},
		{
			"name": "amount",
			"type": "float64",
			"required": false
		}
	]
}

対話型セットアップで、R2 Data Catalog へ書き込むパイプラインを作成します。

npx wrangler pipelines setup

プロンプトに従います。

  1. Pipeline name: ecommerce を入力します

  2. Stream configuration:

    • Enable HTTP endpoint: yes
    • Require authentication: no(簡略化のため)
    • Configure custom CORS origins: no
    • Schema definition: Load from file
    • Schema file path: schema.json(またはファイルパス)
  3. Sink configuration:

    • Destination type: Data Catalog Table
    • R2 bucket name: pipelines-tutorial
    • Namespace: default
    • Table name: ecommerce
    • Catalog API token: 手順 3 のトークンを入力します
    • Compression: zstd
    • Roll file when size reaches (MB): 100
    • Roll file when time reaches (seconds): 10(このチュートリアルでは、データを早く確認できるようにします)
  4. SQL transformation: Use simple ingestion query を選び、次を使います。

    INSERT INTO ecommerce_sink SELECT * FROM ecommerce_stream

セットアップが完了したら、最終出力に表示される HTTP エンドポイント URL を控えます。

  1. Cloudflare ダッシュボードで Pipelines > Pipelines を開きます。

    Pipelines を開く ↗
  2. Create Pipeline を選びます。

  3. Connect to a Stream:

    • Pipeline name: ecommerce
    • Enable HTTP endpoint for sending data: 有効
    • HTTP authentication: 無効(デフォルト)
    • Next を選びます
  4. Define Input Schema:

    • JSON editor を選びます
    • 次のスキーマをコピーします。
      {
      	"fields": [
      		{
      			"name": "user_id",
      			"type": "string",
      			"required": true
      		},
      		{
      			"name": "event_type",
      			"type": "string",
      			"required": true
      		},
      		{
      			"name": "product_id",
      			"type": "string",
      			"required": false
      		},
      		{
      			"name": "amount",
      			"type": "f64",
      			"required": false
      		}
      	]
      }
    • Next を選びます
  5. Define Sink:

    • R2 バケットを選びます: pipelines-tutorial
    • Storage type: R2 Data Catalog
    • Namespace: default
    • Table name: ecommerce
    • Advanced Settings: Maximum Time Interval10 seconds に変更します
    • Next を選びます
  6. Credentials:

    • Automatically create an Account API token for your sink を無効にします
    • 手順 3 の Catalog Token を入力します
    • Next を選びます
  7. Pipeline Definition:

    • デフォルトの SQL クエリはそのままにします。
      INSERT INTO ecommerce_sink SELECT * FROM ecommerce_stream;
    • Create Pipeline を選びます
  8. パイプライン作成後、次の手順のために Stream ID を控えます。

5. サンプルデータを送信する

パイプラインの HTTP エンドポイントへ e コマースイベントを送信します。

curl -X POST https://{stream-id}.ingest.cloudflare.com \
  -H "Content-Type: application/json" \
  -d '[
    {
      "user_id": "user_12345",
      "event_type": "purchase",
      "product_id": "widget-001",
      "amount": 29.99
    },
    {
      "user_id": "user_67890",
      "event_type": "view_product",
      "product_id": "widget-002"
    },
    {
      "user_id": "user_12345",
      "event_type": "add_to_cart",
      "product_id": "widget-003",
      "amount": 15.50
    }
  ]'

{stream-id} は、パイプラインセットアップで得た実際のストリームエンドポイントに置き換えます。

6. バケット内のデータを確認する

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

  2. バケット pipelines-tutorial を選びます。

  3. パイプラインが作成した Iceberg のメタデータファイルとデータファイルが表示されます。バケットにファイルが見えない場合は、数分待ってから再試行してください。

  4. データは Apache Iceberg 形式で整理され、メタデータがテーブルのバージョンを追跡します。

7. R2 SQL でデータをクエリする

R2 SQL を使う環境を整えます。

export WRANGLER_R2_SQL_AUTH_TOKEN=YOUR_API_TOKEN

または、次の内容で .env ファイルを作成します。

WRANGLER_R2_SQL_AUTH_TOKEN=YOUR_API_TOKEN

YOUR_API_TOKEN は手順 3 で作成したトークンです。環境変数の設定については、Wrangler のシステム環境変数 を参照してください。

データをクエリします。

npx wrangler r2 sql query "YOUR_WAREHOUSE_NAME" "
SELECT
    user_id,
    event_type,
    product_id,
    amount
FROM default.ecommerce
WHERE event_type = 'purchase'
LIMIT 10"

YOUR_WAREHOUSE_NAME は、手順 2 の warehouse 名に置き換えます。

Apache Iceberg に対応する任意のエンジンでも、このテーブルをクエリできます。ほかのエンジンを R2 Data Catalog に接続する方法は、Connect to Iceberg engines を参照してください。

さらに学ぶ

R2 Data Catalog の管理

バケットで R2 Data Catalog を有効または無効にし、設定内容を確認し、Iceberg エンジンを認証します。

別の例を試す

シンプルな不正検知データパイプラインの構築と、Python でのイベント生成を詳しく説明するチュートリアルです。

Pipelines

SQL 変換とパイプライン設定を理解します。

役に立ちましたか?