在CFC中配置多个函数并下发边缘节点
所有文档

          智能边缘 BIE

          在CFC中配置多个函数并下发边缘节点

          本章主要介绍如何在函数应用中配置多个从百度 CFC 中导入的函数

          CFC 函数创建

          本文将以 Python3.6 为例进行说明。

          从百度智能云控制台进入 函数计算CFC,我们选择"华南-广州"区域,点击“创建函数”按钮,选择“空白函数”。

          cfc-create-buttom.png

          然后,函数名称取名 “bie-cfc-demo”,运行时选择 “Python 3.6”,点击“提交”按钮。

          cfc-create.png

          创建成功,我们点击 “进入代码编辑页”。

          cfc-create-success.png

          CFC函数代码页面自动为我们生成 “Hello World” 函数。

          cfc-edit-page.png

          函数的入口只能拥有一个,但支持添加多个函数,互相调用,我们新增两个函数:

          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

          我们新增了 addadd2 两个函数,可以看到 add 函数中调用了 add2 函数。然后当前代码点击“保存”按钮,处理程序中修改入口函数为 index.add ,并点击“确定”按钮。

          cfc-edit-code.png

          代码新增完成后,我们进行一个测试,来确认代码执行是否正常。点击函数代码页面中的“测试”按钮,如下图:

          cfc-edit-test-button.png

          我们在测试事件页面中,新建一个测试用例,例子如下:

          {
              "x": 1,
              "y": 2,
              "z": 3
          }

          事件模板我们选择 “HelloWorld模板”,事件名称我们取名为 “biecfccompute”,下面测试代码框我们输入上面的json代码,点击“创建”按钮,后续我们还会用到这个测试事件。

          cfc-edit-test-create.png

          弹出消息显示“创建成功”,随后我们点击 “执行” 按钮来对新增的 addadd2 函数进行测试。

          cfc-edit-test-success.png

          测试结果 {"result": 6, "result2": 6} 为我们 add 函数的结果,可以看到,输出结果正确。

          然后,我们再对 add2 函数进行测试,我们回到函数代码页面,修改处理程序为 index.add2 ,并点击“确定”按钮。

          cfc-edit-change.png

          修改处理程序后我们还需要进行测试,来查看是否修改成功,选择 biecfccompute 测试事件再次进行测试,点击“执行”按钮。

          cfc-edit-test-add2.png

          可以看到结果为 {"result": 6} ,输出结果正确。

          最后,我们需要发布新版本,才可以被存储卷引入。

          cfc-edit-publish.png

          CFC 配置项创建

          回到智能边缘控制台,我们需要创建"配置项"来引入上步中创建的 CFC 函数。

          我们需要设置配置项函数标签,表示这个是一个函数配置项,可供函数应用引用。

          image.png

          然后选择导入函数选项,选中 CFC 函数名称和版本,点击确定,完成导入操作。

          image.png

          CFC 应用创建

          创建函数应用,并选择上步创建的 CFC 配置项。

          image.png

          到此,CFC 函数导入成功。

          新建节点

          接下来我们配置边缘规则 baetyl-broker、baetyl-rule 模块来调用 CFC 函数。

          在节点创建界面,新建节点。

          image.png

          并将上步中创建的 CFC 应用绑定到该节点上。

          image.png

          配置 baetyl-rule

          在节点"应用部署"菜单栏,选择 baetyl-rule 模块,点击查看。

          image.png

          然后点击数据卷,选择第一个配置项进行配置。

          image.png

          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-broekr 的服务配置界面添加 8004 端口,将服务暴露到宿主机上。

          image.png

          上述配置成成功后,在端侧执行 kubectl 可以看到如下现象:

          image.png

          端侧验证

          等待上述服务部署到端侧后,我们使用 mqttbox 发送消息到 baetyl-broker 来进行测试。

          首先我们使用 mqttbox 连接,连接信息如下:

          image.png

          连接成功后,如下所示:

          image.png

          我们的输入用例为 {"x":1,"y":2,"z":3} 结果如图,输出结果正是我们在CFC函数中 add 和 add2 函数计算的结果。

          image.png

          上一篇
          使用Modbus采集温湿度传感器
          下一篇
          自定义函数运行包并下发边缘节点