全部产品
阿里云办公

fun

更新时间:2018-07-27 10:57:33

Fun

(have)Fun with Serverless

logo

English

Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。

如果你想使用旧版本的语法,请参考.

Installation

fun 是一个 Node.js 编写的命令行工具,但它也能支持 Python,Java 等环境的部署操作。安装它的方式是通过 npm:

  1. $ npm install @alicloud/fun -g

安装完成之后,会有一个 fun 命令提供使用。输入 fun 命令可以查看帮助信息:

  1. $ fun -h
  2. Usage: fun [options] [command]
  3. The fun tool use template.yml to describe the API Gateway & Function Compute things, then publish it online.
  4. Options:
  5. -v, --version output the version number
  6. -h, --help output usage information
  7. Commands:
  8. config Configure the fun
  9. validate [options] Validate a fun template
  10. deploy Deploy a project to AliCloud
  11. build Build the dependencies

使用

安装完命令行工具之后,即可开始进行代码的开发了。为了配合 fun 工具,您需要创建一个工程目录,然后在工程目录下创建一个 template.yml 模板文件,fun 会将该目录视为一个工程。

我们将在该模板文件中定义项目相关的信息。fun 可以定义的信息参见 fun 的规范文档

在使用前,我们需要先进行配置,通过键入 fun config,然后按照提示,依次配置 Account IDAccess Key IdSecret Access KeyDefault Region Name 即可。

完成 config 操作后,fun 会将配置保存到用户目录下的 .fcli/config.yaml 文件中。

现在,我们就为使用 fun 命令做好了准备。

示例

下面我们用一个简单的 helloworld 示例演示 fun 如何使用。首先在项目根目录下创建一个 hello.js 文件。

  1. exports.handler = function(event, context, callback) {
  2. var response = {
  3. isBase64Encoded: false,
  4. statusCode: 200,
  5. body: 'hellow wrold'
  6. };
  7. callback(null, response);
  8. };

接下来我们配置相关服务。在项目根目录创建一个 template.yml 文件:

  1. ROSTemplateFormatVersion: '2015-09-01'
  2. Transform: 'Aliyun::Serverless-2018-04-03'
  3. Resources:
  4. fc: # service name
  5. Type: 'Aliyun::Serverless::Service'
  6. Properties:
  7. Description: 'fc test'
  8. helloworld: # function name
  9. Type: 'Aliyun::Serverless::Function'
  10. Properties:
  11. Handler: helloworld.handler
  12. Runtime: nodejs8
  13. CodeUri: './'
  14. Timeout: 60
  15. HelloworldGroup: # Api Group
  16. Type: 'Aliyun::Serverless::Api'
  17. Properties:
  18. StageName: RELEASE
  19. DefinitionBody:
  20. '/': # request path
  21. get: # http method
  22. x-aliyun-apigateway-api-name: hello_get # api name
  23. x-aliyun-apigateway-fc:
  24. arn: acs:fc:::services/${fc.Arn}/functions/${helloworld.Arn}/

代码以及模板文件编写完成后,就可以使用 fun deploy 命令一键将服务部署到线上环境了:

  1. $ fun deploy
  2. Waiting for service fc to be deployed...
  3. service fc deploy success
  4. Waiting for api gateway HelloworldGroup to be deployed...
  5. URL: GET http://2c2c4629c42f45a1b73000dd2a8b34b2-cn-shanghai.alicloudapi.com/
  6. stage: RELEASE, deployed, version: 20180627110526681
  7. stage: PRE, undeployed
  8. stage: TEST, undeployed
  9. api gateway HelloworldGroup deploy success

打开浏览器访问 http://2c2c4629c42f45a1b73000dd2a8b34b2-cn-shanghai.alicloudapi.com/ 这个地址即可预览效果。

配置

除了使用 fun config 对 fun 进行配置外,还可以通过环境变量以及 .env 为 fun 进行配置。

环境变量的方式很简单,这里简单说下 .env 的方式,在项目根下创建一个名为 .env 的文件,录入以下配置即可:

  1. ACCOUNT_ID=xxxxxxxx
  2. REGION=cn-shanghai
  3. ACCESS_KEY_ID=xxxxxxxxxxxx
  4. ACCESS_KEY_SECRET=xxxxxxxxxx

建议将 .env 放到 .gitignore 中,避免泄漏重要的账户信息。

配置的优先级

fun 配置方式的优先级按以下顺序依次递减:

  • .env
  • 环境变量
  • ~/.fcli/config.yaml

更多例子

更复杂的例子可以从这里查看:

https://github.com/aliyun/fun/tree/master/examples

反馈

如您在使用中遇到问题,可以在这里反馈 https://github.com/aliyun/fun/issues

参考

开源许可

The MIT License