从CFC引入多个函数下发
本章主要介绍如何在函数应用中配置多个从百度 CFC 中导入的函数
CFC 函数创建
本文将以 Python3.6 为例进行说明。
从百度智能云控制台进入 函数计算CFC,我们选择"华南-广州"区域,点击“创建函数”按钮,选择“空白函数”。
然后,函数名称取名 “bie-cfc-demo”,运行时选择 “Python 3.6”,点击“提交”按钮。
创建成功,我们点击 “进入代码编辑页”。
CFC函数代码页面自动为我们生成 “Hello World” 函数。
函数的入口只能拥有一个,但支持添加多个函数,互相调用,我们新增两个函数:
def add(event, context):
result = {}
result['result'] = event['x'] + event['y'] + event['z']
result['result2'] = add2(event, context)['result']
return result
def add2(event, context):
result = {}
result['result'] = event['x'] + event['y'] + event['z']
return result
我们新增了 add
和 add2
两个函数,可以看到 add
函数中调用了 add2
函数。然后当前代码点击“保存”按钮,处理程序中修改入口函数为 index.add
,并点击“确定”按钮。
代码新增完成后,我们进行一个测试,来确认代码执行是否正常。点击函数代码页面中的“测试”按钮,如下图:
我们在测试事件页面中,新建一个测试用例,例子如下:
{
"x": 1,
"y": 2,
"z": 3
}
事件模板我们选择 “HelloWorld模板”,事件名称我们取名为 “biecfccompute”,下面测试代码框我们输入上面的json代码,点击“创建”按钮,后续我们还会用到这个测试事件。
弹出消息显示“创建成功”,随后我们点击 “执行” 按钮来对新增的 add
和 add2
函数进行测试。
测试结果 {"result": 6, "result2": 6}
为我们 add
函数的结果,可以看到,输出结果正确。
然后,我们再对 add2
函数进行测试,我们回到函数代码页面,修改处理程序为 index.add2
,并点击“确定”按钮。
修改处理程序后我们还需要进行测试,来查看是否修改成功,选择 biecfccompute
测试事件再次进行测试,点击“执行”按钮。
可以看到结果为 {"result": 6}
,输出结果正确。
最后,我们需要发布新版本,才可以被存储卷引入。
CFC 配置项创建
回到智能边缘控制台,我们需要创建"配置项"来引入上步中创建的 CFC 函数。
我们需要设置配置项函数标签,表示这个是一个函数配置项,可供函数应用引用。
然后选择导入函数选项,选中 CFC 函数名称和版本,点击确定,完成导入操作。
CFC 应用创建
创建函数应用,并选择上步创建的 CFC 配置项。
到此,CFC 函数导入成功。
新建节点
接下来我们配置边缘规则 baetyl-broker、baetyl-rule 模块来调用 CFC 函数。
在节点创建界面,新建节点。
并将上步中创建的 CFC 应用绑定到该节点上。
配置 baetyl-rule
在节点"应用部署"菜单栏,选择 baetyl-rule 模块,点击查看。
然后点击数据卷,选择第一个配置项进行配置。
baetyl-rule 的配置如下
rules:
- name: rule1
source:
topic: broker/topic1
target:
topic: broker/topic2
function:
name: bie-cfc-compute/add
- name: rule2
source:
topic: broker/topic1
target:
topic: broker/topic3
function:
name: bie-cfc-compute/add2
logger:
level: debug
encoding: console
更新配置项并保存。
配置 baetyl-broker
按照上步方法配置 baetyl-broker, 配置文件如下:
listeners:
- address: tcp://0.0.0.0:8004
principals:
- username: test
password: hahaha
permissions:
- action: pub
permit: ["#"]
- action: sub
permit: ["#"]
logger:
level: info
并在 baetyl-broker 的服务配置界面添加 8004 端口,将服务暴露到宿主机上。
上述配置成成功后,在端侧执行 kubectl 可以看到如下现象:
端侧验证
等待上述服务部署到端侧后,我们使用 mqttbox 发送消息到 baetyl-broker 来进行测试。
首先我们使用 mqttbox 连接,连接信息如下:
连接成功后,如下所示:
我们的输入用例为 {"x":1,"y":2,"z":3}
结果如图,输出结果正是我们在CFC函数中 add 和 add2 函数计算的结果。