开发函数计算的正确姿势 —— 使用 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 工具可以快速体验和开发函数计算的应用,避免重复机械劳动,你也可以将自己觉得有价值的函数计算应用制作成模板项目,方便自己同时也可以方便别人。

相关文章

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
1月前
|
监控 关系型数据库 Serverless
Serverless 应用引擎常见问题之函数计算3.0的项目提示未知错误如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
|
14天前
|
Java Serverless 应用服务中间件
Serverless 应用引擎操作报错合集之部署python项目时,构建过程报错,怎么解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
14天前
|
Java Serverless 应用服务中间件
Serverless 应用引擎产品使用合集之Web函数启动的Spring Boot项目可以通过什么方式配置Nginx
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
13天前
|
运维 Serverless API
Serverless 应用引擎产品使用合集之函数初始化失败,一般是什么导致的
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
1月前
|
人工智能 Serverless API
AI 绘画平台难开发,难变现?试试 Stable Diffusion API Serverless 版解决方案
AI 绘画平台难开发,难变现?试试 Stable Diffusion API Serverless 版解决方案
8514 132
|
1月前
|
缓存 运维 Serverless
Serverless 应用引擎产品使用之阿里函数计算中。将本地电脑上的项目文件部署到阿里云函数计算(FC)上并实现对外提供API和WebUI如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
1月前
|
运维 关系型数据库 MySQL
Serverless 应用引擎产品使用之在阿里函数计算中,部署Go项目可以区分环境如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
1月前
|
人工智能 Serverless API
AI 绘画平台难开发,难变现?试试 Stable Diffusion API Serverless 版解决方案
AI 绘画平台难开发,难变现?试试 Stable Diffusion API Serverless 版解决方案
|
1月前
|
小程序 IDE Serverless
【经验分享】支付宝小程序serverless云开发拓荒
【经验分享】支付宝小程序serverless云开发拓荒
120 6
|
1月前
|
Serverless 开发工具 git
Serverless 应用引擎报错问题之下载文件报错如何解决
Serverless部署是指将应用程序部署到无服务器架构中,该架构允许开发者专注于代码而无需关心底层服务器的运行和维护;针对Serverless部署过程中可能遇到的挑战,本合集提供全面的指南和最佳实践,帮助开发者顺利实现应用的无服务器化部署。
154 0

热门文章

最新文章

相关产品

  • 函数计算