Skip to content

云沙箱计划变更

plan 命令是对云沙箱资源变更感知的命令:只读地展示本地 s.yaml 与线上资源的差异,不做任何创建、更新或删除

命令解析

当执行命令plan -h/plan --help时,可以获取帮助文档。

参数解析

plan 没有自己的参数,所有输入都来自 Yaml 文件

当前命令还支持部分全局参数(例如-a/--access, --debug等),详情可参考 Serverless Devs 全局参数文档

操作案例

有资源描述文件(Yaml)时,可以直接执行s plan进行资源变更感知,效果如下:

region: cn-hangzhou
team:
  teamName: dev
  ~ description: dev team => dev team (new)
  plan: base
volumes:
  - volumeName: data
    volumeName: data
    ~ status: inactive => active
    ossVolumeConfig:
      bucketName: my-bkt
      bucketPath: /data
apiKeys:
  - apiKeyName: ci
    apiKeyName: ci
    + expireTime: 2027-01-01T00:00:00Z
    ipWhitelist:
      - ipAddress: 1.2.3.0/24
        description: office

~: 配置被修改

-: 删除配置

+: 添加配置

从上例可以看出执行 deploy 之后预期:

  1. team 的 descriptiondev team 变更为 dev team (new)
  2. volume datastatusinactive 变更为 active
  3. apiKey ci 新增 expireTime 配置

注意事项

  • 只比较 s.yaml 中声明过的字段。服务端的只读字段(teamID / volumeID / apiKeyID / status 的服务端派生值 / createdTime / apiKeyMask 等)不会产生 diff 噪音;apiKeyValue 更不会进入 diff。

  • 线上资源不存在时视为待创建,diff 中表现为全部字段新增。Team 不存在时,其下的 volumes / apiKeys 一律按"待创建"处理,不再发起查询。

  • volumes / apiKeys 在 s.yaml 中未声明时,对应段落不会出现在输出里

  • plan 不会提示线上多余的资源。要发现线上存在但 s.yaml 未声明的资源,执行 s deploy(它会 warn 列出)或用 volume list / apikey list 查看。

  • Volume 存储配置的差异只是"提示"plan 会如实显示 ossVolumeConfig 的差异,但 deploy 实际只能下发 status —— 存储配置创建后不可修改,详见 Yaml 规范中的约束

权限与策略说明

使用该命令时,推荐配置系统策略:AliyunFCReadOnlyAccess