當 AI Agent 需要執行不可信代碼或操作瀏覽器時,直接在宿主系統運行存在安全風險。沙箱函數提供有狀態的安全隔離執行環境,每個會話獨佔一個函數執行個體,支援代碼解譯器、瀏覽器自動化等情境。本文介紹如何通過Function Compute控制台建立沙箱函數。
準備工作
沙箱函數僅在部分地區可用,具體支援地區查看沙箱函數使用約束。如果當前地區不支援,控制台的函數類型選擇地區不會顯示沙箱函数選項卡。
必要準備
開通Function Compute服務:登入Function Compute控制台完成服務開通。
服務關聯角色(SLR):沙箱函數底層使用阿里雲服務關聯角色
AliyunServiceRoleForFC(角色名稱aliyunserviceroleforfc)建立 FC 函數和 Session。該角色由Function Compute自動建立和管理,通常無需手動操作。RAM 許可權:確保目前使用者或角色擁有建立和管理沙箱函數的必要許可權。
按需準備(自訂配置時)
VPC 配置(掛載 NAS 或 PolarFS時必須):提前準備專用網路 ID(vpcId)、安全性群組 ID(securityGroupId)和交換器 ID(vSwitchIds)。
執行角色 ARN(掛載 OSS 時必須):提前建立 RAM 角色並擷取角色 ARN。
Container Registry(ACR)存取權限(使用自訂鏡像時必須):確保已擷取 ACR 倉庫存取權限。
快速開始
全部使用預設配置(Code Interpreter 鏡像、2 vCPU / 4096 MB/ 512 MB 磁碟、Cookie 會話親和)。
登入Function Compute控制台,在頂部導覽列選擇支援沙箱函數的地區(如華東 1(杭州))。
在左側導覽列選擇函數管理 > 函數列表,單擊建立函數。
在彈出的函數類型選擇視窗中,單擊沙箱函數選項卡,然後單擊底部的建立沙箱函數按鈕。
在鏡像配置地區,預設已選中 Code Interpreter 預置鏡像。如需同時使用代碼執行和瀏覽器自動化能力,可切換為 All-in-One 鏡像。
輸入函數名稱(如
my-first-sandbox),其他配置保持預設值。單擊建立,等待函數建立完成。
建立成功後,系統自動跳轉到函數詳情頁。單擊會話管理頁簽,單擊建立會話,等待工作階段狀態變為 Active。
在會話詳情頁的內建終端中執行以下命令驗證沙箱函數是否正常運行:
echo 'Hello, FC Sandbox!' python3 -c "print(1 + 1)"
預期輸出:
Hello, FC Sandbox!
2如需自訂配置,參見操作步驟(完整配置)。
操作步驟(完整配置)
步驟一:選擇函數類型並填寫基本資料
在左側導覽列選擇函數管理 > 函數列表,單擊建立函數。
在彈出的函數類型選擇視窗中,單擊沙箱函數選項卡,然後單擊底部的建立沙箱函數按鈕。
輸入函數名稱(必填):1~64 字元,字母或底線開頭,支援字母、數字、底線、短劃線。建立後不可修改。
選擇沙箱函數類型後,系統自動化佈建以下參數(不可修改,控制台中不顯示):
參數 | 自動化佈建值 | 說明 |
運行時 | 自訂容器(Custom Container) | 沙箱函數固定使用容器鏡像運行 |
執行個體隔離模式 | 會話獨佔(SESSION_EXCLUSIVE) | 每個會話獨佔一個函數執行個體 |
執行個體並發度(instanceConcurrency) | 200 | 單一實例最大並發請求數 |
會話並發度(sessionConcurrencyPerInstance) | 1 | 每個執行個體同時只服務 1 個會話 |
步驟二:配置執行個體規格
在Auto Scaling與執行個體規格面板中配置沙箱執行個體的資源規格。沙箱函數對執行個體規格有最低要求,低於最低值時控制台會阻止提交。
配置項 | 預設值 | 最低要求 | 可選值 | 說明 |
CPU | 2 vCPU | 2 vCPU | 按規格選擇 | 沙箱函數的 CPU 核心數,不可低於 2 核 |
記憶體 | 4096 MB(4 GB) | 4096 MB | 按規格選擇 | 沙箱函數的記憶體大小,不可低於 4096 MB |
磁碟大小 | 512MB | — | 512 MB、10240 MB | 沙箱情境建議選擇 10240 MB 以獲得充足的臨時儲存空間 |
同一面板還包含Auto Scaling策略配置,可設定預留執行個體數和定時伸縮規則。
步驟三:配置容器鏡像
在代碼配置面板中選擇鏡像來源。支援以下鏡像來源:樣本鏡像、ACR 個人版鏡像、ACR 企業版鏡像、其他公有鏡像、自訂鏡像倉庫。預設選擇「樣本鏡像」。
控制台提供以下預置沙箱鏡像(預設選中 Code Interpreter):
鏡像名稱 | 鏡像地址 | 預設連接埠 | 說明 |
Code Interpreter Sandbox 代码沙箱 |
| 5000 | 支援 Python / Node.js 代碼執行,適合 AI Agent 代碼沙箱、資料分析等情境 |
Browser Tool Sandbox 浏览器工具沙箱 |
| 3000 | 瀏覽器自動化環境,適合網頁抓取、截圖、頁面操作等情境 |
All-in-One Sandbox 一体化沙箱 |
| 5000 | 整合代碼解譯器和瀏覽器工具,適合需要多種能力的情境 |
預置鏡像地址根據地區自動選擇:中國內地地區(杭州、上海、北京、深圳)使用 serverless-registry.cn-hangzhou.cr.aliyuncs.com,新加坡和中國香港地區使用 serverless-registry.ap-southeast-1.cr.aliyuncs.com。當前鏡像版本為 v0.9.30。
同一面板還包含逾時時間配置項(預設 60 秒,取值範圍 1~86400 秒),用於設定單次請求的逾時時間,與 Session 生命週期獨立。
鏡像選擇建議:預設選中第一個鏡像(Code Interpreter)。僅需代碼執行能力選 Code Interpreter;僅需瀏覽器自動化選 Browser Tool;兩者都需要或不確定需求選 All-in-One。如需使用自訂沙箱鏡像,可選擇 ACR 或自訂鏡像倉庫作為鏡像來源。
步驟四:配置會話隔離與生命週期
沙箱函數的會話配置位於獨立面板會話隔離與親和中,區別於普通函數的進階配置摺疊面板。
執行個體隔離模式:固定為會話獨佔(SESSION_EXCLUSIVE),不可修改。
会话亲和:沙箱函數強制啟用會話親和,預設為Cookie 亲和(GENERATED_COOKIE)。系統自動產生和管理 Cookie 以標識會話,確保同一會話的請求路由到同一沙箱執行個體。也可選擇HeaderField 亲和(HEADER_FIELD),使用自訂 Header 欄位標識會話。支援的親和類型:
親和類型 | 說明 |
Cookie 親和(預設) | 通過系統產生的 Cookie 實現會話親和,無需額外配置。適合瀏覽器訪問、Web 應用程式等情境。 |
Header 欄位親和 | 通過自訂 HTTP Header 實現會話親和。需配置 Header Name:以字母開頭,支援字母、數字、底線、短劃線,5~40 字元,不能以 |
會話生命週期配置:
配置項 | 預設值 | 取值範圍 | 說明 |
单个 Session 生命周期( | 86400 秒(24 小時) | 60~86400 秒 | Session 的最大存活時間。超過此時間後,會話及其綁定的執行個體將被自動回收。 |
Session idle 时长( | 1800 秒(30 分鐘) | 60 秒 ~ Session 生命週期 | Session 無活動後自動釋放的時間。不可超過 Session 生命週期。 |
步驟五:配置進階選項(可選)
在進階配置面板中,根據需要配置以下選項。
RAM 角色與網路
RAM 角色:選擇函數訪問其他雲資源時使用的角色。
網路設定:配置 VPC 網路以訪問私人網路中的資源。掛載 NAS 或 PolarFS 時必須配置。
儲存掛載
沙箱函數支援掛載以下儲存類型,為沙箱執行個體提供持久化或共用的資料存放區。
儲存類型 | 最大掛載點數 | 前置條件 |
NAS | 5 | VPC 配置 |
OSS | 5 | 執行角色 ARN |
PolarFS | 5 | VPC 配置 |
注意事項:
NAS/PolarFS 掛載需要完整的 VPC 配置。
NAS 與 PolarFS 同時掛載時,
UserID和GroupID必須一致。跨掛載類型的
mountDir不能重複。
可觀測性
日誌配置:配置Log Service以採集函數作業記錄。預設開啟自動日誌採集。
鏈路追蹤:配置鏈路追蹤以監控函數調用鏈路。
其他配置
資源群組:選擇資源群組以便分組管理和許可權控制。
時區:設定函數啟動並執行時區,預設 UTC。
環境變數:配置索引值對環境變數,在函數運行時通過環境變數讀取。
閑置逾時:設定執行個體空閑回收時間。
步驟六:完成建立
確認所有配置無誤後,單擊建立。建立成功後,系統自動跳轉至函數詳情頁。
配額與限制
限制項 | 約束 |
執行個體隔離模式 | 固定為 SESSION_EXCLUSIVE,不可修改 |
執行個體並發度 | 固定為 200,不可修改 |
會話並發度 | 固定為 1,不可修改 |
儲存掛載數 | 每種儲存類型最多 5 個掛載點,mountDir 不可重複 |
函數名稱 | 1~64 字元,字母或底線開頭 |
逾時時間 | 1~86400 秒 |
Session 生命週期 | 60~86400 秒 |
Session idle 時間長度 | 60 秒~Session 生命週期 |