Skip to content

部署云沙箱资源

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 策略尚未最终确认,当前按函数计算全量权限配置即可)。