1.0.2 • Published 4 years ago

sy-craft v1.0.2

Weekly downloads
-
License
ISC
Repository
-
Last release
4 years ago

SY-CRAFT

SY-CRAFT 作为一个命令行工具,内置了多个子命令,比如 config、init、invoke、deploy 等

其中,config 子命令可以用来配置用户信息,init 子命令可以用来生成模版函数,deploy 子命令可以将资源发布到线上

config

使用 app config 进行应用部署配置sy-craft

  1. 执行以下命令
    fun config
  1. 按照提示依次配置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, —namesy-app要作为文件夹生成的项目名称(可选)
—no-inputfalse禁用提示并接受默认值来定义的模板配置(可选)

示例:

  1. -o,--output-dir 选项输出初始化应用程序的输出目录。默认是 app init 命令执行的当前路径。
$ app init -o /path/foo/bar
  1. -n,--name 选项要作为文件夹生成的项目名称。默认值是 sy-app
$ app init -n xxx
  1. --no-input 选项禁用提示并接受默认值来定义的模板配置。假如不想提示输入模板变量,可以通过该选项,跳过提示输入,直接使用模板变量的默认值。
$ app init --no-input
  1. 使用远程仓库的模版:只需要在app init后直接跟上远程仓库地址即可
$ app init git.xxxxxxx

invoke

invoke 作为 sycraft 的一个子命令,可以直接通过 app invoke 命令使用。 基于docker将函数计算中的函数在本地完全模拟运行,旨在弥补函数计算相对于传统应用开发体验上的短板,并为用户提供一种解决函数计算问题排查的途径。

invoke基于docker对于更多的runtime具有很好的扩展性

选项默认值描述
-h, -handlerindex.handler函数计算的入口
-e, event{"some": "event"}函数计算的入参

最基础的调用只需要在函数目录下

app invoke

返回示例如图 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'); };