典型使用说明
更新时间:2024-04-22
基本介绍
概述
函数应用由函数运行时和函数脚本两部分组成:
- 函数运行时为BIE官方提供,支持python36、node85等多种运行时
- 函数脚本则需要由用户完成编写。函数脚本以卷挂载的形式与函数应用关联。具体参考 配置管理->函数 章节
函数应用同时支持容器模式和进程模式。在操作使用上,两者本身没有什么区别。下面以容器模式的函数应用使用指南进行说明。
函数入参
函数入参 | 解释说明 |
---|---|
event | 调用函数时传入的数据 |
context | 平台定义的函数入参,它的数据结构由函数设计,包含函数运行时的信息,例如请求ID、临时密钥等。 |
函数调用
函数调用时,调用的是baetyl-function模块。该模块提供前端代理,是函数入口,将请求透传给后端的函数运行时模块。
调用方式分为两种:
- 通过baetyl-rule调用。在baetyl-rule的配置文件里加入function,可以进行函数服务调用,其中source的作为调用函数时传入的数据。
- 边缘函数通过暴露 HTTP 接口供其他服务调用,具体可以参考:调用函数应用服务。baetyl-function模块的配置可以参考:baetyl-function。请求地址:
https://baetyl-function.baetyl-edge-system:50011/[function-service]/[function]
说明:暂不支持云端远程调用边缘函数
操作指南
创建函数应用
基本信息
在应用列表页面,点击创建应用进入应用创建页面。点击添加标签进入标签设置界面,填写应用标签。
填写应用基本信息:
- 【名称】表示应用的名称,不可为空,不可重复
- 【函数应用】是否为函数应用,此处选择 是
- 【描述】表示应用的文字性描述
- 【标签】表示用来标识应用的信息
函数服务
点击下一步进入函数服务配置界面。卷配置与非函数应用配置类似。点击添加标准容器,填写函数服务基本信息:
- 【名称】表示函数服务的名称,function-service,不可为空。同一个应用中的服务名称不可重复,包含相同服务名称的不同应用部署到同一个节点会导致其中一个部署报错
- 【函数配置项】表示选择配置管理里预先配置的函数,函数配置在这里创建
- 【运行时】表示需要选择的函数运行时环境,目前运行时环境支持python3,nodejs10和sql
-
【函数列表】表示设置函数配置项里选择的函数的函数调用入口,支持多个函数调用
- 函数名称用户自定义且列表内唯一,我们可以通过
函数服务名称/函数名称
访问到该函数服务; -
函数入口表示执行函数。
- 对于Python/Node运行时来说,函数入口由函数脚本和处理函数名(filename.handler-method)组成,例如:填写 "index.handler",调用 index.py 中定义的 handler 方法。
- 对于Sql运行时来说,函数入口等于函数脚本名称,函数脚本内即是用户编写的Sql语句,例如a.sql
- 容器目录表示代码所在路径。
- 函数名称用户自定义且列表内唯一,我们可以通过
- 【卷配置】表示配置函数存储的容器的目录
- 【资源限制】表示启动服务容器的资源限制,目前支持设置CPU和内存
比如,我们在函数配置项中编写如下配置:
其中 index.js 是函数脚本,hander 是处理函数,index.js 处于配置项的根目录下。然后我们在函数列表中引入此函数:
此后我们在端上可以通过 test-node/process 接口调用该函数,其中 test-node 是服务名,process 是函数列表中的函数名称。
对于 SQL 运行时,配置稍有不同,如下所示:
部署函数应用
函数应用的部署方式与容器应用的部署方式是一样的,都是通过节点标签匹配来实现将应用部署至目标节点。可以参考容器应用部署。