You need to enable JavaScript to run this app.
文档中心
函数服务

函数服务

复制全文
下载 pdf
沙箱实例
沙箱实例挂载 EFS 持久化存储
复制全文
下载 pdf
沙箱实例挂载 EFS 持久化存储
沙箱实例挂载弹性文件存储(Elastic File Storage,简称 EFS)后,可以持久保存 AI Agent 工作区、代码执行任务的中间产物和执行结果,并支持多个沙箱实例共享访问同一份数据。沙箱实例删除后,EFS 中的数据仍然保留,新建实例重新挂载后可以继续使用。本文为您介绍如何为沙箱实例挂载 EFS 存储。​
说明​
  • 云沙箱实例挂载 EFS 存储和 EFS Filespace 功能目前处于邀测阶段。使用该功能前,需要联系您的客户经理申请试用权限。​
  • 当前仅 华北 2(北京)和 华东 2(上海)支持云沙箱实例挂载 EFS 存储功能。​
前提条件​
已联系您的客户经理申请云沙箱 EFS Filespace 功能开白,并在开白申请中同步申请 EFS Workspace ID 等信息。​
挂载 EFS 存储​
步骤一:创建 EFS Filespace​
EFS Filespace 是 EFS 中用于存储和管理文件的逻辑存储空间。创建后,可将其挂载到沙箱实例,为沙箱提供持久化文件存储能力。​
通过 EFS Python SDK 创建 Filespace,Filespace 的状态 Status 为 Running,并且 MountInfos 至少返回一个 MountTarget,即表示创建成功。​
记录返回的 filespace_id ,后续查询 Filespace 状态时需要使用。​
​
import uuid​
import volcenginesdkcore​
import volcenginesdkefs​
​
cfg = volcenginesdkcore.Configuration()​
cfg.ak = "<access-key>"​
cfg.sk = "<secret-key>"​
cfg.region = "cn-beijing"​
cfg.host = "efs.cn-beijing.volcengineapi.com"​
​
api = volcenginesdkefs.EFSApi(volcenginesdkcore.ApiClient(cfg))​
req = volcenginesdkefs.SyncCreateFilespaceRequest(​
workspace_id="<workspace-id>",​
filespace_name="sandbox-filespace",​
client_token=str(uuid.uuid4()),​
)​
resp = api.sync_create_filespace(req)​
filespace = resp.filespace​
print(filespace.filespace_id)​
print([item.mount_target for item in filespace.mount_infos])​
​
​
参数​
说明​
cfg.ak​
火山引擎账号的 Access Key ID,用于调用 EFS OpenAPI。​
cfg.sk​
火山引擎账号的 Secret Access Key,需要与 cfg.ak 配套使用。​
cfg.region​
请求地域,需要与目标 EFS Workspace 和云沙箱所在地域一致,当前仅支持华北 2(北京)cn-beijing 和华东 2(上海)cn-shanghai。​
cfg.host​
火山引擎 OpenAPI 访问域名,具体的地址参见 服务地址。​
workspace_id​
目标 EFS Workspace 的 ID。申请邀测功能时,由 EFS 产品侧一并提供。​
filespace_name​
自定义 Filespace 的名称。​
​
步骤二:查询 Filespace 属性​
通过 EFS Python SDK 查询 Filespace 的属性,获取 FilespaceId、MountTarget 和 ZoneId,后续创建沙箱时需要使用这些信息。​
​
req = volcenginesdkefs.DescribeFilespaceAttributeRequest(​
workspace_id="<workspace-id>",​
filespace_id="<filespace-id>",​
)​
resp = api.describe_filespace_attribute(req)​
assert resp.filespace.status == "Running"​
mount_target = resp.filespace.mount_infos[0].mount_target​
zone_id = resp.filespace.zone_id​
​
​
参数​
用途和取值​
workspace_id​
目标 EFS Workspace 的 ID,需要与创建 Filespace 时使用的 Workspace ID 保持一致。​
filespace_id​
需要查询的 Filespace ID,步骤一中创建 Filespace 完成后可获取。​
​
步骤三:创建带 EFS 的沙箱​
通过 CreateSandbox 创建挂载 EFS 的沙箱实例,并获取 SandboxId。调用 DescribeSandbox,沙箱状态 Status 为 Ready,并回显对应的 InstanceEfsMountConfig 即表示创建成功。​
​
{​
"FunctionId": "<sandbox-app-id>",​
"Timeout": 30,​
"TimeoutUnit": "minute",​
"InstanceEfsMountConfig": {​
"MountPoints": [​
{​
"LocalMountPath": "/mnt/efs-data/",​
"ReadOnly": false,​
"Backend": {​
"MountTarget": "<mount-target>",​
"ZoneId": "cn-beijing-a"​
}​
}​
]​
}​
}​
​
​
参数​
用途和取值​
FunctionId​
云沙箱应用 ID,从步骤二的返回信息中获取。​
Timeout​
沙箱超时时间。​
TimeoutUnit​
超时时间单位。​
LocalMountPath​
沙箱实例内的本地目录路径,系统会将指定的弹性文件存储(EFS)服务端远端目录映射至该路径,实例进程可通过该路径访问对应 EFS 存储资源的内容。​
ReadOnly​
弹性文件存储(EFS)挂载点在沙箱实例本地目录的访问权限,取值如下: ​
  • true:本地目录为只读权限,实例仅可读取对应 EFS 存储内的文件数据,无法执行写入、修改、删除操作。 ​
  • false:本地目录为读写权限,实例可正常对对应 EFS 存储内的文件执行各类操作。​
MountTarget​
Filespace 的挂载接入点,从步骤二的返回信息中获取。单个沙箱实例最多配置 10 个 EFS Filespace。​
ZoneId​
Filespace 所在可用区,需要与云沙箱 VPC 子网覆盖范围一致,从步骤二的返回信息中获取。​
​
暂停并恢复沙箱​
步骤一:暂停沙箱​
调用 PauseSandbox 暂停沙箱实例。返回信息中 DescribeSandbox.Status 为 Paused,并且 DescribeSandbox.PausedSnapshotInfo.SnapshotType 为 disk 表示暂停成功。​
说明​
已挂载 EFS 的沙箱执行暂停操作时,仅支持使用磁盘快照保存实例状态。调用 PauseSandbox 时,必须将 Type 设置为 disk。​
​
{​
"FunctionId": "<sandbox-app-id>",​
"SandboxId": "<sandbox-id>",​
"Type": "disk"​
}​
​
​
参数​
用途和取值​
FunctionId​
云沙箱应用 ID。​
SandboxId​
需要暂停的沙箱 ID。​
Type​
带 EFS 的沙箱必须设置为 disk。​
​
步骤二:恢复沙箱​
调用 ResumeSandbox 恢复沙箱实例。沙箱状态 Status 恢复为 Ready 即恢复成功。恢复沙箱后,系统会重新挂载原 EFS Filespace。​
​
{​
"FunctionId": "<sandbox-app-id>",​
"SandboxId": "<sandbox-id>",​
"Timeout": 30,​
"TimeoutUnit": "minute"​
}​
​
​
参数​
用途和取值​
FunctionId​
云沙箱应用 ID。​
SandboxId​
需要恢复的沙箱 ID。​
Timeout​
等待沙箱恢复的超时时间。​
TimeoutUnit​
超时时间单位。​
​
​
最近更新时间:2026.11.02 20:07:01
这个页面对您有帮助吗?
有用
有用
无用
无用