数据转发到函数计算服务CFC

物联网核心套件 IoTCore

  • 旧版文档
  • 产品定价
  • 功能发布记录
  • 产品描述
    • 产品概述
    • 产品优势
    • 核心概念
    • 系统限制
  • 快速入门
    • 使用规则引擎将设备消息流转到业务服务器
    • 创建设备
    • 操作演示
    • 获取连接信息
    • 快速入门流程
    • 创建 IoT Core 实例
    • 使用 MQTT 模拟器连接及收发消息
  • 典型实践
    • 数据转发到函数计算服务CFC
    • 数据转发到用户 Kafka
    • 设备状态数据存储到时序数据库TSDB
    • 数据转发到百度消息服务BMS
  • 服务等级协议SLA
    • 服务等级协议SLA(V2.0)
  • API参考
    • 设备管理
    • 概述
  • 常见问题
    • MQTT客户端及设备SDK相关问题
    • 使用选择
  • 开发者指南
    • 设备侧
      • 通过 IoT Core 官方 SDK 接入
      • 通过开源MQTT Client SDK接入
    • 服务侧
      • IoT Core 日志 SDK (Java)
      • 概述
  • 操作指南
    • 设备接入与管理
      • 应用权限
      • 创建设备
      • 设备影子
      • 管理模板
      • 共享订阅
      • 设备预配
      • 管理设备
      • 通过开放协议接入
        • 使用证书鉴权建立MQTT连接
        • 通过CoAP发布消息
        • 通过MQTT连接及收发消息
        • 通过HTTP发布消息
    • 实例管理
      • 修改实例
      • 创建实例
      • 停止及启动实例
      • 删除实例
    • 运维管理
      • 日志服务
    • 规则引擎
      • 常用查询语句示例
      • 数据目的地管理
      • 数据查询语法和函数
      • 操作步骤
      • 数据目的地
      • 数据筛选
      • 概述
所有文档
menu
没有找到结果,请重新输入

物联网核心套件 IoTCore

  • 旧版文档
  • 产品定价
  • 功能发布记录
  • 产品描述
    • 产品概述
    • 产品优势
    • 核心概念
    • 系统限制
  • 快速入门
    • 使用规则引擎将设备消息流转到业务服务器
    • 创建设备
    • 操作演示
    • 获取连接信息
    • 快速入门流程
    • 创建 IoT Core 实例
    • 使用 MQTT 模拟器连接及收发消息
  • 典型实践
    • 数据转发到函数计算服务CFC
    • 数据转发到用户 Kafka
    • 设备状态数据存储到时序数据库TSDB
    • 数据转发到百度消息服务BMS
  • 服务等级协议SLA
    • 服务等级协议SLA(V2.0)
  • API参考
    • 设备管理
    • 概述
  • 常见问题
    • MQTT客户端及设备SDK相关问题
    • 使用选择
  • 开发者指南
    • 设备侧
      • 通过 IoT Core 官方 SDK 接入
      • 通过开源MQTT Client SDK接入
    • 服务侧
      • IoT Core 日志 SDK (Java)
      • 概述
  • 操作指南
    • 设备接入与管理
      • 应用权限
      • 创建设备
      • 设备影子
      • 管理模板
      • 共享订阅
      • 设备预配
      • 管理设备
      • 通过开放协议接入
        • 使用证书鉴权建立MQTT连接
        • 通过CoAP发布消息
        • 通过MQTT连接及收发消息
        • 通过HTTP发布消息
    • 实例管理
      • 修改实例
      • 创建实例
      • 停止及启动实例
      • 删除实例
    • 运维管理
      • 日志服务
    • 规则引擎
      • 常用查询语句示例
      • 数据目的地管理
      • 数据查询语法和函数
      • 操作步骤
      • 数据目的地
      • 数据筛选
      • 概述
  • 文档中心
  • arrow
  • 物联网核心套件IoTCore
  • arrow
  • 典型实践
  • arrow
  • 数据转发到函数计算服务CFC
本页目录
  • 一、简介
  • 二、应用场景描述
  • 三、示例场景描述
  • 四、操作步骤
  • 4.1 创建 BOS 实例
  • 4.2 创建 CFC 实例并配置目的地
  • 4.3 创建 IoT Core 实例并配置规则引擎
  • 4.3.1 创建 IoT Core 实例
  • 4.3.2 添加模板
  • 4.3.3 添加设备
  • 4.3.4 生成连接信息
  • 4.3.5 配置规则引擎
  • 4.4 验证设备日志转发存储功能

数据转发到函数计算服务CFC

更新时间:2025-08-21

一、简介

在本教程中,您将学习到如何将 IoT Core 的设备消息通过「规则引擎」转发至「函数计算 CFC」,并通过「函数计算 CFC」进行用户自定义的数据处理。

二、应用场景描述

规则引擎可以做到海量数据的过滤、变型和转发,但当您对设备数据处理有着更负复杂,更个性化的处理需求时,仅仅使用规则引擎可能无法满足全部需求,但可以结合「函数计算 CFC」来满足相关处理需求。通过将「规则引擎」与「函数计算 CFC」的组合,数据的处理将会变得更加灵活多样。主要应用场景包括:

  1. 进行复杂场景的数据处理。
  2. 存储设备日志信息。
  3. 转发设备消息到用户自定义服务。

三、示例场景描述

为了带您深入了解「规则引擎」与「函数计算 CFC」的组合使用方式,将采用一个简单的示例:

  • 规则引擎将设备产生的系统日志转发到 CFC。
  • CFC 对接受到的日志消息进行解码,并将消息内容存储到对象存储 BOS 中。

操作步骤如下:

  1. 创建对象存储 BOS 实例。
  2. 创建函数计算 CFC 实例,并配置 BOS 为日志存储目的地。
  3. 创建 IoT Core 实例,创建转发规则。
  4. 验证设备日志转发存储功能。

四、操作步骤

4.1 创建 BOS 实例

具体方式请参考《对象存储 BOS 创建Bucket》

登录对象存储 BOS 管理控制台。点击左侧导航栏 " Bucket 列表",在 Bucket 列表中找到并点击 + 按钮( “ 新建 Bucket ” 按钮),在弹出框中按照提示创建 Bucket。

image.png

点击「确定」后,该 Bucket 创建完成。

4.2 创建 CFC 实例并配置目的地

选择创建空白函数。

image.png

在「函数配置」中,选择「对象存储 BOS」作为日志存储,日志存储路径自行定义。

image.png

「触发器」选择无。

image.png

因为规则引擎会将消息内容以 Base64 编码后发送给CFC,详情请参考《转发到函数 CFC》。所以,当我们需要在 CFC 中获取规则引擎传输的数据时,需要进行如下两个步骤:

1.将event['message']中的消息进行base64解码。

2.根据 Protocol Buffers 的描述文件,将解码后的数据转换为对象。

在本教程中,函数计算 CFC 函数运行时采用 Python3.6,其功能为:将设备数据解码并打印 log。

Python 函数程序参考代码如下:

Plain Text
1import base64
2import time
3from google.protobuf import json_format
4import json
5import MqttLogConstants_pb2 as MqttLog
6from TrafficLogEntry_pb2 import TrafficLogEntries
7import logging
8logging.basicConfig()
9logger = logging.getLogger()
10logger.setLevel(logging.INFO)
11
12# 解码 byte 数据,转化为 log 对象
13def parse_log_entries(bytes):
14    entries = TrafficLogEntries()
15    entries.ParseFromString(bytes)
16    return entries
17
18# CFC 函数入口
19def handler(event, context):
20    # 进行base64解码
21    logBytes=base64.b64decode(event['message'])
22    # 解码 byte 数据,转化为 log 对象
23    logEntries = parse_log_entries(logBytes)
24    for entry in logEntries.entries:
25        if entry.code.startswith('MQT'):
26            entryJson = json.loads(json_format.MessageToJson(entry))
27            details = entryJson['details']
28            newDetails = {}
29            for keyNum in details:
30                detail = MqttLog.LogDetailKey.Name(int(keyNum))
31                newDetails[detail] = details[keyNum]
32            entryJson['details'] = newDetails
33            # 将解码结果作为日志打印
34            logger.info(entryJson)
35    return None

上传 Python 函数程序处理包。

image.png

4.3 创建 IoT Core 实例并配置规则引擎

4.3.1 创建 IoT Core 实例

进入控制台,点击「创建 IoT Core」。

image.png

信息填写完成后点击「提交」。

image.png

创建完成后,实例将显示在实例列表中。

image.png

4.3.2 添加模板

点击设备管理中的模板菜单,点击「添加模板」进行模板添加。

image.png

填写「模板名称」,点击「确认」。

image.png

确认后,创建名为 fortest 的设备模板,可在模板列表中查看。

image.png

4.3.3 添加设备

点击「新增设备」创建设备。

image.png

认证方式选择「秘钥认证」,模板选择上述步骤创建的模板「fortest」,并提交。

image.png

创建成功后会显示设备的密钥,点击「下载」保存密钥记录文本。

image.png

4.3.4 生成连接信息

为了连接设备,需要使用 MQTT连接信息生成器 生成设备的连接鉴权信息,记录下「结果(MQTT连接信息)」备用。

image.png

请保存「设备连接鉴权信息」,权信息将会在「步骤4.4」中使用。

4.3.5 配置规则引擎

进入物联网核心套件控制台,找到实例下的「规则列表」,点击「创建规则」进行规则的创建。

image.png

输入规则信息后,点击「确认」即可创建规则。

image.png

点击「编辑调试」,进入编辑界面。

image.png

编辑规则的「输入来源」,点击 topic 模板。

当设备连接、监听、断开时,日志数据会记录在$sys/log/info/#中

image.png

设备模板选择 「SYS_LOG_TOPIC」 ,可选 topic 选择「$sys/log/info/#」。

image.png

点击「规则目的地」。

image.png

选择 「函数计算 CFC」作为目的地,函数选择 Python 程序对应的函数,并点击「保存」。

image.png

规则保存成功后,进入规则列表,启动规则,规则处于「运行中」状态时,表示规则正在生效。

image.png

4.4 验证设备日志转发存储功能

经过上述步骤的操作,环境已经搭建完毕,设备消息可以经过规则引擎转发到 CFC,CFC会将产生的日志信息存储到 BOS 中。

将「步骤4.3.4」生成的连接鉴权信息填写到 MQTT 客户端中,点击「connect」。

image.png

观察 CFC 中的「日志」,发现数据已成功接收并转码。

image.png

image.png

上图 INFO 级别的日志,正是 Python 函数程序中的打印的 log。

查看 BOS,可查看到日志文件,设备日志信息存储完成,验证完成。

image.png

上一篇
快速入门
下一篇
数据转发到用户 Kafka