全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多
函数计算

fun

更新时间:2018-02-09 14:52:40

fun 是一个用于支持函数计算和 API 网关的工具,能帮助您便捷地管理函数计算和 API 网关的资源。它通过一个资源配置文件(faas.yaml),协助您进行开发、构建、部署操作。

针对 Node.js 用户,它能自动安装打包依赖模块,使您可以继续使用 package.json 的方式进行依赖管理。

安装

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

  1. $ npm install @alicloud/fun -g

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

  1. $ which fun
  2. /Users/jacksontian/.tnvm/versions/node/v8.9.0/bin/fun

使用

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

我们将在该文件中定义项目相关的信息。这些信息主要分为如下 4 个部分:

  • credentials
  • role
  • function compute
  • api gateway

其中 function compute 和 api gateway 之间是非耦合的,可单独发布 function compute 而不发布 api gateway。

credentials

credentials 主要用于资源拥有者的描述,包含 accountid、accessKeyId、accessKeySecret。由于这些信息比较机密,也可通过环境变量的形式来传入,当通过环境变量来传入时,这段配置是可选的。

配置示例如下:

  1. # faas.yaml
  2. accountid: '<account id, default is process.env.ACCOUNT_ID>'
  3. accessKeyId: '<ACCESS KEY ID, default is process.env.ACCESS_KEY_ID>'
  4. accessKeySecret: '<ACCESS KEY SECRET, default is process.env.ACCESS_KEY_SECRET>'

role

由于涉及到 API 网关访问函数计算,所以需要授权给 API 网关,使之能够访问函数计算,否则无法实现 API 网关与函数计算的配合使用。

role 的配置如下:

  1. # faas.yaml
  2. role:
  3. name: 'apigatewayAccessFC'

function compute

这部分配置主要用于描述函数计算的组织形式,在这里我们以一个示例来演示如何配置。

首先在项目目录下创建一个 hello.js 文件:

  1. 'use strict';
  2. const hook = require('fc-helper');
  3. exports.index = hook((req, res) => {
  4. res.send('Hello world!\n');
  5. });

上面的 fc-helper 模块可以在这里找到 https://github.com/aliyun/fc-helper ,通过 package.json 可以管理它。

接下来我们配置它:

  1. # faas.yaml
  2. function-compute:
  3. region: 'cn-shanghai'
  4. services:
  5. - name: 'fc'
  6. description: 'fc test'
  7. functions:
  8. - name: 'helloworld'
  9. description: 'hello!'
  10. # entry point
  11. handler: hello.index
  12. # which files should be ziped
  13. codes:
  14. - 'hello.js'

具体描述可以通过名称大致了解到每一项的作用。

到这里我们其实已经可以将代码发布到函数计算服务上了。

api gateway

我们将函数计算和 API 网关组合起来:

  1. # faas.yaml
  2. api-gateway:
  3. endpoint: 'http://apigateway.cn-hangzhou.aliyuncs.com'
  4. groups:
  5. - name: 'apigw_fc'
  6. description: 'API Gateway & Function Compute'
  7. apis:
  8. - name: 'helloworld'
  9. method: 'GET'
  10. path: '/helloworld'
  11. function: 'cn-shanghai/fc/helloworld'

部署

完成上面的配置后,即可通过 fun 工具来进行上传和部署了:

  1. $ fun deploy
  2. Function compute(region):
  3. service service_name ok.
  4. function function_name ok.
  5. API gateway(region):
  6. URL: POST http://<groupid>-<region>.alicloudapi.com/<the api path>
  7. => cn-hangzhou/service_name/function_name
  8. stage: RELEASE, deployed, version: 20171101125034887
  9. stage: PRE, deployed, version: 20171101125107780
  10. stage: TEST, deployed, version: 20171101144618017

默认会将函数计算服务发布,然后将 API 网关线上配置指向它。也可以添加 stage 参数,选择发布到测试环境或预发环境:

  1. $ fun deploy TEST
  2. $ fun deploy PRE

完整的例子可以在这里找到:https://github.com/aliyun/fun/tree/master/examples/helloworld

通过设置环境变量,您可以将它发布到自己的 API 网关和函数计算环境中。

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

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

反馈

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

本文导读目录