Pipelines
事件像消防水柱一樣灌進來,整齊的檔案落到 R2——不用顧任何伺服器。
Pipelines 是什麼?
Pipelines 負責接收「串流資料(streaming data,指源源不絕、一筆筆小事件不停湧入的資料,例如點擊或感測器讀數)」,可選擇做轉換,再把它整整齊齊地寫進 R2 物件儲存。
一條 pipeline 有三個部分:stream(事件進來的地方,透過 HTTP 端點或 Worker)、可選的 SQL 轉換(用來過濾或重塑事件),以及 sink(資料落地的 R2 目的地,可存成 Iceberg 表、Parquet 或 JSON 檔)。
把它想成…
一座淨水廠。雜亂的原始事件流進來(stream),經過過濾與清洗(SQL 轉換),最後裝瓶成架上一罐罐整齊的檔案(R2 sink),等之後要用時隨時取用。
為什麼要用 Pipelines?
可靠地收下源源不絕的大量事件其實很難:你得緩衝突發尖峰、把它們批次寫成檔案,還不能掉資料或重複資料。Pipelines 把這些全包辦成一個受管服務,最後在 R2 給你乾淨的檔案。
可靠的接收
事件會被安全緩衝,流量暴衝時也不會掉資料。
恰好一次交付
每筆事件恰好落地 R2 一次——不漏、不重複。
傳輸中即轉換
用 SQL 在資料存下前先過濾、重塑或加料。
存起來便宜
輸出落在 R2,之後讀回來還是零流出費。
什麼時候該用 Pipelines?
點擊流分析
蒐集每一次瀏覽和點擊,之後分析使用者行為。
日誌與事件
把伺服器日誌或應用事件串流進 R2,做封存與查詢。
物聯網遙測
把眾多裝置的讀數蒐集進同一個井然有序的資料湖。
灌入資料湖
把結構化檔案落到 R2,供大數據工具直接查詢。
怎麼開始用?
引導式的設定指令會一次幫你建好 stream、SQL 轉換和 R2 sink。接著你把事件送到 HTTP 端點,再查詢存下來的資料。
安裝 Wrangler 並登入
Pipelines 在公開測試期間,於 Workers 付費方案下提供。
npm install -g wrangler wrangler login執行引導式設定
它會帶你一步步命名 pipeline、開啟 HTTP 端點、選一個 R2 儲存桶當 sink,並挑選一個轉換方式。
npx wrangler pipelines setup --name ecommerce把事件送到端點
用 POST 把一個 JSON 事件陣列送到你 stream 的接收 URL。把 {stream-id} 換成設定時拿到的 id。
curl -X POST https://{stream-id}.ingest.cloudflare.com \ -H "Content-Type: application/json" \ -d '[{"user_id":"u_123","event":"purchase","amount":29.99}]'從 Worker 送出事件
你也可以在 Worker 程式碼裡用 POST 打同一個接收 URL 來推送事件。
export default { async fetch(request, env) { const event = { user_id: "u_123", event: "page_view", path: "/home" }; await fetch("https://{stream-id}.ingest.cloudflare.com", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify([event]), }); return new Response("event sent"); }, };查詢存下來的資料
事件落地 R2 後,用你的 warehouse 名稱搭配 R2 SQL 來查詢它們。
export WRANGLER_R2_SQL_AUTH_TOKEN=your_api_token npx wrangler r2 sql query "YOUR_WAREHOUSE_NAME" \ "SELECT user_id, event, amount FROM default.ecommerce LIMIT 10"
重點概念
Stream(串流入口)
事件進來的入口——透過 HTTP 端點或 Worker 綁定。
SQL 轉換
一個可選的 SQL 步驟,在事件經過時做過濾、重塑或加料。
Sink(落地目的地)
資料寫入的 R2 目的地,存成 Iceberg、Parquet 或 JSON 檔案。
批次寫入
把許多小事件聚成較大的檔案,讓儲存與查詢都更有效率。
小提示與目前狀態
公開測試中
Pipelines 目前在 Workers 付費方案下處於公開測試。測試期間 Pipelines 本身不收費——你只需支付它寫入資料時標準的 R2 儲存費用。
- 把事件包成 JSON 陣列,就能在一個請求裡批次送出多筆紀錄。
- 若打算用大數據工具查詢,輸出格式選 Parquet 或 Iceberg。
- 因為輸出存在 R2,把資料讀回來是零流出費。
- 只是想在 Workers 之間放個簡單訊息佇列?可以看看 Queues。