部署云沙箱资源
deploy 命令是对云沙箱资源进行部署的命令,即将本地在 Yaml 文件 中声明的 Team 及其 volumes / apiKeys 部署到线上。
命令解析
当执行命令deploy -h/deploy --help时,可以获取帮助文档。
参数解析
| 参数全称 | 参数缩写 | Yaml 模式下必填 | 参数含义 |
|---|---|---|---|
| team | - | 选填 | 只部署 Team 自身,不处理 volumes / apiKeys |
| volume | - | 选填 | 只部署存储卷;可跟名称限定范围,多个名称用 "," 分割;不跟值表示部署 s.yaml 中全部 volume |
| api-key | - | 选填 | 只部署访问密钥;可跟名称限定范围,多个名称用 "," 分割;不跟值表示部署 s.yaml 中全部 apiKey |
| assume-yes | y | 选填 | 在交互时,默认选择y |
当前命令还支持部分全局参数(例如
-a/--access,--debug等),详情可参考 Serverless Devs 全局参数文档
--team / --volume / --api-key 都不指定时,三类资源全部纳入本次部署;指定了其中任意一个,就只部署被指定的种类。
操作案例
有资源描述文件(Yaml)时,可以直接执行s deploy进行资源部署,部署完成的输出示例:
sandbox:
region: cn-hangzhou
teamName: dev
teamID: t-5lycxxxxxxxx
volumes:
-
volumeID: v-9fquxxxxxxxx
volumeName: data
teamID: t-5lycxxxxxxxx
status: active
storageClass: OSS
createdAt: 2026-08-16T03:24:28Z
apiKeys:
-
apiKeyID: k-1039xxxxxxxx
apiKeyName: ci
apiKeyMask: sk-****abcd
teamID: t-5lycxxxxxxxx
status: active
expireTime: 2027-01-01T00:00:00Z
按种类部署:
s deploy -y # 跳过所有交互确认
s deploy --team # 只部署 Team 自身
s deploy --volume # 只部署 s.yaml 中声明的全部 volume
s deploy --volume data # 只部署名为 data 的 volume
s deploy --volume data,shared # 多个名称用 "," 分割
s deploy --api-key ci # 只部署名为 ci 的 apiKey
变更确认
当线上资源已存在且与本地声明存在差异时,deploy 会先打印差异再询问是否用本地配置部署:
volume/data was changed, please confirm before deployment:
volumeName: data
~ status: inactive => active
* You can also specify to use local configuration through --assume-yes/-y during deployment
? Deploy volume/data with local config? (Y/n)
~: 配置被修改 -: 删除配置 +: 添加配置
线上资源不存在(走创建)或无差异时不会询问。CI 环境请加 -y。
注意事项
-
部署顺序固定为
team → volumes → apiKeys。因为后两者需要teamID,所以不能并行,也不能调整顺序。 -
只部署 volume / apiKey 时,Team 必须已存在,否则报错:
Team "dev" not found in region cn-hangzhou, deploy the team first -
--volume/--api-key只能指定 s.yaml 中声明过的名字,这是防止误操作线上资源的护栏:Not found in s.yaml: ghost要操作未声明的资源请走 CLI 子命令。
-
deploy永不删除 s.yaml 未声明的线上资源,只会 warn 列出并给出对应的删除命令:Volumes exist online but are not declared in s.yaml: legacy-data. Deploy never removes them — use "s cli fc-sandbox volume remove" if they are obsolete. -
Volume 的存储配置创建后不可修改。本地
ossVolumeConfig/agenticFSVolumeConfig与线上不一致时,组件只下发status变更,并 warn 出具体差异与重建命令,详见 Yaml 规范中的约束。 -
新建 ApiKey 时会单独 warn 打印密钥明文:
ApiKey "ci" value: sk-xxxxxxxxxxxxxxxxxxxx ⚠️ 这是凭证,请妥善保存,不要写进代码仓库或 CI 日志。 之后可用 `s cli fc-sandbox apikey get --api-key-name <name> --team-name <team>` 再次取回。deploy的返回值中该字段是***,也不会写入任何文件 ——deploy经常在 CI 里以-y运行,返回值会进构建日志。需要明文时用apikey get单独取回,详见约束二。 -
改名等价于新建资源。
teamName/volumeName/apiKeyName是身份键,改名后组件按新名字查不到线上资源就会新建一个,旧的留在线上不动,详见 身份解析。
权限与策略说明
AliyunFCFullAccess(云沙箱专属 RAM 策略尚未最终确认,当前按函数计算全量权限配置即可)。