Pipelines と R2 Data Catalog が Terraform でサポートされるようになりました
概要
Cloudflare Pipelines は、Workers または HTTP エンドポイント経由でストリーミングデータを取り込み、SQL で変換し、Apache Iceberg テーブルとして R2 に書き込みます。R2 Data Catalog は、これらの Iceberg テーブル、圧縮、および R2 SQL、Spark、DuckDB などのクエリエンジンとの互換性を管理します。
これら両方の製品を Terraform を使用して作成・管理できるようになりました。Cloudflare Terraform provider v5.19.0 でサポートされています。
新しいリソース
これにより、データパイプライン全体をインフラストラクチャ・アズ・コード(Infrastructure-as-Code)として定義できる 4 つの新しいリソースが追加されます:
- cloudflare_r2_data_catalog — R2 バケットでデータカタログを有効化
- cloudflare_pipeline_stream — HTTP または Worker バインディング経由でイベントを受け取るストリームを作成
- cloudflare_pipeline_sink — R2 Data Catalog または R2 に書き込むシンクを作成
- cloudflare_pipeline — ストリームをシンクに接続する SQL パイプラインを作成
最小限の例
以下は、ストリーム、R2 Data Catalog シンク、およびパイプラインを作成する最小限の例です:
resource "cloudflare_pipeline_stream" "my_stream" {
account_id = var.cloudflare_account_id
name = "my_stream"
format = {
type = "json"
}
schema = {
fields = [
{
name = "value"
type = "json"
required = true
}
]
}
http = {
enabled = true
authentication = false
cors = {}
}
worker_binding = {
enabled = false
}
}
resource "cloudflare_pipeline_sink" "my_sink" {
account_id = var.cloudflare_account_id
name = "my_sink"
type = "r2_data_catalog"
format = {
type = "parquet"
}
schema = {
fields = []
}
config = {
account_id = var.cloudflare_account_id
bucket = "my-pipeline-bucket"
table_name = "my_table"
token = var.catalog_token
}
}
resource "cloudflare_pipeline" "my_pipeline" {
account_id = var.cloudflare_account_id
name = "my_pipeline"
sql = "INSERT INTO ${cloudflare_pipeline_sink.my_sink.name} SELECT * FROM ${cloudflare_pipeline_stream.my_stream.name}"
}
詳細情報
R2 バケット作成、データカタログセットアップ、スコープ付き API トークンプロビジョニングを含む完全なエンドツーエンドの例については、Pipelines Terraform ドキュメントを参照してください。