AgenticBucket Volume 保存 AgenticBucket 下 BucketSpace 的挂载配置,供创建 Sandbox 时按名称挂载。
功能介绍
CreateVolume 只创建 Volume 元数据,不会创建 AgenticBucket 或 BucketSpace。AgenticBucket 必须预先创建;BucketSpace 无需预先创建,首次挂载时如果不存在,系统会自动创建。
适用范围
已在智能体沙箱(Agent Sandbox)控制台创建 Team,并获取 Team ID。
已创建 AgenticBucket,并获取 AgenticBucket 完整名称。产品说明和资源管理方式参见OSS Agentic Bucket概述。
已确定要使用的 BucketSpace 完整名称。BucketSpace 无需预先创建。
已获取 AgenticBucket 所在地域的 OSS Endpoint。同地域访问建议使用内网 Endpoint,例如
https://oss-<REGION>-internal.aliyuncs.com。调用 Volume API 的 RAM(Resource Access Management,访问控制)身份具备相应操作权限。授权方法参见授权 RAM 用户访问控制台。
操作步骤
步骤一:配置存储访问权限
为 Volume 中配置的 RAM 角色添加以下权限策略:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"oss:GetObject",
"oss:ListObjects",
"oss:AbortMultipartUpload",
"oss:CompleteMultipartUpload",
"oss:DeleteObject",
"oss:InitiateMultipartUpload",
"oss:ListParts",
"oss:PutObject",
"oss:UploadPart",
"oss:PutBucket"
],
"Resource": "*"
}
]
}步骤二:安装 SDK
本文使用阿里云 Python SDK 调用 Volume API。请先按照阿里云 SDK & API 说明安装 SDK 并配置访问凭证。
步骤三:创建 AgenticBucket Volume
请求参数、返回参数和错误码以 OpenAPI 门户的 CreateVolume - 创建 Volume 为准。
存储配置
agenticBucketVolumeConfig 的字段与 Python SDK 参数对应如下:
API 字段 | Python SDK 字段 | 是否必填 | 说明 |
|
| 是 | AgenticBucket 完整名称。 |
|
| 是 | BucketSpace 完整名称。 |
|
| 否 | BucketSpace 内的挂载路径;省略时默认为 |
|
| 是 | OSS Endpoint,应与 AgenticBucket 所在地域和网络环境匹配。 |
|
| 否 | 是否只读挂载; |
挂载配置
mountConfig 用于保存挂载所需的 RAM 角色 ARN(Alibaba Cloud Resource Name,资源名称)。Python SDK 对应参数为 mount_config,类型为 models.CreateVolumeInputMountConfig。
API 字段 | Python SDK 字段 | 是否必填 | 说明 |
|
| 否 | 访问存储所需的 RAM 角色 ARN。 |
AgenticBucket Volume 不支持 mountConfig.vpcConfig。
在创建 Volume 时保存角色配置,后续创建 Sandbox 挂载该 Volume 时复用这些配置。角色的创建方法及选择规则参见配置 RAM 角色。
环境变量说明
以下环境变量供本文示例读取。访问凭证按上述 SDK 说明配置,其余参数在创建示例中设置。
环境变量 | 用途 | 取值来源或填写方式 |
| 调用 Volume API 的 AccessKey ID。 | 按阿里云 SDK & API 说明配置调用身份的访问凭证。 |
| 与 AccessKey ID 配套的 AccessKey Secret。 | 与上述 AccessKey ID 一并获取。 |
| 使用 STS(Security Token Service,安全令牌服务)临时凭证时的安全令牌。 | 仅使用 STS 临时凭证时设置,取自同一组临时凭证。 |
| 调用 Volume API 的地域。 | 填写目标地域 ID,例如 |
| Volume API 的服务接入点。 | 填写 |
| Volume 所属的 Team。 | 从智能体沙箱控制台获取目标 Team 的 ID。 |
| 保存到 Volume 的存储访问角色。 | 按配置 RAM 角色完成配置后,从 RAM 控制台获取角色 ARN。 |
| 要创建的 Volume 名称。 | 自行设置,同一 Team 内不能重复。 |
| 目标 AgenticBucket。 | 从 OSS 控制台获取已创建的 AgenticBucket 完整名称。 |
| 目标 BucketSpace。 | 填写要使用的 BucketSpace 完整名称;首次挂载时如果不存在,系统会自动创建。 |
| 访问 AgenticBucket 的 OSS Endpoint。 | 按 AgenticBucket 所在地域填写;同地域建议使用 |
创建示例
在已配置访问凭证的终端中,设置以下参数,并将占位符替换为实际值。各变量的取值参见环境变量说明。
export SANDBOX_REGION_ID="<REGION>"
export SANDBOX_ENDPOINT="sandbox.${SANDBOX_REGION_ID}.aliyuncs.com"
export SANDBOX_TEAM_ID="<TEAM-ID>"
export SANDBOX_ROLE_ARN="acs:ram::<ACCOUNT-UID>:role/<ROLE-NAME>"
export SANDBOX_VOLUME_NAME="<VOLUME-NAME>"
export AGENTIC_BUCKET_NAME="<AGENTIC-BUCKET-FULL-NAME>"
export BUCKET_SPACE_NAME="<BUCKET-SPACE-FULL-NAME>"
export OSS_ENDPOINT="https://oss-<REGION>-internal.aliyuncs.com"将以下代码保存为 10_create_agentic_bucket_volume.py:
import os
from alibabacloud_sandbox20260820 import models
from alibabacloud_sandbox20260820.client import Client as SandboxClient
from alibabacloud_tea_openapi import utils_models as open_api_models
def require_env(name: str) -> str:
value = os.environ.get(name, "").strip()
if not value:
raise RuntimeError(f"缺少环境变量: {name}")
return value
config = open_api_models.Config(
access_key_id=require_env("ALIBABA_CLOUD_ACCESS_KEY_ID"),
access_key_secret=require_env("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
security_token=os.environ.get("ALIBABA_CLOUD_SECURITY_TOKEN"),
region_id=require_env("SANDBOX_REGION_ID"),
endpoint=require_env("SANDBOX_ENDPOINT"),
)
pop_client = SandboxClient(config)
response = pop_client.create_volume(
models.CreateVolumeRequest(
body=models.CreateVolumeInput(
team_id=require_env("SANDBOX_TEAM_ID"),
volume_name=require_env("SANDBOX_VOLUME_NAME"),
mount_config=models.CreateVolumeInputMountConfig(
role=require_env("SANDBOX_ROLE_ARN"),
),
agentic_bucket_volume_config=models.AgenticBucketVolumeConfig(
agentic_bucket=require_env("AGENTIC_BUCKET_NAME"),
bucket_name=require_env("BUCKET_SPACE_NAME"),
bucket_path="/",
endpoint=require_env("OSS_ENDPOINT"),
read_only=False,
),
)
)
)
if response.body is None or response.body.volume is None:
raise RuntimeError("CreateVolume 未返回 Volume")
volume = response.body.volume
print(f"request_id={response.body.request_id}")
print(f"volume_id={volume.volume_id}")
print(f"volume_name={volume.volume_name}")
print(f"storage_class={volume.storage_class}")
print(f"status={volume.status}")在同一终端运行:
python 10_create_agentic_bucket_volume.py创建成功仅表示 Volume 配置已保存。参见挂载 AgenticBucket Volume创建 Sandbox 并按 Volume 名称挂载该 Volume,通过实际读写确认挂载可用。
管理 Volume
通过 ListVolumes 查询 Volume 列表,通过 GetVolume 查看详情,通过 UpdateVolume 更新 Volume 配置,通过 DeleteVolume 删除不再使用的 Volume。
删除 Volume 只删除智能体沙箱侧的挂载配置,不会删除 AgenticBucket、BucketSpace 或其中的数据。
使用限制
AgenticBucket、BucketSpace 和 Sandbox 应使用相匹配的地域和网络环境;OSS Endpoint 应与 AgenticBucket 所在地域和网络环境匹配。
AgenticBucket Volume 不需要 VPC 配置,也不接受
mountConfig.vpcConfig。同一 Team 中的 Volume 名称不能重复。
常见问题
创建 Volume 提示必须提供一种存储配置
错误消息为 request must contain exactly one volume config 时,请求缺少存储配置,或同时提供了多种存储配置。创建 AgenticBucket Volume 应提供 agenticBucketVolumeConfig,不应同时提供其他存储类型的配置。
mountConfig 保存挂载所需的 RAM 角色,不能代替存储配置。具体字段参见本文存储配置。
创建 Volume 提示名称已存在
返回 VolumeConflict,且错误消息包含 already exists 时,表示同一 Team 中已有同名 Volume。查询该 Volume 的配置和状态,确认是否可以复用;需要创建独立资源时,使用其他名称。
创建 Volume 提示找不到 Team
返回 TeamNotFound 时,核对 teamID、调用凭证所属账号和请求地域,确认目标 Team 存在且属于当前账号。
调用 CreateVolume 被拒绝,应该给谁授权
检查调用 OpenAPI 的 RAM 身份是否具有 sandbox:CreateVolume 权限,以及授权范围是否覆盖目标 Team。授权方法参见授权 RAM 用户访问控制台。
mountConfig.role 用于 Sandbox 访问底层存储,为该角色增加存储权限不会授予调用者 Volume 管理权限。
如需进一步排查,请保留完整错误信息和请求 ID。