Agent Runtime 挂载文件系统 COSFS

Agent 沙箱服务(AGS)提供了与腾讯云对象存储(COS)的无缝集成能力。通过挂载功能,可以以将 COS 存储桶的指定路径映射为沙箱内的本地文件目录,使 Agent 能够像操作本地文件一样读写云端数据,实现数据的持久化保存、多实例共享及跨任务流转。

相关产品
Agent Runtime 产品页,含版本规格、价格与购买入口。

一、跨实例文件共享场景

Agent 沙箱服务支持同一沙箱工具下的所有实例挂载相同的 COS 路径,以满足数据与文件持久化存储和共享的需求。

二、跨实例文件隔离场景

Agent 通常需要为每个用户的会话(Session)分配独立的沙箱执行环境。在此场景中,数据安全与隐私是首要挑战。当多个用户并发使用同一 Agent 沙箱工具时,必须确保不同用户间完全隔离:用户 A 绝不能访问到用户 B 的代码或数据。因此可通过配置 subpath 的方式实现不同用户间的数据隔离。

三、操作步骤

以下步骤仅描述文件系统相关配置。

四、步骤1:为沙箱工具配置 CAM 角色

为了保障不同的沙箱工具具备不同的 COS 存储桶权限,沙箱服务需要你为每个沙箱工具配置允许其访问 COS 的权限,即自定义角色。

1. 新建沙箱工具,操作步骤请参见 创建沙箱工具。

2. 新建 CAM 角色。

2.1 进入 访问管理控制台 > 角色。

2.2 单击新建角色,选择腾讯云产品服务。

2.3 在新建自定义角色页面,产品服务选择 Agent 沙箱服务 (ags),可选择的使用案例选择 Agent 沙箱服务。单击下一步。

2.4 选择你需要的 COS 策略,并完成新建。

3. 在新建沙箱工具步骤中,配置 CAM 角色,配置你创建的 CAM 角色。

五、步骤2:为沙箱工具配置 COS 配置

参数名称 是否必填 参数说明
名称 是 该字段用于定义 COS 存储桶路径与沙箱本地路径的挂载映射关系。在跨实例文件隔离场景下,该字段将作为沙箱实例创建时的关键配置项,用于指定实例级别的存储挂载。
存储桶名称 是 COS 存储桶实例名称,可下拉选择。
存储路径 是 COS 存储桶下的指定路径。
挂载路径 是 沙箱本地挂载点路径。
读写权限 是 挂载读写权限。

六、步骤3:创建沙箱实例

沙箱实例默认继承沙箱工具的挂载配置,同时也可以在创建时声明 MountOptions 来覆盖沙箱工具的部分配置。

注意:1. 未使用 MountOptions 覆盖挂载配置的实例,则集成沙箱工具上配置的参数进行挂载。

注意:2. 挂载读写权限 ReadOnly 仅支持使用 true 覆盖 false,即沙箱实例不得声明高于沙箱工具中定义的读写权限。

七、腾讯云 SDK

创建实例时,可以通过 MountOptions 修改沙箱工具指定的 COS 挂载配置。其中 SubPath 为新增字段,对于 cosfilesystem1 中定义的存储路径,可通过 SubPath 字段进行路径追加,从而达到同一个沙箱工具中不同实例挂载到不同 COS 子路径的目的,常用于跨实例文件隔离的场景。

字段名 类型 是否必填 说明 示例
Name *string 是 匹配工具预定义的 StorageMount 名称。 "cosfilesystem1"
MountPath *string 否 覆写工具默认的本地挂载路径。 "/workspace/data", "/mnt/data"
ReadOnly *bool 否 覆写挂载权限,true 表示只读挂载。 true, false
SubPath *string 否 子目录隔离,实现实例级别的目录隔离。 "user-123", "project-alpha"

// 实例化一个请求对象,每个接口都会对应一个request对象// request := ags.NewStartSandboxInstanceRequest()…request.MountOptions = []*ags.MountOption { &ags.MountOption { Name: common.StringPtr("cosfilesystem1"), MountPath: common.StringPtr("/mnt/data"), SubPath: common.StringPtr("user-123"), ReadOnly: common.BoolPtr(true), },}…// 返回的resp是一个StartSandboxInstanceResponse的实例,与请求对象对应// response, err := client.StartSandboxInstance(request)

八、E2B SDK

E2B 原生不支持 MountOptions 字段,AGS 可以支持 E2B SDK 通过 metadata["x-mounts"] 传递 JSON 格式的挂载配置:

字段名 类型 是否必填 说明 示例
name string 是 匹配工具预定义的 StorageMount 名称。 "cosfilesystem1"
mountPath string 否 覆写工具默认的本地挂载路径。 "/workspace/data", "/mnt/data"
readOnly string 否 覆写挂载权限,true 表示只读挂载。 true, false
subPath string 否 子目录隔离,实现实例级别的目录隔离。 "user-123", "project-alpha"

注意:E2B SDK 中的metadata["x-mounts"]中,所有字段名为小驼峰(camelCase)风格,而腾讯云 SDK 为大驼峰(PascalCase)风格。

# 创建沙箱实例,配置subpathfrom e2b import Sandboximport jsonsandbox = Sandbox.create( template="my-template", metadata={ "x-mounts": json.dumps([ { "name": "cosfilesystem1", # 必需:匹配工具配置的存储名称 "mountPath": "/workspace/data", # 可选:自定义挂载路径 "readOnly": False, # 可选:读写权限 "subPath": "user-123" # 可选:子目录隔离 }, { "name": "cosfilesystem2", # 只指定必需字段 "mountPath": "/mnt/data" # 自定义日志路径 }, { "name": "cosfilesystem3", # 只读挂载 "readOnly": True # 只读权限 } ]) })

赞 (0)
上一篇 4天前
下一篇 4天前