写点什么

多种操作模式下的工具体系

作者:刘宇
  • 2021 年 12 月 15 日
  • 本文字数:1455 字

    阅读完需:约 5 分钟

多种操作模式下的工具体系

众所周之,目前大部分的 Serverless 开发者工具均是通过 Yaml 等进行资源描述,少部分的 Serverless 开发者工具是通过命令行直接操作,无论是通过 Yaml 进行资源描述,还是通过纯命令行的操作,可以说两者各有各的好处。而在 Serverless Devs 开发者工具中,这两者均得以有效的支持。

Serverless Devs 开发者工具从根本上提供了两种使用方法。


  • Yaml 模式:需要依赖资源描述文档进行操作的模式

  • Cli 模式:可以在任何目录下直接执行,而不需要依赖资源描述文档;


这两者的核心区别是:


  1. 如果想要使用 Yaml 模式,在当前目录下,必须要有s.yaml/s.yml文件,或通过-t/--template指定的资源部描述文件;

  2. 如果想要试用 Cli 模式,则必须是 s cli 组件名 方法 参数的格式进行,此时不需要 Yaml 文件;


举一个非常简单的例子,如果有一个应用的资源描述文件s.yaml如下:


name: myAppedition: 1.0.0access: "myaccess"
services: website-starter: component: devsapp/website props: bucket: testbucket backend-starter: component: devsapp/demo props: service: name: serviceName function: name: functionName region: cn-hangzhou
复制代码


此时,可以执行s deploy进行myApp应用部署,如果执行s backend-starter deploy则可以进行myApp应用下的backend-starter项目/服务部署。


此时,部署过程中,所需要的相关参数,可以通过该 Yaml 文件进行读取。


但是,在某些情况下,并不方便直接使用 Serverless Devs 规范的 Yaml 文件(例如,将线上资源同步到本地,或者要将 Funcraft 的 Yaml 转换成为 Serverless Devs 的 Yaml),此时可以选择纯命令行形式,即s cli模式。


s cli 模式下,由于不会读取 Yaml 等资源描述文件,所以很多参数都需要自行填写,这时的填写方法有两种:


  1. 通过 s cli 天然支持的 -p/--prop 参数,进行相关 Yaml 参数的赋值,例如上述案例的s backend-starter deploy,此时可以改写成:


    s cli devsapp/demo -p "{\"service\":{\"name\":\"serviceName\"},\"function\":{\"name\":\"functionName\"},\"region\":\"cn-hangzhou\"}"
复制代码


  1. 通过 demo 组件本身所支持的一些参数,例如通过s cli devsapp/demo -h,可以得到帮助信息,部分内容如下:


      --region [region]               [C-Required] Specify the fc region, value: cn-hangzhou/cn-beijing/cn-beijing/cn-hangzhou/cn-shanghai/cn-qingdao/cn-zhangjiakou/cn-huhehaote/cn-shenzhen/cn-chengdu/cn-hongkong/ap-southeast-1/ap-southeast-2/ap-southeast-3/ap-southeast-5/ap-northeast-1/eu-central-1/eu-west-1/us-west-1/us-east-1/ap-south-1        --service-name [serviceName]    [C-Required] Specify the fc service name        --function-name [functionName]  [Optional] Specify the fc function name   
复制代码


此时,就可与通过下面的命令实现上述功能:
复制代码


    s cli devsapp/demo --region cn-hangzhou --service-name serviceName --function-name functionName
复制代码

特点对比



设计思路

❓ 为什么要同时存在 Yaml 模式和 Cli 模式?

💬 因为在长期的实践过程中,我们发现通过 Yaml 进行资源描述会相对来说更简单和方便,例如 K8S 等也都是通过 Yaml 进行资源描述的;但是,在某些情况下,Yaml 文件也可能成为一种负担,例如想要查看某个服务下的函数列表,查看某个地区下的服务列表,因为这样一个简单的事情要额外的去完成一个 Yaml 文件,就显得过于臃肿,所以,在 Serverless Devs 项目中,同时保留了两种使用方法。

发布于: 2021 年 12 月 15 日阅读数: 8
用户头像

刘宇

关注

阿里云Serverless云布道师 2020.01.04 加入

阿里云Serverless产品经理,国防科大在读博士,《Serverless架构》、《Serverless实践》、《人人都能学会的Serverless架构》等书籍作者,Serverless Devs发起人,Anycodes在线编程负责人。

评论

发布
暂无评论
多种操作模式下的工具体系