管理執行期設定
誰: 部門管理者(含讀取)。前提: Worker 已部署且 active(否則 409 Department Worker must be deployed and active)。成功的回應為 no-store。handler 在下一次呼叫看到變更 — 每個請求一份一致快照,完全不涉及重新部署。
讀取
GET /worker/runtime-config
→ { "found": true, "revision": 3, "value": { … }, "sha256": "…" } # or {"found": false, "revision": 0}替換(整個物件)
PUT /worker/runtime-config
{ "base_revision": 3, "value": { "catalogVersion": "2026-08-19", "featureFlags": { "beta": true } } }value 的規則:JSON 物件、≤256 個頂層鍵、鍵 1–256 UTF-8 位元組(無 NUL)、正規化後總量 ≤64 KiB、深度 ≤32、≤10 000 節點、所有整數都在 JavaScript 安全範圍內 — 更大的識別碼請用字串,handler 才會讀到你寫下的原值。永不合併:每次都送完整物件。
value違反上述任何規則 → 422。- 過期的
base_revision→ 409Runtime config revision is stale(純字串,不附目前狀態):重新 GET,以新的revision重組完整物件後再送出。 - 請求 body 超過 73 728 B(64 KiB 加上 8 KiB 的外層空間),
PUT或DELETE→ 413Worker runtime config request exceeds limit。 - 後端把它的正規 JSON 送過簽章控制通道,並逐位元組驗證回讀(revision 為
base+1、sha256吻合)。驗證失敗 → 503Department Worker runtime config is unavailable— 先重新 GET 再下結論。 - 503
Department Worker control change is unavailable:耐久的稽核意圖無法寫入,所以沒有任何東西送到 Worker。重試即可。 PUT與DELETE的 503{"code":"worker_release_unavailable","message":"Worker release changed; retry this request"}:後端讀取之後、呼叫控制通道之前,部署改變了 Worker 的 release,這次變更沒有被套用。重新 GET 再重試。detail在多數錯誤是字串,有代碼的錯誤則是{code, message}物件。
刪除
DELETE /worker/runtime-config { "base_revision": 4 }
→ { "found": false, "revision": 5 }刪除也會推進 revision(CAS 從 5 繼續)。自後端 5.22.0 起,變更也可能被拒絕並回 409 worker_serving_target_unavailable(後端無法驗證是哪個位置在服務該 Worker)。平台維運者搬移該 Worker 期間,會回 503 Department Worker control change is unavailable;但在搬移的短暫暫停期間,會先讀取該 Worker 狀態的呼叫改回該路由慣用的修訂版過期 409(錯誤、搬移 Worker)。
在 handler 程式碼裡取用
export async function listUsers({ config, storage }: HandlerInput<"listUsers">) {
const pageSize = Number(await config.get("defaultPageSize") ?? 50)
// config.configured / config.revision / await config.get() for the whole frozen snapshot
}這個介面是唯讀且深度凍結的;handler 程式碼永遠無法變更設定或觸及控制路徑。讀到的值要自己做邊界檢查 — 設定是管理者提供的,不會對你的 manifest schema 驗證。
非機密就是非機密:這個物件(以摘要形式)會進入稽核事實、流經 provider 控制通道,而且 GET /worker/runtime-config 會把它完整回傳給每一位部門管理者。憑證請改放 Worker 機密:僅可寫入、任何 API 都不會回傳的值,handler 程式碼以 context.secrets.get("NAME") 讀取(Worker 機密、管理 Worker 機密)。把機密放進 value 是政策違規,不只是壞習慣。概念:執行期設定。