1.0.2 • Published 4 years ago
sy-craft v1.0.2
SY-CRAFT
SY-CRAFT 作为一个命令行工具,内置了多个子命令,比如 config、init、invoke、deploy 等
其中,config 子命令可以用来配置用户信息,init 子命令可以用来生成模版函数,deploy 子命令可以将资源发布到线上
config
使用 app config 进行应用部署配置sy-craft
- 执行以下命令
fun config
- 按照提示依次配置accessKeyId、accessToken、accesccUserId、defaultRegion、timeout、retries
【其中 Account ID、AccessKeyId 可以从xxx获得】
完成配置操作后,Funcraft 会将配置保存到您目录下的
.sycli/config.yaml
文件中
3.本工具请求时会带上config.yaml中的用户信息
init
init 作为一个子命令存在,可以直接通过 app init 命令使用。app init 工具可以根据指定的模板快速的创建函数计算应用,快速体验和开发函数计算相关业务。官方会提供常用的模板,用户也可以自定自己的模板。
选项 | 默认值 | 描述 |
---|---|---|
-o, —output-dir | . | 初始化的应用程序输出目录(可选) |
-n, —name | sy-app | 要作为文件夹生成的项目名称(可选) |
—no-input | false | 禁用提示并接受默认值来定义的模板配置(可选) |
示例:
- -o,--output-dir 选项输出初始化应用程序的输出目录。默认是 app init 命令执行的当前路径。
$ app init -o /path/foo/bar
- -n,--name 选项要作为文件夹生成的项目名称。默认值是 sy-app
$ app init -n xxx
- --no-input 选项禁用提示并接受默认值来定义的模板配置。假如不想提示输入模板变量,可以通过该选项,跳过提示输入,直接使用模板变量的默认值。
$ app init --no-input
- 使用远程仓库的模版:只需要在app init后直接跟上远程仓库地址即可
$ app init git.xxxxxxx
invoke
invoke 作为 sycraft 的一个子命令,可以直接通过 app invoke 命令使用。 基于docker将函数计算中的函数在本地完全模拟运行,旨在弥补函数计算相对于传统应用开发体验上的短板,并为用户提供一种解决函数计算问题排查的途径。
invoke基于docker对于更多的runtime具有很好的扩展性
选项 | 默认值 | 描述 |
---|---|---|
-h, -handler | index.handler | 函数计算的入口 |
-e, event | {"some": "event"} | 函数计算的入参 |
最基础的调用只需要在函数目录下
app invoke
返回示例如图
deploy
使用 app deploy 进行应用部署
由于函数的发布信息都预设在template.yaml文件中,因此只需要在对应的函数目录下执行
app deploy
即可完成发布
模版文件开发
需包含【配置文件】(1个)和【函数文件】(不限)
示例
配置文件 template.yml
appName: {{appName}}, #应用名占位 config: { "entryPoint": "index.handler", #函数入口 "memory": "128", #内存大小 "revision": "latest" #函数版本 } meta: { "description": "created by sy-craft", #函数描述 "runTime": "nodejs8.10", #函数运行环境 "type": "text" #函数类型 } name: {{projectName}} #函数名占位 appID: {{appID}} #应用ID占位
函数文件 index.js
/* if you open the initializer feature, please implement the initializer function, as below: module.exports.initializer = function(context, callback) { console.log('initializing'); callback(null, ''); }; */
module.exports.handler = function(event, context, callback) { console.log('hello world'); callback(null, 'hello world'); };