创建沙箱函数(模板)

更新时间:
复制 MD 格式

当 AI Agent 需要执行不可信代码或操作浏览器时,直接在宿主系统运行存在安全风险。沙箱函数提供有状态的安全隔离执行环境,每个会话独占一个函数实例,支持代码解释器、浏览器自动化等场景。本文介绍如何通过函数计算控制台创建沙箱函数。

准备工作

重要

沙箱函数仅在部分地域可用,具体支持地域查看沙箱函数使用约束。如果当前地域不支持,控制台的函数类型选择区域不会显示沙箱函数选项卡。

必要准备

  1. 开通函数计算服务:登录函数计算控制台完成服务开通。

  2. 服务关联角色(SLR):沙箱函数底层使用阿里云服务关联角色 AliyunServiceRoleForFC(角色名 aliyunserviceroleforfc)创建 FC 函数和 Session。该角色由函数计算自动创建和管理,通常无需手动操作。

  3. RAM 权限:确保当前用户或角色拥有创建和管理沙箱函数的必要权限。

按需准备(自定义配置时)

  • VPC 配置(挂载 NAS 或 PolarFS时必须):提前准备专有网络 ID(vpcId)、安全组 ID(securityGroupId)和交换机 ID(vSwitchIds)。

  • 执行角色 ARN(挂载 OSS 时必须):提前创建 RAM 角色并获取角色 ARN。

  • 容器镜像服务(ACR)访问权限(使用自定义镜像时必须):确保已获取 ACR 仓库访问权限。

快速开始

全部使用默认配置(Code Interpreter 镜像、2 vCPU / 4096 MB/ 512 MB 磁盘、Cookie 会话亲和)。

  1. 登录函数计算控制台,在顶部导航栏选择支持沙箱函数的地域(如华东 1(杭州))。

  2. 在左侧导航栏选择函数管理 > 函数列表,单击创建函数

  3. 在弹出的函数类型选择窗口中,单击沙箱函数选项卡,然后单击底部的创建沙箱函数按钮。

  4. 在镜像配置区域,默认已选中 Code Interpreter 预置镜像。如需同时使用代码执行和浏览器自动化能力,可切换为 All-in-One 镜像。

  5. 输入函数名称(如 my-first-sandbox),其他配置保持默认值。

  6. 单击创建,等待函数创建完成。

  7. 创建成功后,系统自动跳转到函数详情页。单击会话管理页签,单击创建会话,等待会话状态变为 Active

  8. 在会话详情页的内置终端中执行以下命令验证沙箱函数是否正常运行:

    echo 'Hello, FC Sandbox!'
    python3 -c "print(1 + 1)"

预期输出:

Hello, FC Sandbox!
2

如需自定义配置,参见操作步骤(完整配置)

操作步骤(完整配置)

步骤一:选择函数类型并填写基本信息

  1. 登录函数计算控制台

  2. 在左侧导航栏选择函数管理 > 函数列表,单击创建函数

  3. 在弹出的函数类型选择窗口中,单击沙箱函数选项卡,然后单击底部的创建沙箱函数按钮。

  4. 输入函数名称(必填):1~64 字符,字母或下划线开头,支持字母、数字、下划线、短划线。创建后不可修改。

选择沙箱函数类型后,系统自动设置以下参数(不可修改,控制台中不显示):

参数

自动设置值

说明

运行时

自定义容器(Custom Container)

沙箱函数固定使用容器镜像运行

实例隔离模式

会话独占(SESSION_EXCLUSIVE)

每个会话独占一个函数实例

实例并发度(instanceConcurrency)

200

单实例最大并发请求数

会话并发度(sessionConcurrencyPerInstance)

1

每个实例同时只服务 1 个会话

步骤二:配置实例规格

弹性伸缩与实例规格面板中配置沙箱实例的资源规格。沙箱函数对实例规格有最低要求,低于最低值时控制台会阻止提交。

配置项

默认值

最低要求

可选值

说明

CPU

2 vCPU

2 vCPU

按规格选择

沙箱函数的 CPU 核数,不可低于 2 核

内存

4096 MB(4 GB)

4096 MB

按规格选择

沙箱函数的内存大小,不可低于 4096 MB

磁盘大小

512MB

512 MB、10240 MB

沙箱场景建议选择 10240 MB 以获得充足的临时存储空间

说明

同一面板还包含弹性伸缩策略配置,可设置预留实例数和定时伸缩规则。

步骤三:配置容器镜像

代码配置面板中选择镜像来源。支持以下镜像来源:示例镜像、ACR 个人版镜像、ACR 企业版镜像、其他公有镜像、自定义镜像仓库。默认选择「示例镜像」。

控制台提供以下预置沙箱镜像(默认选中 Code Interpreter):

镜像名称

镜像地址

默认端口

说明

Code Interpreter Sandbox 代码沙箱

serverless-registry.cn-hangzhou.cr.aliyuncs.com/functionai/sandbox-code-interpreter:v0.9.30

5000

支持 Python / Node.js 代码执行,适合 AI Agent 代码沙箱、数据分析等场景

Browser Tool Sandbox 浏览器工具沙箱

serverless-registry.cn-hangzhou.cr.aliyuncs.com/functionai/sandbox-browser-tool:v0.9.30

3000

浏览器自动化环境,适合网页抓取、截图、页面操作等场景

All-in-One Sandbox 一体化沙箱

serverless-registry.cn-hangzhou.cr.aliyuncs.com/functionai/sandbox-all-in-one:v0.9.30

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 字段标识会话。支持的亲和类型:

亲和类型

说明

Header 字段亲和

通过自定义 HTTP Header 实现会话亲和。需配置 Header Name:以字母开头,支持字母、数字、下划线、短划线,5~40 字符,不能以 x-fc- 开头。适合 API 调用、SDK 集成等服务端场景。

会话生命周期配置

配置项

默认值

取值范围

说明

单个 Session 生命周期sessionTTLInSeconds

86400 秒(24 小时)

60~86400 秒

Session 的最大存活时间。超过此时间后,会话及其绑定的实例将被自动回收。

Session idle 时长sessionIdleTimeoutInSeconds

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 同时挂载时,UserIDGroupID 必须一致。

  • 跨挂载类型的 mountDir 不能重复。

可观测性

  • 日志配置:配置日志服务以采集函数运行日志。默认开启自动日志采集。

  • 链路追踪:配置链路追踪以监控函数调用链路。

其他配置

  • 资源组:选择资源组以便分组管理和权限控制。

  • 标签:为函数添加标签以便分类管理。

  • 时区:设置函数运行的时区,默认 UTC。

  • 环境变量:配置键值对环境变量,在函数运行时通过环境变量读取。

  • 闲置超时:设置实例空闲回收时间。

步骤六:完成创建

确认所有配置无误后,单击创建。创建成功后,系统自动跳转至函数详情页。

配额与限制

限制项

约束

实例隔离模式

固定为 SESSION_EXCLUSIVE,不可修改

实例并发度

固定为 200,不可修改

会话并发度

固定为 1,不可修改

存储挂载数

每种存储类型最多 5 个挂载点,mountDir 不可重复

函数名称

1~64 字符,字母或下划线开头

超时时间

1~86400 秒

Session 生命周期

60~86400 秒

Session idle 时长

60 秒~Session 生命周期