开发者社区> 木香丘> 正文

开发函数计算的正确姿势 —— 使用 Fun Init 初始化项目

简介: 首先介绍下在本文出现的几个比较重要的概念: __函数计算(Function Compute)__: 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。
+关注继续查看

首先介绍下在本文出现的几个比较重要的概念:

函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息 参考
Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。Fun 的更多文档 参考
2.0 版本的 Fun,在部署这一块做了很多努力,并提供了比较完善的功能,能够做到将云资源方便、平滑地部署到云端。但该版本,在本地开发上的体验,还有较多的工作要做。于是,我们决定推出 Fun Init 弥补这一处短板。
Fun Init: Fun Init 作为 Fun 的一个子命令存在,只要 Fun 的版本大于等于 2.7.0,即可以直接通过 fun init 命令使用。Fun Init 工具可以根据指定的模板快速的创建函数计算应用,快速体验和开发函数计算相关业务。官方会提供常用的模板,用户也可以自定自己的模板。

快速体验

hellworld-nodejs8 模板目录结构

helloworld-nodejs8          ① 模板项目根目录
├── metadata.json           ② 模板项目配置文件
└── {{ projectName }}       ③ 模板根目录
    ├── index.js
    └── template.yml

执行命令:fun init -n xxx helloworld-nodejs8

$ fun init -n xxx helloworld-nodejs8
Start rendering template...
+ /Users/kevin/xxx
+ /Users/kevin/xxx/index.js
+ /Users/kevin/xxx/template.yml
finish rendering template.

初始化生成的项目目录结构:

xxx
├── index.js
└── template.yml

Fun Init 命令格式

$ fun init --help

  Usage: init [options] [location]

  Initializes a new fun project

  Options:

    -o, --output-dir [outputDir]  where to output the initialized app into (default: .)
    -n, --name [name]             name of your project to be generated as a folder (default: fun-app)
    --no-input [noInput]          disable prompting and accept default values defined template config
    -V, --var [vars]              template variable
    -h, --help                    output usage information

  Examples:

    $ fun init
    $ fun init helloworld-nodejs8
    $ fun init foo/bar
    $ fun init gh:foo/bar
    $ fun init gl:foo/bar
    $ fun init bb:foo/bar
    $ fun init github:foo/bar
    $ fun init gitlab:foo/bar
    $ fun init bitbucket:foo/bar
    $ fun init git+ssh://git@github.com/foo/bar.git
    $ fun init hg+ssh://hg@bitbucket.org/bar/foo
    $ fun init git@github.com:foo/bar.git
    $ fun init https://github.com/foo/bar.git
    $ fun init /path/foo/bar
    $ fun init -n fun-app -V foo=bar /path/foo/bar

选项说明

选项 默认值 描述
-o, --output-dir . 初始化的应用程序输出目录(可选)
-n, --name fun-app 要作为文件夹生成的项目名称(可选)
--no-input false 禁用提示并接受默认值来定义的模板配置(可选)
-V, --var 模板变量(可选)
-h, --help 打印使用说明(可选)

示例:

  1. -o,--output-dir 选项
    输出初始化应用程序的输出目录。默认是 fun init 命令执行的当前路径。
$ fun init -o /path/foo/bar
  1. -n,--name 选项
    要作为文件夹生成的项目名称。默认值是 fun-app
$ fun init -n xxx
  1. -V,--var 选项
    模板变量。模板可能会有很多模板变量,模板变量一般都会设置默认值,如果某些模板变量希望用户填写自己的值,在初始化模板的过程中,会提示用户输入自定义的值,用户可以输入自定义的值,也可以直接回车使用默认值,还可以直接通过 -V,--var 选项设置模板变量值。通过该选项设置的模板变量,就不会再提示用户输入了。

选项格式要求:以等号分隔的键值对,键只能包含字母、数字和 _;值可以是任意字符。

$ fun init -V foo=bar -V bar=baz
  1. --no-input 选项
    禁用提示并接受默认值来定义的模板配置。假如不想提示输入模板变量,可以通过该选项,跳过提示输入,直接使用模板变量的默认值。
$ fun init --no-input

模板位置(Location)

支持如下方式指定模板:

  • 官方模板。包含离线和在线模板:

    • 离线模板。内嵌在 fun 工具中
    • 在线模板。通过模板名称来指定模板位置,fun 内部会将其转换为 github 地址
  • Git / Mercurial 仓库模板。支持缩写方式,具体请看下文
  • 本地文件系统路径模板

如果您需要自定义自己的模板,只需要将您的模板提交到 github 上,然后在执行 fun init 指定您自己的 github 地址。具体请参考:Fun Init 自定义模板

示例:

  1. 选择官方模板
    输入 fun init 命令,则提示用户选择模板,支持模糊查询。在不清楚自己需要什么样的模板时,简单的使用不带任何参数的 fun init 会提示用户官方模板有哪些,用户更具提示选择自己的需要模板。
$ fun init
? Select a tempalte to init (Use arrow keys or type to search)
 helloworld-nodejs8
  helloworld-nodejs6
  helloworld-python3
  helloworld-python2.7
  helloworld-java8
  helloworld-php7.2
  1. 指定官方模板
    helloworld-nodejs8 是内嵌在 fun 工具的官方模板,所以支持离线,该模板最终生成一个运行时为 nodejs8 的 helloworld 函数计算应用。对于一些常用的模板,我们会把它放到官方模板列表中,用户只需要指定简短模板名称即可,不需要指定完整的模板仓库地址。
$ fun init helloworld-nodejs8
  1. 指定 Git / Mercurial 仓库模板
    支持 Git / Mercurial 仓库模板,支持多种前缀的缩写形式,对于 github,甚至可以进一步缩写为 user/repo
$ fun init foo/bar
$ fun init gh:foo/bar
$ fun init gl:foo/bar
$ fun init bb:foo/bar
$ fun init github:foo/bar
$ fun init gitlab:foo/bar
$ fun init bitbucket:foo/bar
$ fun init git+ssh://git@github.com/foo/bar.git
$ fun init hg+ssh://hg@bitbucket.org/bar/foo
$ fun init git@github.com:foo/bar.git
$ fun init https://github.com/foo/bar.git

说明:需要提前安装好相应的版本控制工具。

  1. 指定本地文件系统路径模板
    我们可以将在线模板克隆放到本地文件系统,通过指定模板路径,实现离线初始化。
$ fun init /path/foo/bar

小结

通过 Fun Init 工具可以快速体验和开发函数计算的应用,避免重复机械劳动,你也可以将自己觉得有价值的函数计算应用制作成模板项目,方便自己同时也可以方便别人。

相关文章

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
如何把 ThinkPHP 5 的项目迁移到阿里云函数计算来应对流量洪峰?
Serverless 是以后的趋势,开发者能够有更多的精力去关注业务层。从开始预计迁移到代码的修改以及阿里云函数计算 FC 文档查阅,到迁移成功,花费了大概 3 天的时间,对阿里云函数计算 FC 有了更深层次的认知。
101 0
成本节省 50%,使用函数计算开发 Web 应用更高效!
成本节省 50%,使用函数计算开发 Web 应用更高效!
312 0
使用函数计算自定义运行时快速部署一个 SpringBoot 项目 | 文末有礼
本次体验,使用函数计算部署了一个 springboot 项目,总体来说过程很流畅,只需要在控制台点点就可以生成并部署好一个项目,对于新手来说非常的友好,省去一大堆传统部署项目时的环境搭建,安装依赖等等,可以真正的让我们做到只关心业务逻辑的开发!
143 0
如何把thinkphp5的项目迁移到阿里云函数计算来应对流量洪峰?
如何把thinkphp5的项目迁移到阿里云函数计算来应对流量洪峰?
64 0
转载 | 基于函数计算自定义运行时快速部署一个 springboot 项目
本文转自函数计算征集令优秀征文,活动火热进行中,欢迎大家报名参加!
221 0
转载 | 如何把 thinkphp5 的项目迁移到阿里云函数计算来应对流量洪峰?
函数计算评测局的优秀征文! 如何把thinkphp5的项目迁移到阿里云函数计算来应对流量洪峰?
209 0
如何把thinkphp5的项目迁移到阿里云函数计算来应对流量洪峰
如何把thinkphp5的项目迁移到阿里云函数计算来应对流量洪峰
99 0
基于阿里云Serverless函数计算开发的疫情数据统计推送机器人
疫情数据统计推送机器人基于Python和阿里云Serverless函数计算开发。实现了使用Python爬取获得疫情数据并进行整理,使用函数计算配合定时触发器,每天定时推送全国疫情数据到企业微信。
20096 0
+关注
文章
问答
来源圈子
更多
专注 Serverless、微服务、函数计算、Serverless 应用引擎、云原生技术
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
函数计算集团规模化落地实践(3).ppt
立即下载
函数计算事件驱动的serverless计算平台
立即下载
基于函数计算的serverless应用开发
立即下载