Skip to content

Deploy 命令

deploy 命令是对函数资源进行部署的命令,即将本地在 Yaml 文件 中声明的资源部署到线上。

命令解析

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

在该命令中,包括了四个子命令:

参数解析

参数全称 参数缩写 Yaml模式下必填 参数含义
type - 选填 部署类型,可以选择code, config
use-local - 选填 优先使用本地配置进行部署
use-remote - 选填 优先使用线上配置进行部署
assume-yes y 选填 在交互时,默认选择y

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

操作案例

有资源描述文件(Yaml)时,可以直接执行s deploy进行资源部署,部署完成的输出示例:

fc-deploy-test: 
  region:   cn-hangzhou
  service: 
    name: fc-deploy-service
  function: 
    name:       http-trigger-py36
    runtime:    python3
    handler:    index.handler
    memorySize: 128
    timeout:    60
  url: 
    system_url:    https://1583208943291465.cn-hangzhou.fc.aliyuncs.com/2016-08-15/proxy/fc-deploy-service/http-trigger-py36/
    custom_domain: 
      - 
        domain: http://http-trigger-py36.fc-deploy-service.1583208943291465.cn-hangzhou.fc.devsapp.net
  triggers: 
    - 
      type: http
      name: httpTrigger

注意事项

在进行资源部署时,会涉及到一定的特殊情况,可以参考以下描述:

  • 只需要部署/更新代码,可以增加--type code参数;只需要部署/更新配置,可以增加--type config参数;

  • 在部署时可能会涉及到交互式操作

  • 当检测到线上的资源与本地所记录的上次部署的资源不一致时,会提醒是否使用线上资源还是使用线下资源;如果不想出现该交互式操作,可以在执行命令时增加--use-local/--use-remote参数,此时会优先使用本地配置/线上配置,例如:

    线上服务 线上函数 本地记录的服务 本地记录的函数 本地要部署服务 本地要部署函数 直接部署 use-local use-remote
    存在 存在 与线上一致 与线上一致 - - 无交互 线上服务与函数将会被更新 线上服务与函数不做任何操作
    存在 不存在 与线上一致 - - - 无交互 线上服务与函数将会被更新 线上服务不做任何操作,函数将会被创建
    不存在 不存在 - - - - 无交互 线上服务与函数将会被更新 线上服务与函数将会被创建
    存在 存在 与线上不一致 与线上不一致 与线上一致 与线上一致 无交互 线上服务与函数将会被更新 线上服务与函数不做任何操作
    存在 存在 与线上不一致 与线上不一致 与线上不一致 与线上不一致 有交互 线上服务与函数将会被更新 线上服务与函数不做任何操作

    线上服务&线上函数:指的是已经部署过的服务和函数;

    本地记录的服务&本地记录的函数:指的是上次在本地执行部署时,所记录的状态,如果是第一次执行,则无状态被记录;

    功能设计初衷:由于某些业务在部署/更新时,涉及到团队多人操作,如果默认本地配置强制覆盖线上配置,可能导致通过其他途径/客户端进行更新的内容失效,为了更加安全、规范的更新函数资源,所以引入了线上配置异常感知的能力。

    在进行部署时,交互的形式示例如下:

    Local Last Deploy status => Online status
    
    description: "this is a test" => "this is a test console"
    
    ? Remote function: http-trigger-py36 is inconsistent with the config you deployed last time, deploy it with local config or remote
    config? (Use arrow keys)
    ❯ use local 
    use remote 
    

    此时表示,本地上次部署之后,到本地部署之间,线上的函数资源被通过其他的途径修改过,修改的内容是description,上次部署时的内容是this is a test,现在线上的配置是this is a test console,如果选择:

    • use local:将会默认使用本地最新的配置,进行覆盖线上的配置的;
    • use remote:将不会对这一部分做更新操作;
  • 当部署时,检测到一些额外的配置需要添加到流程中时,会提醒是否要添加配置等;例如,Python语言的项目,在部署之前进行了s build操作,在部署的时候涉及到将部分依赖路径放入环境变量中,以助于依赖的生效;如果此时不想出现交互式操作,可以增加-y/--assume-yes参数;

在CI/CD工具/平台进行项目部署时,为了避免交互式操作带来的影响,可以按需考虑使用--use-local/use-remote-y/--assume-yes参数组合,例如在明确优先使用本地配置,且默认同意所有额外操作时,可以通过s deploy --use-local -y进行资源部署。

⚠️ 注意:在进行函数部署时,如果域名配置为auto,系统会默认分配测试域名,该域名仅供测试使用,不对其稳定性等做保证,Serverless Devs FC 组件在日后有权对该域名进行回收等处理,如是线上业务,生产需求业务,强烈建议绑定自己的自定义域名。

deploy service 命令

deploy service 命令,是部署服务资源的命令。

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

参数解析

参数全称 参数缩写 Yaml模式下必填 参数含义
use-local - 选填 优先使用本地配置进行部署
use-remote - 选填 优先使用线上配置进行部署
assume-yes y 选填 在交互时,默认选择y

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

操作案例

有资源描述文件(Yaml)时,可以直接执行s deploy service进行服务的部署,部署完成的输出示例:

fc-deploy-test: 
  region:  cn-hangzhou
  service: 
    name: fc-deploy-service

在进行服务资源部署时,可能会涉及到交互式操作,相关的描述参考 deploy 命令 注意事项 中的在部署时可能会涉及到交互式操作

deploy function 命令

deploy function 命令,是部署函数的命令。

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

参数解析

参数全称 参数缩写 Yaml模式下必填 参数含义
type - 选填 部署类型,可以选择code, config
use-local - 选填 使用本地配置进行部署
use-remote - 选填
skip-push - 选填 跳过自动推送镜像
assume-yes y 选填 在交互时,默认选择y

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

操作案例

有资源描述文件(Yaml)时,可以直接执行s deploy function进行函数的部署,部署完成的输出示例:

fc-deploy-test: 
  region:   cn-hangzhou
  service: 
    name: fc-deploy-service
  function: 
    name:       http-trigger-py36
    runtime:    python3
    handler:    index.handler
    memorySize: 128
    timeout:    60

在进行函数资源部署时,可能会涉及到交互式操作,相关的描述参考 deploy 命令 注意事项

deploy trigger 命令

deploy trigger 命令,是部署函数触发器的命令。

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

参数解析

参数全称 参数缩写 Yaml模式下必填 参数含义
trigger-name - 选填 仅部署指定的触发器名称
use-local - 选填 使用本地配置进行部署
use-remote - 选填
assume-yes y 选填 在交互时,默认选择y

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

操作案例

有资源描述文件(Yaml)时,可以直接执行s deploy trigger进行触发器的部署,部署完成的输出示例:

fc-deploy-test: 
  region:   cn-hangzhou
  service: 
    name: fc-deploy-service
  function: 
    name:       http-trigger-py36
  url: 
    system_url: https://1583208943291465.cn-hangzhou.fc.aliyuncs.com/2016-08-15/proxy/fc-deploy-service/http-trigger-py36/
  triggers: 
    - 
      type: http
      name: httpTrigger

在进行服务资源部署时,可能会涉及到交互式操作,相关的描述参考 deploy 命令 注意事项 中的在部署时可能会涉及到交互式操作

单独部署某个指定的触发器,可以通过增加--trigger-name参数实现,参考命令:

$ s deploy trigger --trigger-name httpTrigger

deploy domain 命令

deploy domain 命令,是部署自定义域名的命令。

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

参数解析

参数全称 参数缩写 Yaml模式下必填 参数含义
domain-name - 选填 仅操作指定域名
use-local - 选填 使用本地配置进行部署
use-remote - 选填 使用线上配置
assume-yes y 选填 在交互时,默认选择y

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

操作案例

有资源描述文件(Yaml)时,可以直接执行s deploy domain进行自定义域名的部署,部署完成的输出示例:

fc-deploy-test: 
  region:   cn-hangzhou
  service: 
    name: fc-deploy-service
  function: 
    name:       http-trigger-py36
  url: 
    custom_domain: 
      - 
        domain: http://http-trigger-py36.fc-deploy-service.1583208943291465.cn-hangzhou.fc.devsapp.net

在进行服务资源部署时,可能会涉及到交互式操作,相关的描述参考 deploy 命令 注意事项 中的在部署时可能会涉及到交互式操作

单独部署某个指定的自定义域名,可以通过增加--domain-name参数实现,参考命令:

$ s deploy domain --domain-name http-trigger-py36.fc-deploy-service.1583208943291465.cn-hangzhou.fc.devsapp.net

权限与策略说明

deploy命令的权限,更多是和 Yaml 中所配置的参数有一定的关系,所以此处可以参考 Yaml 规范文档 中关于不同字段与权限的配置。