Cloudflare 資源繫結

預設範本在 wrangler.jsonc 中宣告的 Cloudflare 資源繫結。

預設範本在 wrangler.jsonc 中設定 D1、KV、R2、Queue 和 Durable Object 等 Cloudflare 資源。worker-configuration.d.ts 會根據這個檔案產生 CloudflareBindings 型別,業務程式碼透過 c.env 或 WorkerCtx.env 存取這些資源。

下文的 saavo-template-* 是範本原始檔中的名稱。CLI 初始化專案時,會依專案名稱改寫 D1、R2、Queue 及 Worker 的名稱,Binding 識別名稱則保持不變。例如,專案名稱為 my-app 時,主要資料庫的名稱是 my-app-db,程式碼仍透過 c.env.DB 存取。

D1

DB

Prop

Type

範本的預設資料庫名稱為 saavo-template-db,初始化指令碼為 schema/db-init.sql。

ANALYTICS_DB

Prop

Type

範本的預設資料庫名稱為 saavo-template-analytics-db,初始化指令碼為 schema/analytics-init.sql。

兩個 D1 設定都未填入預設的 database_id,只能用於本機開發。執行 npm run deploy:init 建立遠端資料庫後,部署指令碼會將遠端 ID 寫回 wrangler.jsonc。

KV 和 R2

MAIN_KV

Prop

Type

範本預設未設定遠端 Namespace ID。npm run deploy:init 建立遠端 KV Namespace 後,會補上 id。

MAIN_R2

Prop

Type

範本的預設儲存貯體名稱為 saavo-template-storage,必須與一般變數 R2_BUCKET_NAME 完全一致。

電子郵件

EMAIL

Prop

Type

範本預設使用 Resend,因此 wrangler.jsonc 中的 send_email 設定已被註解,EMAIL 也是選用的 Binding。改用 Cloudflare Email 後,必須取消註解,或由部署指令碼寫入這項繫結,並確認允許使用 config/base.ts 中設定的寄件地址。

Queue

ASYNC_POLICY_TASK_QUEUE

Prop

Type

範本的預設 Queue 名稱為 saavo-template-policy-task,取用者每批最多處理 1 則訊息,批次處理等待時間為 5 秒,最大並行數為 1,最多重試 3 次。

ASYNC_LOGGER_QUEUE

Prop

Type

範本的預設 Queue 名稱為 saavo-template-async-logger,取用者每批最多處理 50 則訊息,批次處理等待時間為 5 秒,最大並行數為 1,最多重試 3 次。

ANALYTICS_QUEUE

Prop

Type

範本的預設 Queue 名稱為 saavo-template-analytics-events,取用者每批最多處理 8 則訊息,批次處理等待時間為 5 秒,最大並行數為 1,最多重試 3 次。

每個 Queue 都同時設定了產生者和取用者。ASYNC_POLICY_TASK_QUEUE_NAME、ASYNC_LOGGER_QUEUE_NAME 和 ANALYTICS_QUEUE_NAME 必須分別與對應的 Queue 名稱一致,Queue 處理函式會根據這些一般變數判斷訊息來自哪個佇列。

Durable Object

SAAS_RATE_LIMITER_DO

Prop

Type

SAAS_COUNTER_DO

Prop

Type

SAAS_NONCE_DO

Prop

Type

SAAS_TOKEN_BUCKET_DO

Prop

Type

SAAS_TIMER_DO

Prop

Type

五個 Durable Object 類別都由 src/index.tsx 匯出。wrangler.jsonc 的 v1 遷移使用 new_sqlite_classes 註冊這些類別。

範本預設設定

Binding資源類型範本預設資源名稱
DBD1saavo-template-db
ANALYTICS_DBD1saavo-template-analytics-db
MAIN_KVKVwrangler.jsonc 未指定資源名稱
MAIN_R2R2saavo-template-storage
EMAILEmail Sending無,範本預設使用 Resend
ASYNC_POLICY_TASK_QUEUEQueuesaavo-template-policy-task
ASYNC_LOGGER_QUEUEQueuesaavo-template-async-logger
ANALYTICS_QUEUEQueuesaavo-template-analytics-events
SAAS_RATE_LIMITER_DODurable ObjectRateLimiterDO
SAAS_COUNTER_DODurable ObjectCounterDO
SAAS_NONCE_DODurable ObjectNonceDO
SAAS_TOKEN_BUCKET_DODurable ObjectTokenBucketDO
SAAS_TIMER_DODurable ObjectTimerDO

資源名稱必須整組修改

修改 R2 或 Queue 名稱時,必須同步修改資源設定、產生者、取用者和對應的一般變數。只改其中一處,會導致 npm run doctor 檢查失敗,Queue 訊息也可能無法被正確辨識。

修改 wrangler.jsonc 後,應執行 npm run cf-typegen 重新產生 worker-configuration.d.ts。這是自動產生的檔案,請勿直接編輯。