OSS Volume 儲存已有 OSS Bucket 或 Bucket 子目錄的掛載配置。建立完成後,可以在建立 Sandbox 時按 Volume 名稱掛載。
CreateVolume 只建立 Volume 中繼資料,不會建立、刪除或複製 OSS Bucket 和 Object。
前提條件
OSS 的產品說明和資源管理方式參見儲存空間(Bucket)概述。
使用前需要準備:
Volume 目前仍處於邀測階段,需要提交阿里雲工單申請開通。
已在Function Compute雲沙箱控制台建立 Team,並擷取 Team ID。
已建立 OSS Bucket,並確定需要掛載的 Bucket 路徑。
已擷取 Bucket 所在地區的 OSS Endpoint,具體取值參見通過Endpoint和Bucket網域名稱訪問OSS。
調用 POP SDK 的阿里雲身份具備
fcsandbox:CreateVolume許可權;查詢 Volume 需要fcsandbox:ListVolumes和fcsandbox:GetVolume許可權;刪除 Volume 還需要fcsandbox:DeleteVolume許可權。
Team 的建立和 Team ID 擷取方式參見建立 Team。
許可權配置
建立Volume所需RAM帳號許可權
調用 Volume API 的 RAM 身份需要以下許可權,請替換預留位置:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"fcsandbox:CreateVolume",
"fcsandbox:ListVolumes",
"fcsandbox:GetVolume",
"fcsandbox:DeleteVolume"
],
"Resource": "*"
}
]
}生產環境支援按 Team 精確授權 Volume 資源:
acs:fcsandbox:<region>:<account-id>:teams/<team-id>/volumes/*沙箱動態掛載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
雲沙箱 OpenAPI 當前支援 Java、Python、Go 和 TypeScript SDK。支援範圍、安裝方式和版本以阿里雲 SDK & API 說明為準。本文使用 Python 示範。
python3 -m venv .venv
source .venv/bin/activate
pip install "alibabacloud_fcsandbox20260509>=1.3.0"運行樣本前設定以下環境變數:
export ALIBABA_CLOUD_ACCESS_KEY_ID="<YOUR-ACCESS-KEY-ID>"
export ALIBABA_CLOUD_ACCESS_KEY_SECRET="<YOUR-ACCESS-KEY-SECRET>"
# 使用 STS 臨時憑證時還需要設定:
# export ALIBABA_CLOUD_SECURITY_TOKEN="<YOUR-SECURITY-TOKEN>"
export FCSANDBOX_REGION_ID="cn-hangzhou"
export FCSANDBOX_ENDPOINT="fcsandbox.cn-hangzhou.aliyuncs.com"
export FCSANDBOX_TEAM_ID="<team-id>"
export OSS_BUCKET_NAME="<bucket-name>"
export OSS_BUCKET_PATH="/agent-workspace"
export OSS_ENDPOINT="https://oss-cn-hangzhou.aliyuncs.com"FCSANDBOX_ENDPOINT 不包含 https://。如果 SDK 已內建目標地區的 Endpoint,可以不設定該變數,由 SDK 根據 FCSANDBOX_REGION_ID 解析。
建立 OSS Volume
請求參數、返回參數和錯誤碼以 OpenAPI 門戶的 CreateVolume - 建立 Volume 為準。
OSSVolumeConfig 欄位說明:
欄位 | 是否必填 | 說明 |
| 是 | OSS Bucket 名稱。 |
| 是 | Bucket 內的掛載路徑;掛載根目錄時設定為 |
| 是 | OSS Endpoint,應與 Bucket 所在地區匹配。 |
| 是 | 是否唯讀掛載; |
以下樣本建立 OSS Volume 並輸出建立結果。將代碼儲存為 07_create_oss_volume.py:
import os
from alibabacloud_fcsandbox20260509 import models
from alibabacloud_fcsandbox20260509.client import Client as FCSandboxClient
from alibabacloud_tea_openapi import 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("FCSANDBOX_REGION_ID"),
)
if os.environ.get("FCSANDBOX_ENDPOINT"):
config.endpoint = os.environ["FCSANDBOX_ENDPOINT"]
pop_client = FCSandboxClient(config)
team_id = require_env("FCSANDBOX_TEAM_ID")
response = pop_client.create_volume(
models.CreateVolumeRequest(
body=models.CreateVolumeInput(
team_id=team_id,
volume_name="oss-workspace",
oss_volume_config=models.OSSVolumeConfig(
bucket_name=require_env("OSS_BUCKET_NAME"),
bucket_path=require_env("OSS_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}")
print("OSS Volume 建立成功")運行樣本:
python 07_create_oss_volume.py建立成功僅表示 Volume 中繼資料建立成功。參見掛載 OSS Volume將該 Volume 掛載到 Sandbox,並通過實際讀寫確認掛載可用。
管理 Volume
通過 ListVolumes 查詢 Volume 列表,通過 GetVolume 查看詳情,通過 DeleteVolume 刪除不再使用的 Volume。
刪除 Volume 只刪除雲沙箱側的掛載配置,不會刪除 OSS Bucket 或其中的資料。
使用限制
由於安全問題,OSS 掛載暫不支援 KMS(Key Management Service,Key Management Service)服務端加密(SSE-KMS)。
OSS Endpoint 應與 Bucket 所在地區和網路環境匹配。
bucket_path必須填寫;掛載 Bucket 根目錄時設定為/。同一 Team 中的 Volume 名稱不能重複。
常見問題
POP SDK 返回 Forbidden 錯誤碼
檢查調用身份是否具備對應的 FCSandbox Volume API 許可權,以及是否有目標 Team 的 Volume 資源許可權。
返回 TeamNotFound 錯誤碼
檢查 Team ID、地區和帳號是否匹配。
返回 CreateVolumeNotSupported 或 NotFound 錯誤碼
確認當前帳號、地區和 Team 已開通 Volume 與 OSS Volume 能力。
返回 InvalidParameter 錯誤碼
根據 CreateVolume API 文檔檢查 Bucket、Bucket 路徑、Endpoint 和 read_only 設定。
返回 VolumeConflict 錯誤碼
同一 Team 中已存在同名 Volume。可通過 ListVolumes 查詢 Volume 列表,通過 GetVolume 查看詳情。確認不再使用後,通過 DeleteVolume 刪除,或更換 Volume 名稱。
刪除 Volume 後 OSS 資料是否保留
保留。刪除 Volume 只刪除雲沙箱側的 Volume 中繼資料,不會刪除 OSS 中的資料。