Azure 容器應用程式 沙箱概觀

Azure 容器應用程式 沙盒提供快速、安全且短暫的運算環境,內建暫停與恢復功能。 沙盒是容器應用程式中一流的資源類型(Microsoft.App/SandboxGroups),與應用程式、工作及動態會話並列。

Important

若要管理及建立沙盒,您需要 Azure 角色 Container Apps SandboxGroup Data Owner。 將此角色指派給所有建立和管理沙盒的使用者。

建立並管理沙盒環境

你可以在 Sandboxes 入口網站建立和管理沙盒,或透過程式化使用 Azure 容器應用程式 CLI 或 SDK。

容器應用程式沙盒的主要特徵

  • 亞秒級啟動:沙箱從預熱集區佈建,以提供近乎即時的可用性。

  • 高度隔離:每個沙盒都在各自獨立的安全邊界內運作,可安全地執行不受信任的程式碼。

  • 縮放到零:停止沙盒時,你不支付 CPU 或記憶體費用。

  • 擴展:服務可視需要同時運行數千個沙箱。

  • OCI 容器映像支援:使用附帶的公開映像檔,或自帶容器映像檔作為沙盒根檔案系統。

  • 暫停與恢復:擷取包含記憶體與磁碟在內的完整狀態快照,並可稍後在不到一秒內恢復。

  • 生命週期控制:您可以管理完整的沙盒生命週期,包括狀態快照、持久儲存,以及網路政策(包括出口與入口)。

何時使用沙盒

當你需要有明確生命週期控制、持久狀態或透過 SDK 可程式存取的隔離運算環境時,可以使用沙盒。

劇本 要使用沙盒嗎? 原因為何
具備狀態保留的 AI 程式碼執行 Yes 在任務之間暫停,恢復時完整保留上下文
開發環境 Yes 隨需啟用、可暫停且可跨工作階段保留狀態的環境
代理工作流程 Yes 讓 AI 代理在任務邊界間擁有持久且隔離的工作空間
互動式使用者工作階段 Yes 每個使用者都有自己獨立的運算環境
安全多租戶運算 Yes 可針對多個租用戶執行不受信任工作負載的強式隔離
突發工作負載 Yes 依需求將沙盒數量從零擴展至數千個
CI/CD 管線 Yes 閒置時可縮減至零的臨時建置與測試環境

選擇合適的容器應用程式計算選項

請使用以下表格選擇適合您工作負載的容器應用運算類型。

計算類型 最適合用於 Lifecycle State
應用程式 長期服務、API、網頁應用程式 連續 無狀態(外部狀態儲存)
工作 執行至完成的任務、批次處理 開始→跑→完成 無狀態
動態會議 受控程式碼執行,LLM 生成的指令碼 由工作階段集區管理 暫時
沙箱 具備生命週期控制的可程式隔離計算 你管理:建立、暫停、繼續、刪除 具狀態 (快照集、磁碟區)

關鍵概念

先決條件

要建立或管理沙盒,你需要Azure角色指派容器應用程式 沙箱群組資料擁有者。 沒有這個角色,你無法執行沙盒操作。 在 Azure 入口網站或使用 Azure CLI 中,指定此角色於所需範圍(Azure 訂閱或 Azure 資源群組)。

在執行以下指令前,先用你自己的值替換周圍的 <> 佔位符。

az role assignment create \
  --assignee "<USER_EMAIL_OR_OBJECT_ID>" \
  --role "Container Apps SandboxGroup Data Owner" \
  --scope "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>"

沙箱群組

沙盒群組是沙盒的最高層級管理界線。 它是 Azure Resource Manager(ARM)資源,你可以在資源群組和區域中建立。 所有沙盒、磁碟映像檔、快照、磁碟區和密鑰的範圍皆限定於某個沙盒群組。

使用沙盒群組來依應用程式、團隊或環境組織沙盒。

沙箱

沙盒是沙盒群組中一個獨立的計算實例。 每個沙箱都會從磁碟映像或快照集執行,並有自己的 CPU、記憶體、磁碟和網路界限。

你透過執行指令、管理檔案、開放埠口以及控制生命週期狀態來與沙盒互動。

磁碟映像檔

磁碟映像是轉換為沙箱根檔案系統使用的 OCI 容器映像。 你可以使用公開圖片,或從自己的容器登錄檔建立私人圖片。

你可以從以下方式建立磁碟映像檔:

  • 公開映像檔:所有沙盒群組皆可使用預建映像檔。
  • 容器登錄映像:可從公開或私人登錄檔拉取,並可選擇性認證。

Snapshots

快照捕捉運行中的沙盒完整狀態,包括記憶體與磁碟。 使用快照來:

  • 暫停並繼續:暫停沙盒,稍後恢復,所有程序和資料都保持完整。
  • 複製環境:從已知良好狀態建立新沙箱。
  • 分享基準:將預先設定的環境分散在團隊各處。

Volumes

Microsoft 會管理磁碟區,並提供可掛接至沙箱的持續性儲存體。 有兩種音量類型可供選擇:

磁碟區類型 Description
Azure Blob 跨多個沙盒(上傳與下載、持續存在的產物)共享資料。 可同時掛載到多個沙盒中。
資料磁碟 適用於資料庫、組建快取和大型工作集的高效能磁碟區。 同一時間只能掛載至一個沙盒。

生命週期狀態

沙盒會經歷以下幾個狀態:

State Description
Running 主動執行,使用 CPU 與記憶體
已停止 被使用者、API 或生命週期政策所阻止

當沙盒停止時,操作會根據暫停模式(見下節)擷取並保留快照。

你可以為每個沙箱設定生命週期政策:

  • 自動暫停:在可設定的逾時時間後,暫停閒置的沙箱。 當沙盒沒有入口(進入)流量、沒有程式碼執行(透過執行 API)、沒有互動式 shell 會話,也沒有檔案操作時,就會進入閒置狀態。
  • 暫停模式:可選擇記憶體模式(完整快照-磁碟+記憶體)或磁碟模式(僅保留磁碟)。
  • 自動刪除:在沙盒停止後指定天數後自動刪除沙盒。

Architecture

沙盒採用雙平面架構:

飛機 終點 Operations
ARM 控制平面 management.azure.com 建立、更新、刪除及列出沙盒群組。 管理 VNet 連線。
資料平面 management.azuredevcompute.io 管理沙盒、磁碟映像檔、快照、檔案、磁碟區、機密、連接埠及輸出政策。

你可以透過 ARM 控制平面建立和管理沙盒群組。 所有對個別沙盒及其資源的操作都會經過 ACA 沙盒資料平面,該資料平面被限定在特定的沙盒群組下。

資源層級

每個沙盒都會被分配一個資源層級,檢查其 CPU、記憶體和磁碟的配置。

Tier CPU Memory 磁碟
XS 0.25 核心 0.5 GB 20 GB
S 0.5 個核心 1 GB 20 GB
M(預設) 1 核心 2 GB 20 GB
L 2 個核心 4 GB 40 GB
XL 4 個核心 8 GB 80 GB

考慮事項

在使用沙盒時請考慮以下幾點:

  • Entra ID required:只有Microsoft Entra ID帳號能存取沙盒。 個人 Microsoft 帳號不被支援。
  • 網路控制:你可以設定出口政策來控制沙盒的出站流量,包括基於網域的允許或拒絕規則、基於 CIDR 的網路規則,以及 VNet 整合。

沙盒與動態會議

沙盒與 動態會話 都提供容器應用中獨立的計算環境,但它們滿足不同需求。

動態工作階段 沙箱
存取模式 透過工作階段集區管理端點進行 HTTP 要求路由 直接使用 SDK 與 CLI 控制個別沙盒
狀態 短暫,冷卻後被摧毀 具狀態並支援暫停、繼續和快照集
開發商控制 集區管理配置和生命週期 你管理沙盒生命週期、檔案、埠口和政策
影像模型 內建的程式碼直譯器或自訂容器 磁碟映像檔(OCI)、快照、內容套件
持久性儲存 無法提供 磁碟區 (Azure Blob、資料磁碟)
網路 基本隔離 出口策略、VNet 整合、埠管理
SDK 透過集區端點存取的 REST API Python SDK (azure-containerapps-sandbox) 與 REST API

當你需要可抽象化基礎架構的受管理執行環境時,請選擇動態會話。 當你需要對具有狀態持久性的隔離運算進行可程式化控制時,請選擇沙盒。