Skip to Content
概念架構:控制面與資料面

架構:控制面與資料面

前端呼叫什麼

幾乎所有 sandbox API 都在 /private/module/sandbox(module 是單數 — 後端把這條路當安全相關路徑做請求內容遮罩)。

不在 /private/module/sandbox 底下的租戶相關路徑有兩組,都不必登入:確認目錄(前端直接呼叫),以及公開產出物下載 GET /public/sandbox/artifacts/{token}(由下面第 4 點的 public-link 鑄出、給收件人點的連結,不是前端呼叫的 API)。確認目錄是:

GET /public/info/sandbox/regions GET /public/info/sandbox/profiles

下拉選單用這兩個。不要自己發明 region 或 profile 字串。租戶 runtime 子集仍是 GET /settings.allowed_regions。營運端啟用仍是 /root/sandbox/regions。

/private/module/sandbox 底下的前綴:

資源前綴
公司設定/settings
環境/版本/建置/context 上傳/environments
任務/版本/分享/公司執行歷史/tasks
Bindings(與 granted-jobs 啟用同一釘選)/bindings
Secrets/授權/secrets、/secret-approvals
選單、granted-jobs、執行/chatrooms/{chatroom_id}/...

任務受眾(誰擁有、誰可分享、啟用代表什麼)見 任務受眾。

前端看不到的世界

路由群用途認證
/sandbox-control/*隔離工作負載回呼、結果物件上傳、控制面內部的建置內容串流;地端部署另有 executor 的 work lease(/sandbox-control/onprem/work/*)Google 服務帳戶 OIDC + capability(地端:以地端 executor token 取代 Google OIDC);include_in_schema=False。人類不該打
/root/sandbox/*營運/root營運與 Root
POST /public/module/custom_tables/callback/command-output/{token_id}由 Command 輸出 run 自己的 work script 呼叫(v5.21.0),不是前端該 run 的密封 Bearer 憑證;見任務輸出交給自訂表格 Command

六個位元組接觸點

前端碰位元組的地方有六個。其餘(R2 key、R2 multipart part、runner 串流)都在控制面。

  1. 建置 context 封存 — environment owner-scope manager 在 /environments/{id}/context-uploads 走 init → PUT(X-Sandbox-Upload-Capability)→ complete,再把 owned_object_id 送到建立版本。單一部分,最大 1 GiB。這是租戶 capability;不是 generic blob_id,也不是 R2 presign。見 建立環境並建置。
  2. 執行 input — POST .../runs 的 canonical JSON。
  3. 產出物下載 — POST .../download 回一個 5 分鐘的 capability_token,不是 URL。沒有租戶兌換路由。
  4. 永久公開連結 — POST .../runs/{run_id}/{log|output}/public-link 鑄出一個不必登入、沒有 TTL 的 GET /public/sandbox/artifacts/{token} URL,給 run 的 log 或 output 用。見 內容、Digest 與下載。
  5. 公開目錄 — 很小的 JSON 列表,不是封存。
  6. 腳本檔上傳——兩條路由。POST /tasks/{task_id}/script-uploads(multipart file,一個 UTF-8 文字檔 ≤1 MiB,owner-manager)在版本還沒建立時就先驗證檔案,回一個 24 小時可重用的 handle,建立/修改版本時當 startup_script_id/work_script_id 帶入——建版本表單走的就是這條。POST /tasks/{task_id}/versions/{vid}/script-file?target=startup|work(同樣的檔案規則,只限草稿)直接寫進既有草稿;語意等同用字串 PATCH startup_script/work_script。

建立版本時單獨送 source_digest 是重試/測試逃生門,而且該 digest 必須已經對應一個完成的 context 物件。新的產品 UI 應該先上傳,再送 owned_object_id。

租戶面的 OpenAPI 雙 tag:總 tag Module: Sandbox 加上分區 Module: Sandbox - Settings/Environments/Tasks/Bindings/Secrets/Runs。

沒有 streaming

租戶面沒有 WebSocket/SSE/StreamingResponse。建置與執行進度用輪詢。見 狀態機。

Last updated on