Skip to content

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

カタログを管理する

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

次の操作を確認できます。

  • バケットで R2 Data Catalog を有効/無効にする。
  • コンパクションやスナップショット期限切れなどの テーブルメンテナンス 機能を有効/無効にする。
  • API トークンで Iceberg エンジンを認証する。

バケットで R2 Data Catalog を有効にする

バケットでカタログを有効にすると、REST catalog インターフェイスがオンになり、Iceberg クライアントに必要な Catalog URIWarehouse name が提供されます。有効化後、そのバケットで Iceberg テーブルを作成・管理できます。

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

    R2 Data Catalog を開く ↗
  2. Create catalog を選択します。

  3. R2 バケット名を入力します。既存のバケットを選ぶか、新しいバケット名を入力して作成できます。新しいバケットを作成する場合は、必要に応じてロケーションヒントを選べます。

  4. Next を選択してテーブルメンテナンスを設定します。セットアップ中に コンパクションスナップショット期限切れ を任意で有効にできます。

  5. 設定を確認し、Create catalog を選択します。

  6. 作成後、カタログの詳細ページに Catalog URIWarehouse name が表示されます。

バケットでカタログを有効にするには、r2 bucket catalog enable コマンド を実行します。

npx wrangler r2 bucket catalog enable <BUCKET_NAME>

有効化後、Wrangler は catalog URI と warehouse name を返します。

バケットで R2 Data Catalog を無効にする

バケットのカタログを無効にすると、カタログインターフェイスはすぐにリクエストへの応答を停止します。そのカタログに保存された Iceberg テーブル参照は、再有効化するまでアクセスできません。

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

    R2 Data Catalog を開く ↗
  2. 無効にするカタログを選択します。

  3. Settings タブを開き、Disable セクションまでスクロールします。

  4. Disable を選択して確定します。

バケットのカタログを無効にするには、r2 bucket catalog disable コマンド を実行します。

npx wrangler r2 bucket catalog disable <BUCKET_NAME>

コンパクションを有効にする

コンパクションは、データ取り込み時に作られる多数の小さなファイルを、設定した target file size に従ってより少ない大きなファイルへまとめることで、クエリ性能を上げます。コンパクションの内容と利点は、コンパクションについて を参照してください。

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

    R2 Data Catalog を開く ↗
  2. コンパクションを有効にするカタログを選択します。

  3. Settings タブを開き、Table Maintenance セクションまでスクロールします。

  4. コンパクションの横にある Enable または Edit を選択します。

  5. コンパクションをオンにし、必要に応じてターゲットファイルサイズを設定します。デフォルトは 128 MB です。

  6. Save を選択します。

カタログでコンパクションを有効にするには、r2 bucket catalog compaction enable コマンド を実行します。

# Enable catalog-level compaction (all tables)
npx wrangler r2 bucket catalog compaction enable <BUCKET_NAME> --target-size 128 --token <API_TOKEN>

# Enable compaction for a specific table
npx wrangler r2 bucket catalog compaction enable <BUCKET_NAME> <NAMESPACE> <TABLE> --target-size 128

有効にすると、コンパクションは既存の全テーブル(カタログレベル)または指定したテーブル(テーブルレベル)にさかのぼって適用されます。

コンパクションを無効にする

コンパクションを無効にすると、全テーブル(カタログレベル)または特定のテーブル(テーブルレベル)で処理が止まります。いつでも再有効化できます。

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

    R2 Data Catalog を開く ↗
  2. コンパクションを無効にするカタログを選択します。

  3. Settings タブを開き、Table Maintenance セクションまでスクロールします。

  4. コンパクションの横にある Edit を選択します。

  5. コンパクションをオフにします。

  6. Save を選択します。

カタログのコンパクションを無効にするには、r2 bucket catalog compaction disable コマンド を実行します。

# Disable catalog-level compaction (all tables)
npx wrangler r2 bucket catalog compaction disable <BUCKET_NAME>

# Disable compaction for a specific table
npx wrangler r2 bucket catalog compaction disable <BUCKET_NAME> <NAMESPACE> <TABLE>

スナップショット期限切れを有効にする

スナップショット期限切れは、古いテーブルスナップショットと参照されていないデータファイルを自動で削除し、メタデータのオーバーヘッドとストレージコストを下げます。次を設定できます。

  • Max snapshot age - この期間より古いスナップショットは期限切れになります。値のあとに単位を付けます(日は d、時間は h、分は m、秒は s)。例: 7d は 7 日より古いスナップショットを期限切れにします。
  • Min snapshots to keep - 経過時間に関係なく残すスナップショットの最小数です。
  1. Cloudflare ダッシュボードで R2 Data Catalog のページを開きます。

    R2 Data Catalog を開く ↗
  2. スナップショット期限切れを有効にするカタログを選択します。

  3. Settings タブを開き、Table Maintenance セクションまでスクロールします。

  4. スナップショット期限切れの横にある Enable または Edit を選択します。

  5. スナップショット期限切れをオンにします。

  6. Max snapshot ageMin snapshots to keep の値を設定します。

  7. Save を選択します。

カタログでスナップショット期限切れを有効にするには、r2 bucket catalog snapshot-expiration enable コマンド を実行します。

# Enable catalog-level snapshot expiration (all tables)
npx wrangler r2 bucket catalog snapshot-expiration enable <BUCKET_NAME> \
  --token <API_TOKEN> \
  --older-than-days 7 \
  --retain-last 10

# Enable snapshot expiration for a specific table
npx wrangler r2 bucket catalog snapshot-expiration enable <BUCKET_NAME> <NAMESPACE> <TABLE> \
  --older-than-days 2 \
  --retain-last 5

スナップショット期限切れを無効にする

スナップショット期限切れを無効にすると、全テーブル(カタログレベル)または特定のテーブル(テーブルレベル)で処理が止まります。いつでも再有効化できます。

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

    R2 Data Catalog を開く ↗
  2. スナップショット期限切れを無効にするカタログを選択します。

  3. Settings タブを開き、Table Maintenance セクションまでスクロールします。

  4. スナップショット期限切れの横にある Edit を選択します。

  5. スナップショット期限切れをオフにします。

  6. Save を選択します。

# Disable catalog-level snapshot expiration (all tables)
npx wrangler r2 bucket catalog snapshot-expiration disable <BUCKET_NAME>

# Disable snapshot expiration for a specific table
npx wrangler r2 bucket catalog snapshot-expiration disable <BUCKET_NAME> <NAMESPACE> <TABLE>

Iceberg エンジンを認証する

Iceberg エンジンを R2 Data Catalog に接続するには、R2 Data Catalog の権限と R2 ストレージの権限の 両方 を持つ Cloudflare API トークンが必要です。Iceberg エンジンは R2 Data Catalog とやり取りしてテーブル操作を行います。カタログはエンジンへ SigV4 認証情報も渡し、R2 に保存された実データファイルへのアクセスに使います。

R2 Data Catalog は読み取り専用トークンと読み書きトークンの両方に対応しています。

  • 読み取り専用 の操作(名前空間の一覧、テーブルの読み込み、データのクエリなど)には、R2 Data Catalog と R2 ストレージへの読み取り権限を持つトークンが必要です。
  • 書き込み の操作(テーブルの作成や削除、トランザクションのコミットなど)には、R2 Data Catalog と R2 ストレージへの読み取りと書き込み権限を持つトークンが必要です。

データの読み取りだけを行うクエリエンジンやクライアント(R2 SQL、DuckDB、PyIceberg のリーダーなど)には読み取り専用トークンを使い、テーブル作成やデータ書き込みを行うエンジンやパイプラインには読み書きトークンを使います。

ダッシュボードで API トークンを作成する

ワークロードに合う権限で R2 API トークン を作成します。

  • Admin Read & Write — データの読み書きを行うエンジンやパイプライン向けです。R2 Data Catalog と R2 ストレージの両方への読み取りと書き込み権限を含みます。
  • Admin Read only — データの読み取りだけを行うクエリエンジンやクライアント向けです。R2 Data Catalog と R2 ストレージの両方への読み取り権限を含みます。

発行されたトークン値を Iceberg エンジンへ渡すと、カタログメタデータの管理と、データ操作(R2 への読み取りまたは書き込み)ができます。

API で API トークンを作成する

R2 Data Catalog 向けの API トークンをプログラムから作成するには、Access Policy に R2 Data Catalog と R2 ストレージの両方の権限グループを指定します。

読み書き Access Policy の例

テーブル作成やデータ書き込みを行うエンジンやパイプラインには、読み取りと書き込みの権限グループを使います。

[
	{
		"id": "f267e341f3dd4697bd3b9f71dd96247f",
		"effect": "allow",
		"resources": {
			"com.cloudflare.edge.r2.bucket.4793d734c0b8e484dfc37ec392b5fa8a_default_my-bucket": "*",
			"com.cloudflare.edge.r2.bucket.4793d734c0b8e484dfc37ec392b5fa8a_eu_my-eu-bucket": "*"
		},
		"permission_groups": [
			{
				"id": "d229766a2f7f4d299f20eaa8c9b1fde9",
				"name": "Workers R2 Data Catalog Write"
			},
			{
				"id": "2efd5506f9c8494dacb1fa10a3e7d5b6",
				"name": "Workers R2 Storage Bucket Item Write"
			}
		]
	}
]

読み取り専用 Access Policy の例

データの読み取りだけを行うクエリエンジンやクライアントには、読み取りの権限グループを使います。

[
	{
		"id": "f267e341f3dd4697bd3b9f71dd96247f",
		"effect": "allow",
		"resources": {
			"com.cloudflare.edge.r2.bucket.4793d734c0b8e484dfc37ec392b5fa8a_default_my-bucket": "*",
			"com.cloudflare.edge.r2.bucket.4793d734c0b8e484dfc37ec392b5fa8a_eu_my-eu-bucket": "*"
		},
		"permission_groups": [
			{
				"id": "45db74139a62490b9b60eb7c4f34994b",
				"name": "Workers R2 Data Catalog Read"
			},
			{
				"id": "6a018a9f2fc74eb6b293b0c548f38b39",
				"name": "Workers R2 Storage Bucket Item Read"
			}
		]
	}
]

API で R2 Data Catalog 向けの API トークンを作成する方法、必要な権限グループ、利用例は、API で API トークンを作成する を参照してください。

R2 Local Uploads

Local Uploads は、オブジェクトデータを近くの場所へ書き込んだあと、非同期でバケットへコピーします。データはすぐにクエリでき、強い一貫性を保ちます。対象の R2 Data Catalog バケットがあるリージョン外の Apache Iceberg クライアントからの書き込みレイテンシを、大きく改善できます。

R2 Local Uploads を有効にするには、次の Wrangler コマンドを使えます。

npx wrangler r2 bucket catalog local-uploads enable <R2_Data_Catalog_BUCKET_NAME>

制限

  • R2 Data Catalog は現在、デフォルト以外の管轄にある R2 バケットに対応していません。

さらに学ぶ

始める

バケットで R2 Data Catalog を有効にし、サンプルデータを読み込み、最初のクエリを実行する方法を確認します。

役に立ちましたか?