[技术交流] 有Serverless真的可以为所欲为--华为云FunctionGraph特性介绍


支持的Runtime


FunctionGraph函数Runtime支持多种运行时语言:Python 、Node.js、Java、Go,说明如表 1 所示。

表1 运行时说明

运行时语言

支持版本

SDK下载

Runtime下载

Node.js

6.10、8.10

-

-

Python

2.7、3.6

-

Python 2.7 Runtime下载

Python 3.6 Runtime下载

说明:Python Runtime集成了部分常用的第三方SDK,如表3所示。

Java

8.0

Java SDK下载

 说明:Java SDK集成了云服务OBS SDK。

-

Go

1.8

Go SDK下载

-



Node.js Runtime集成的三方件


表2 Node.js Runtime集成的三方件

名称

功能

版本号

q

异步方法封装

1.5.1

co

异步流程控制

4.6.0

lodash

常用工具方法库

4.17.10

esdk-obs-nodejs

OBS sdk

2.1.5



Python Runtime集成的非标准库


表3 Python Runtime集成的非标准库

模块

功能

版本号

dateutil

日期/时间处理

2.6.0

requests

http库

2.7.0

httplib2

httpclient

0.10.3

numpy

数学计算

1.13.1

redis

redis客户端

2.10.5

obsclient

OBS客户端

-



支持的触发器


本节列出了FunctionGraph函数支持的华为云服务,可以将这些服务配置为FunctionGraph函数的事件源。在预配置事件源映射后,这些事件源检测事件时将自动调用FunctionGraph函数。


消息通知服务SMN


可以编写FunctionGraph函数来处理SMN的通知,在将消息发布到SMN主题时,服务可以通过将消息负载作为参数传递来调用FunctionGraph函数,FunctionGraph函数代码可以处理事件,比如将消息发布到其他SMN主题或将消息发送到其他华为云服务。SMN消息触发的使用过程请参考使用SMN触发器


分布式消息服务DMS


可以将FunctionGraph函数配置为自动轮询DMS消息队列并处理任何新消息,FunctionGraph会定期轮询队列中的新消息,服务将轮询到的消息作为参数传递来调用函数。DMS消息触发的使用过程请参考使用DMS触发器


API Gateway


可以通过HTTPS调用FunctionGraph函数,使用API Gateway定义自定义REST API和终端节点来实现。可以将各个API操作(如GET和PUT)映射到特定的FunctionGraph函数,当向该API终端节点发送HTTPS请求时,API Gateway会调用相应的FunctionGraph函数。HTTPS调用触发函数的使用过程请参考使用APIG触发器


对象存储服务OBS


可以编写FunctionGraph函数来处理OBS存储桶事件,例如对象创建事件或对象删除事件。当用户将一张照片上传到存储桶时,OBS存储桶调用FunctionGraph函数,实现读取图像和创建照片缩略图。OBS对象操作触发函数的过程请参考使用OBS触发器


数据接入服务DIS


可以将FunctionGraph函数配置为自动轮询流并处理任何新记录,例如网站点击流、财务交易记录、社交媒体源、IT日志和位置跟踪事件等。FunctionGraph会定期轮询DIS数据流中的新记录。DIS数据流触发函数的过程请参考使用DIS触发器


定时触发器TIMER


可以使用TIMER的计划事件功能定期调用您的代码,可以指定固定频率(分钟、小时、天数)或指定 cron 表达式定期调用函数。定时触发器的使用请参考使用定时触发器


日志触发器LTS



可以编写FunctionGraph函数来处理云日志服务订阅日志,当云日志服务采集到订阅的日志后,可以通过将采集到的日志作为参数传递(LTS示例事件)来调用FunctionGraph函数,FunctionGraph函数代码可以对其进行自定义处理、分析或将其加载到其他系统。LTS日志触发的使用过程请参考使用LTS触发器


云审计服务触发器CTS


可以编写FunctionGraph函数,根据CTS云审计服务类型和操作订阅所需要的事件通知,当CTS云审计服务获取已订阅的操作记录后,通过CTS触发器将采集到的操作记录作为参数传递(CTS示例事件)来调用FunctionGraph函数。经由函数对日志中的关键信息进行分析和处理,对系统、网络等业务模块进行自动修复,或通过短信、邮件等形式产生告警,通知业务人员进行处理。CTS触发器的使用请参考使用CTS触发器。


函数模板


FunctionGraph平台提供了函数模板,在创建函数时选择模板,实现模板代码、触发器、运行环境自动填充,快速构建应用程序。

FunctionGraph提供了24个模板,包括18个入门级模板和6个进阶级模板,说明如表 4 所示。


表4 模板说明

模板类别

模板名称

模板说明

入门级

context使用指导

使用函数获取访问其他华为云服务所需的临时凭证,包括AK、SK、Token等。

从OBS下载文件

使用函数从指定的OBS(对象存储服务)桶中下载文件,读取文件并返回文件大小。

上传文件到OBS

使用函数上传本地文件至指定的OBS(对象存储服务)桶。

DMS触发器使用指导

函数定期从DMS(分布式消息服务)消费组拉取待消费消息,打印消息内容及属性。

SMN触发器使用指导

使用SMN(消息通知服务)消息触发函数,打印消息的内容和标题。

DIS触发器使用指导

函数定期从DIS(数据接入服务)数据通道拉取数据,打印数据信息。

APIG触发器使用指导

使用API网关调用函数服务,在函数中演示了返回不同的内容,如HTML页面和json结构体。

LTS触发器使用指导

使用LTS(云日志服务)日志触发函数执行,打印日志组ID、日志主题ID和日志的内容。

CTS触发器使用指导

云审计服务在记录某些特定关键操作发生时,支持对这些关键操作通过消息通知服务实时向相关订阅者发送通知,该功能由云审计服务触发,消息通知触发用户函数。

实时图片分类(按图片大小)

上传图片至OBS(对象存储服务)桶,触发函数运行,根据图片大小,分类存储图片到不同的桶中。

进阶级

日志实时分析

基于LTS云日志服务实时采集日志数据,函数工作流服务中的函数创建LTS触发器获取日志数据,经由自定义函数对日志中的告警信息进行分析和处理,通过SMN服务推送告警信息,并将告警日志集中存储在OBS桶中。

登录安全实时分析

基于CTS云审计服务实时采集用户登录/登出日志,函数工作流服务中的函数创建CTS触发器获取日志数据,通过函数代码过滤白名单,非法登录时SMN服务推送用户订阅的资源信息。

实时图片分类(按图片内容)

基于EI服务构建图片分类的无服务系统。连接EI服务,调用EI服务图片分类接口对图片进行分类,并通过OBS触发器,对每个上传到桶中的图片进行分类处理,自动将图片归档到相应的类别目录下。

图片鉴黄

基于EI服务构建图片鉴黄的无服务系统。连接EI服务,调用EI服务鉴黄接口检测图片是否为**图片,并通过APIG触发器提供接口供外部调用。

图片鉴黄

基于EI服务构建实时图片鉴黄的无服务器系统。连接EI服务,调用EI服务鉴黄接口检测图片是否为**图片,并通过OBS触发器实现实时图片检测。

语音识别

基于EI服务构建语音识别的无服务系统。连接EI服务,调用EI服务语音识别接口将wav语音文件转化为文字,并通过APIG触发器提供接口供外部调用。



开发工具


CLI工具下载

FunctionGraph服务提供命令行界面工具,用来执行函数管理、触发器管理、别名管理、函数调用等操作。命令行界面工具支持64位的Linux系统及64位Windows系统,具体下载地址如表 5 所示。

表5 CLI工具下载地址

系统

下载

MD5校验码

Linux

CLI命令行工具下载

a634e80617897ac7e07d8737d21081be

Windows

CLI命令行工具下载

2615ee8aa4f794bf08e56b75b54a4b6f

Mac

CLI命令行工具下载

84b4a51d58b707887440c683c715993f


Sandbox调试工具下载

华为云Serverless Sandbox(HSS)可以用来在本地测试函数功能,验证华为无服务器应用模型(HSAM),并为各种事件源本地生成样本有效载荷。下载地址如表 6 所示。

表6 Sandbox调试工具下载

系统

下载

MD5校验码

Linux

Linux系统下载Sandbox工具包

67ddeb07a299a03828a165562be46465

Mac

Mac系统下载Sandbox工具包

3b11c385051088a3861025194955cd5f





计费


函数工作流(FunctionGraph)仅对执行函数或工作流收费。创建函数、发布函数、管理函数、创建工作流以及管理工作流免费。计费项包括三个维度:请求次数、执行时间、节点转换次数。三个计费维度有各自的计费规则,同时计费。

表7 阶梯计费规则

产品类型

产品

收费项

价格

计费周期

函数工作流

函数

请求次数

(0~100万]

0

100万以上

1.33元/100万

执行时间

(0~40万]

0

40万以上

0.00011108元/GB-秒

工作流

节点转换次数

(0~4000]

0

4000以上

0.16元/千次

公网流量费用(可选)

公网流量将按照华为云公网流量价格进行计费



计费说明


1、华为云函数工作流FunctionGraph按照实际使用量付费,没有最低消费。

2、总费用 = 请求次数费用 + 执行时间费用 + 节点转换次数费用 + 公网流量费用(可选)。

3、请求次数是计费周期内单个函数调用的总次数。

4、执行时间是从函数代码开始执行的时间算起到其返回或终止的时间为止,计量的粒度是100毫秒,计费时执行时间会以100毫秒为单位向上舍入,例如函数执行了1005毫秒,会按照1100毫秒计费。执行时间费用的单位为GB-秒,指函数内存规格为1GB时,执行1秒的费用。如果函数内存规格为512MB,那么执行时间费用单价为:0.00011108 x(512/1024)= 0.00005554 RMB/GB-秒,其他内存规格依此类推。

5、节点转换次数是计费周期内工作流步骤之间状态转换的总次数。

6、公网流量费用是可选的,只有函数中使用公网进行数据传输时,才会产生这部分费用,请参考华为云价格详情。

7、每月的免费额度是账户及所属用户共同享有,免费的请求次数、执行时间和节点转换次数不会按月累积,在每个自然月开始时,上月未使用的免费额度清零,重新计算。








系列帖子

有Serverless真的可以为所欲为--无服务器架构介绍

有Serverless真的可以为所欲为--深入浅出介绍华为云FunctionGraph产品