文档中心 边缘函数 快速入门 步骤 3:配置函数及触发规则

步骤 3:配置函数及触发规则

最近更新时间:2019-08-01 12:00:14

本教程将在前面已经配置云端设备对象、配置完成设备端 Core 的基础上,介绍如何配置函数、将函数与设备绑定,及配置触发规则。

创建及配置函数

调度到边缘设备上运行的函数,目前也同样通过无服务器云函数 SCF 进行管理。我们可以通过进入无服务器云函数控制台,单击【函数服务】,并选择与设备管理中创建的设备相同的地域。

请登录 无服务器云函数控制台,单击【函数服务】,并选择与设备管理中创建的设备相同的地域,单击【新建】按钮,输入函数名称,并选择Python 2.7Python 3.6环境,完成函数创建。

说明:

目前绑定到边缘设备中运行的函数仅支持 Python 环境,后续将持续增加更多环境支持。

发布函数

编辑完函数后,单击函数管理页面右上角的【发布】按钮,发布一个函数版本。通过发布及生成版本,函数代码及配置将会固化,用于后续与设备绑定及调度至设备上运行。

说明:

目前仅发布后的函数版本可以绑定和下发至设备。

函数与设备绑定

在设备详情页面,通过【函数】页面中的【新建绑定】,可以建立函数和设备间的绑定关系。

  • 绑定函数时,目前仅支持选择与设备在相同地域的函数,同时仅支持选择运行环境为 Python 的函数,更多运行环境支持将在后续持续增加。在选择函数后,需要选择函数的具体版本,$LATEST 版本无法绑定至设备。
  • 函数的运行内存,将限制函数在当前设备上运行时的可用内存。如果函数在运行时超出了设置内存,将会触发 OOM 错误导致函数退出。
  • 函数的超时时间,将限制函数在当前设备上运行时,入口函数执行的超时时间。如果函数的入口函数在被触发时,超过指定时间还未返回,函数执行过程将被中断并报错。
  • 函数的运行模式分为“持续运行”与“触发运行”。
    • 持续运行的模式,函数在下发到设备后将立刻启动,并以单实例不退出的方式运行。
    • 触发运行的模式,函数在下发到设备后不会立刻启动,而是在有消息转发给函数时,触发函数运行,并根据消息量,在一定情况下使用多实例方式运行。

运行模式说明

函数的运行模式分为“持续运行”与“触发运行”,用于满足不同场景。在不同模式下,函数的表现,使用方式均稍有不同。

持续运行

持续运行的函数,在通过部署下发到设备上以后,将会立刻启动一个实例,并启动函数。

通常,持续运行的函数,可用于进行数据采集类业务。通过持续不断的运行,不断读取传感器数据,并通过物联网消息,发送给后续函数处理,或传递到云端处理。
持续运行的函数,在入口函数之外通过启动循环,调用业务代码实现业务。因此在函数初始化时,业务循环就可以启动,并利用实例不退出的特性,循环运行。
同时持续运行的方式,也可以接收消息投递。投递的消息将用来触发入口函数的执行。入口函数在执行时,同样也需要遵循函数配置的超时时间;入口函数执行完成后,退出函数,但实例并不退出销毁。

触发运行

触发运行的函数,通过部署下发到设备上的只有代码包及配置。触发运行的函数表现,与云端运行的云函数表现相同。

触发运行的方式,通常用于数据处理函数。在接收到消息时,通过启动函数,对消息中的数据进行处理,实现数据清洗、逻辑判断、归档存储等功能。
配置为触发运行的函数,需要在消息规则中配置指向函数的消息规则,否则在没有消息被转发到函数的情况下,函数不会被触发运行。

配置消息规则

消息规则指的是设备端 efc 内的消息转发规则。efc 内置了一个 MQTT 的 broker,具有消息的转发能力;message broker 通过与云端 mqtt server 连接,并且在本地提供 MQTT 监听端口,实现了云端、本地端、函数三者之间的消息转发能力。

通过设备管理页面中的【消息规则】页,可以新建消息规则。每条规则有三部分组成:源、目的、主题:

  • 源:消息来源,指代消息由哪里产生的。目前可选择的来源包括云端及设备端,分别表示向云端 mqtt server 发送的消息,及通过设备本地消息 broker 发送的消息。
  • 目的:消息目标,指代接收消息的位置。目前可选择的目标包括已经绑定的云函数,消息将转发到指定的云函数。
  • 主题:消息主题,指代何种主题的消息遵循此规则。主题可按 MQTT 协议自定义。