本文说明如何使用微消息队列MQTT版的数据流出规则将微消息队列MQTT版的数据流出至函数计算HTTP函数。

操作流程

将数据流出至函数计算HTTP函数的操作如下:

dg_flow_chart

创建函数计算HTTP函数

如何创建函数计算HTTP函数,请参见创建HTTP函数并配置HTTP触发器

说明 本文以函数计算HTTP函数为例。其他类型的HTTP服务也可以参考本文操作。

创建微消息队列MQTT版实例

如何创建微消息队列MQTT版实例,请参见创建实例

注意 目前仅美国(弗吉尼亚)和美国(硅谷)的 微消息队列MQTT版服务支持将数据流出至HTTP服务。请确保您是在以上地域创建实例。

创建数据源Topic

如何创建数据源Topic,请参见创建数据源Topic

创建数据流出规则

创建数据流出规则,将数据从微消息队列MQTT版数据源Topic流出至函数计算HTTP函数。

  1. 在左侧导航栏,单击规则管理
  2. 规则管理页面,单击创建规则
  3. 创建规则面板,单击数据流出页签。
  4. 数据流出页签下方,按提示设置以下参数,单击确定
    类型 参数 是否必填 示例值 描述
    规则详情 规则ID fc_http_rule 规则的全局唯一标识。取值:
    • 只能包含字母、数字、短划线(-)和下划线(_),至少包含一个字母或数字。
    • 名称长度限制在3字符~64字符之间,长于64字符将被自动截取。
    规则描述 数据流出至函数计算HTTP函数 规则的描述。
    状态 启用 是否启用当前规则。取值:
    • 启用
    • 禁用
    数据源(Source) Topic fc-http-test 数据源Topic。
    订阅关系表达式 订阅关系的表达式。如果不设置订阅关系表达式,则默认数据源Topic下所有消息都会被转发。
    • 表达式支持以下符号:
      • 主题层级分隔符为正斜线(/),例如chat/teacher/room1。
      • 单层通配符加号(+),例如chat/+。
      • 多层通配符井号(#),如chat/#
    • 最多支持5个表达式。
    • 表达式之间是或的关系。
    • 除层级分隔符外,只能包含字母,数字,短划线(-)以及下划线(_)。
    • 长度不能超过64字符。
    QOS 1 消息传输的服务质量。如果不设置QOS,则默认全部转发。取值:
    • 0:代表最多分发一次。
    • 1:代表至少到达一次。
    • 2:代表仅分发一次。
    消息有效期 259200 消息的有效期。消息生存时间小于等于消息有效期的消息被推送。单位为秒。取值:1~259200。
    数据目标(Target) 目标类型 HTTP 数据目标的类型。
    Endpoint https://18807708****.cn-hangzhou.fc.aliyuncs.com/2016-08-15/proxy/fc_http_for_mqtt_test/fc_http_function_test/ HTTP服务的接入点。本文以函数计算HTTP函数为例,因此填写函数计算HTTP函数的HTTP触发器的路径。
    注意 目前仅支持公网类型的HTTP服务接入点。
    重试策略 数据流出失败后的重试策略。如果不设置重试策略,则默认无重试。
    • 最多重试5次。
    • 每次重试时间间隔固定为60秒。
    规则管理页面的 规则ID列表显示成功创建的数据流出规则。

进行安全校验(可选)

创建将数据流出至函数计算HTTP函数的规则后,微消息队列MQTT版会自动为规则生成一个安全校验Token。如果您的函数计算HTTP函数,需要确认接收的HTTP请求的来源为微消息队列MQTT版,则可以通过该安全校验Token进行签名校验。

  1. 微消息队列MQTT版控制台的规则管理页面的规则ID列表ID,找到目标规则后,在其右侧操作列,单击详情
  2. 数据目标(Sink)区域,单击icon_view,然后单击安全校验Token以复制安全校验Token。
  3. 参考以下信息以及获取的安全校验Token,修改您的HTTP函数代码以对安全校验Token进行签名校验。
    • HTTP请求示例的参数如下:
      SignatureVersion=1.0
      &Format=JSON
      &SignatureNonce=ec4f2ea2-78bf-41a7-b1f7-1c9ba30c4d9b160625039****
      &Message={
          "clientId":"GID_MQTT_CONSOLE@@@lmqshpre011606292****",
          "payload":"dGVzdA==",
          "qoslevel":"1",
          "topic":"fc-http-test"
      }
      &Version=2020-04-16
      &RuleId=fc-http-test
      &Signature=8H0vF0fZWTHMSxJUGDF****
      &SignatureMethod=HMAC-SHA1
      &Timestamp=2020-11-24T20:39:50Z
    • HTTP请求参数的说明如下:
      参数 类型 示例值 描述
      SignatureVersion String 1.0 签名算法版本。取值:1.0。
      Format String JSON 返回消息的格式。取值JSON。
      SignatureNonce String ec4f2ea2-78bf-41a7-b1f7-1c9ba30c4d9b160625039**** 唯一随机数。用于防止网络重放攻击。在不同请求间要使用不同的随机数值。
      Message String 消息内容。
      clientId String GID_MQTT_CONSOLE@@@lmqshpre011606292**** 客户端ID。
      payload String dGVzdA== 消息负载。为了防止HTTP请求出错,微消息队列MQTT版对请求中的消息负载进行了Base64编码。例如,您的原始消息负载是test,则经过Base64编码后是dGVzdA==。
      注意 如果您的业务需要获取原始消息负载,您可以使用Base64.decodeBase64()方法对HTTP请求的消息负载进行Base64解码,从而获取原始消息负载。
      qoslevel Integer 1 消息传输的服务质量。
      topic String fc-http-test 数据源Topic。
      Version String 2020-04-16 API版本号。使用YYYY-MM-DD日期格式。取值:2020-04-20。
      RuleId String fc-http-test 规则的全局唯一标识。
      Signature String 8H0vF0fZWTHMSxJUGDF**** 签名结果串。
      SignatureMethod String HMAC-SHA1 签名方式。取值:HMAC-SHA1。
      Timestamp String 2020-11-24T20:39:50Z 请求的时间戳。日期格式。使用UTC时间按照ISO8601标准,格式为YYYY-MM-DDThh:mm:ssZ。
    • HTTP请求的加签算法,请参见签名机制

使用SDK接入

使用微消息队列MQTT版SDK将您的终端接入微消息队列MQTT版,从而使终端数据通过规则流出至函数计算HTTP函数。如需获取微消息队列MQTT版SDK,请参见SDK下载