← Sandbox SDK / sandbox / bridge
Referenční dokumentace HTTP API
Tato stránka dokumentuje všechny trasy, které zpřístupňuje sandbox bridge na stabilní šabloně.
Ověřování
Všechny routes pod /v1/sandbox/* a /v1/openapi.* vyžadují Bearer token:
Authorization: Bearer <SANDBOX_API_KEY>Když SANDBOX_API_KEY není nastaven, autentizace se kvůli pohodlí při lokálním vývoji přeskočí. Před nasazením do produkce vždy nastavte tajnou hodnotu.
Schéma OpenAPI
Bridge poskytuje vlastní dokumentaci API:
| Metoda | Trasa | Popis |
|---|---|---|
GET |
/v1/openapi.json |
Strojově čitelné schéma OpenAPI 3.1. |
GET |
/v1/openapi |
Interaktivní dokumentace v HTML. |
Obě trasy přijímají ověření pomocí hlavičky Bearer nebo ?token= parametr dotazu.
Při lokálním spuštění s npm run dev, otevřete http://localhost:8787/v1/openapi ve vašem prohlížeči a interaktivně prozkoumejte všechny koncové body.
Životní cyklus sandboxu
| Metoda | Trasa | Popis |
|---|---|---|
POST |
/v1/sandbox |
Vytvoří nový sandbox. Vrátí {"id": "<sandbox-id>"}. |
DELETE |
/v1/sandbox/:id |
Zničí kontejner sandboxu. Vrátí 204. |
GET |
/v1/sandbox/:id/running |
Zkontrolujte dostupnost kontejneru. Vrací {"running": true|false}. |
Spouštění příkazů
| Metoda | Trasa | Popis |
|---|---|---|
POST |
/v1/sandbox/:id/exec |
Spustí příkaz. Odpověď je SSE stream (viz níže). |
/exec endpoint přijímá tělo požadavku ve formátu JSON:
{
"argv": ["sh", "-lc", "echo hello"],
"timeout_ms": 10000,
"cwd": "/workspace"
}Escapování argv
Každý prvek argv pole je escapováno pomocí ANSI-C $'...' uvozovky, než se spojí do příkazu shellu. Tokeny, které obsahují pouze bezpečné znaky (A-Za-z0-9@%+=:,./-) se předávají beze změny. Všechny ostatní tokeny jsou obaleny do $'...' s escapovanými zpětnými lomítky, jednoduchými uvozovkami, znaky nového řádku, znaky návratu na začátek řádku a tabulátory. Tím se zabraňuje shell injection a zároveň zůstávají zachovány argumenty obsahující mezery, uvozovky nebo speciální znaky.
Formát odpovědi SSE
Odpověď je text/event-stream s následujícími typy událostí:
| Událost | Data | Popis |
|---|---|---|
stdout |
Blok zakódovaný v Base64 | Standardní výstup příkazu. |
stderr |
Blok zakódovaný v Base64 | Standardní chybový výstup příkazu. |
exit |
{"exit_code": N} |
Příkaz dokončen. Terminálová událost. |
error |
{"error": "…", "code": "…"} |
Příkaz selhal. Terminálová událost. |
Operace se soubory
| Metoda | Trasa | Popis |
|---|---|---|
GET |
/v1/sandbox/:id/file/* |
Přečtěte soubor. Vrací nezpracované bajty (application/octet-stream). |
PUT |
/v1/sandbox/:id/file/* |
Zapíše soubor. Tělo požadavku obsahuje surová bajtová data. Vrací {"ok": true}. Maximálně 32 MiB. |
Cesta k souboru je zakódovaná v URL za /file/. Všechny cesty se musí přeložit v rámci /workspace. Pokusy o path traversal (například ../../etc/passwd) jsou odmítnuty.
Perzistence pracovního prostoru
| Metoda | Trasa | Popis |
|---|---|---|
POST |
/v1/sandbox/:id/persist |
Serializujte /workspace do archivu tar. Vrátí surová data tar archivu jako bajty. |
POST |
/v1/sandbox/:id/hydrate |
Naplňte /workspace z tar archivu odeslaného jako tělo požadavku. |
/persist endpoint přijímá volitelný excludes parametr dotazu, seznam relativních cest oddělených čárkami, které se z archivu vyloučí.
/hydrate endpoint přijímá nezpracovaný tar payload o velikosti až 32 MiB.
Připojení bucketů
| Metoda | Trasa | Popis |
|---|---|---|
POST |
/v1/sandbox/:id/mount |
Připojte bucket kompatibilní s S3 jako lokální adresář. |
POST |
/v1/sandbox/:id/unmount |
Odpojte dříve připojený bucket. |
/mount endpoint přijímá tělo požadavku ve formátu JSON. Podporovány jsou dva postupy:
Mounty R2 bindingu
Vynechte endpoint a předejte název R2 bindingu Workeru v bucket:
{
"bucket": "MY_BUCKET",
"mountPath": "/mnt/data",
"options": {
"readOnly": false,
"prefix": "/subdir"
}
}Když options.endpoint je vynechán, bucket znamená název vazby R2 ve Workeru.
Pro explicitní připojení koncového bodu kompatibilního s S3 přidejte endpoint a volitelně credentials:
{
"bucket": "my-r2-bucket",
"mountPath": "/mnt/data",
"options": {
"endpoint": "https://ACCOUNT_ID.r2.cloudflarestorage.com",
"readOnly": false,
"prefix": "/subdir",
"credentials": {
"accessKeyId": "...",
"secretAccessKey": "..."
}
}
}Když endpoint je zadán, bucket znamená název vzdáleného bucketu. Přihlašovací údaje jsou volitelné pouze v tomto režimu: bridge je automaticky rozpozná ze secrets Workeru (R2_ACCESS_KEY_ID / R2_SECRET_ACCESS_KEY nebo AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY) pokud není uvedeno.
Relace
| Metoda | Trasa | Popis |
|---|---|---|
POST |
/v1/sandbox/:id/session |
Vytvoří relaci. Vrátí {"id": "<session-id>"}. |
DELETE |
/v1/sandbox/:id/session/:sid |
Odstraní relaci. Vrací 204. |
Relace v rámci sandboxu izolují pracovní adresář, proměnné prostředí a stav spouštění příkazů. Předejte Session-Id hlavičku na /exec, /file/*, a /pty požadavky, aby byly omezeny na danou relaci.
Pokud není Session-Id hlavička je poskytnuta, požadavky používají implicitní režim provádění sandboxu. Ve výchozím nastavení jde o výchozí relaci, ale SDK nakonfigurovaná s enableDefaultSession: false tyto implicitní operace spouštějte místo toho bez relace.
Terminál (PTY)
| Metoda | Trasa | Popis |
|---|---|---|
GET |
/v1/sandbox/:id/pty |
Přechod na relaci PTY přes WebSocket. |
Parametry dotazu:
| Parametr | Typ | Výchozí | Popis |
|---|---|---|---|
cols |
number | 80 |
Šířka terminálu ve sloupcích. |
rows |
number | 24 |
Výška terminálu v řádcích. |
shell |
string | , | Binární soubor shellu (například /bin/bash). |
session |
string | , | ID relace pro PTY vázané na relaci. |
WebSocket přenáší binární rámce pro vstup a výstup terminálu a textové rámce JSON pro řídicí zprávy:
| Směr | Typ rámce | Obsah |
|---|---|---|
| Klient na server | Binární | Stisky kláves kódované v UTF-8. |
| Ze serveru ke klientovi | Binární | Výstup terminálu včetně únikových sekvencí ANSI. |
| Klient na server | Text (JSON) | Řídicí zprávy (například {"type": "resize", "cols": 120, "rows": 30}). |
| Ze serveru ke klientovi | Text (JSON) | Stavové zprávy (ready, exit, error). |
Zahřátý fond
| Metoda | Trasa | Popis |
|---|---|---|
GET |
/v1/pool/stats |
Aktuální statistiky poolu. |
POST |
/v1/pool/prime |
Spusťte smyčku alarmu pro warm pool. |
POST |
/v1/pool/shutdown-prewarmed |
Zastavte všechny nečinné warm kontejnery. |
Warm pool předem spouští kontejnery sandboxu, takže nové relace naběhnou okamžitě. Nakonfigurujete ho pomocí proměnných prostředí v wrangler.jsonc:
{
"$schema": "./node_modules/wrangler/config-schema.json",
"vars": {
"WARM_POOL_TARGET": "3",
"WARM_POOL_REFRESH_INTERVAL": "10000"
}
}[vars]
WARM_POOL_TARGET = "3" # Number of idle containers to keep warm (0 = disabled)
WARM_POOL_REFRESH_INTERVAL = "10000" # Health-check interval in millisecondsCron trigger (* * * * *) po nasazení automaticky předehřeje fond. Nastavte WARM_POOL_TARGET na "0" (výchozí hodnota), aby se fond deaktivoval a předešlo se neočekávaným nákladům.
Kontrola stavu
| Metoda | Trasa | Popis |
|---|---|---|
GET |
/health |
Neautentizovaná kontrola stavu (liveness probe). Vrací {"ok": true}. |
Související zdroje
- Přehled Bridge : Co je bridge, jeho nasazení a příklady použití.
- Referenční dokumentace Sandbox API : Úplná referenční dokumentace metod Sandbox SDK.
- Zdrojový kód Bridge na GitHubu ↗ : Worker, Dockerfile a schéma OpenAPI.