写点什么

Amazon IoT Core 服务成本优化

  • 2021 年 12 月 25 日
  • 本文字数:2946 字

    阅读完需:约 10 分钟

Amazon IoT Core 服务成本优化


背景介绍


在进行物联网设备连接时,每个设备都需要通过消息的形式与 Amazon IoT Core 进行数据交互。随着消息交互数量的增加,如果不对整体架构进行优化,很容易造成消息成本的指数增长,甚至是不必要的浪费。本文结合 Amazon IoT Core 的相关计费方式,探讨潜在的成本优化模型,从而更好的帮助在有限预算下提升产业性能及使用体验。


Amazon IoT Core 物联网服务计费模型


Amazon IoT Core 服务的计费模型主要包括四个部分,每个部分独立计费,使得成本优化的颗粒度更细。以下计费报价参考亚马逊云科技美国东部区域的报价。


1. 连接性


设备网关负责维护 Amazon IoT 解决方案中的所有互联设备的会话。Amazon IoT 设备网关支持通过 MQTT、MQTT Over WebSockets 和 HTTP 实现的互联设备与亚马逊云科技平台之间的安全、双向通信。MQTT 和 HTTP 等通信协议使公司能够利用行业标准协议,而不必使用会限制将来的互操作性的专属协议。其中连接费用与描述如下:


  • $0.08 每 1 百万个设备/每分钟

每个设备以全年每时每刻连接计算共 525,600 分钟(60 分钟*24 小时*365 天)计算,每个设备的连接一年的总费用为 $0.042

  • PING 消息包括 MQTT PINGREQ,MQTT PING RSP 消息没有费用。


2. 收发消息


物联网设备连接时,设备的状态需要通过消息的形式与 Amazon IoT 平台进行数据交互。Amazon IoT 消息代理就是这么一项发布/订阅消息的代理服务,可是与 IoT 设备相互发送和接收消息。在与 Amazon IoT 通信时,客户端(设备)将经过编址的消息发送到 Sensor/temp/room1 之类的主题。进而,消息代理将消息发送到已注册接收该主题消息的所有客户端。发送消息的操作被称为发布。已注册接收该主题筛选消息的操作被称为订阅。其中消息类型包含:


  • 设备发到 Amazon IoT 服务的消息数量

  • Amazon IoT 发到设备的消息数量



每条消息以 5KB 长度计费,多于 5KB,等价到多个 5KB 进行费用收取,例如 8KB 的消息,按照 2 条 5KB 消息收取费用。每条消息长度最大 128KB。


3. 设备影子与设备注册


Device Shadow 服务可以为您连接到 Amazon IoT 的每台设备在云中保留一个“影子”。无论该设备是否连接到 Internet,您都可以使用该影子通过 MQTT 或 HTTP 获取和设置设备的状态(调用 Amazon IOT API 中的 GetThingShadow 或者 UpdateThingShadow)。每台设备的影子都由相应事物的名称唯一标识。


设备注册的过程请参考“在 Registry 中注册设备”,注册过程使用的 API 收费详情,请参考“注册过程 API 与收费(REGISTRY 一节)


设备影子与设备注册费用如下:


  • $1.25 每 1 百万个设备影子操作

  • $1.25 每 1 百万个设备注册操作

  • 数据大小以 1KB 为单位进行收费


4. 规则引擎


收到 Amazon IoT 设备的消息之后,亚马逊云科技将对消息进行数据存储,分析等操作。这个操作由规则引擎来触发。


Amazon IoT 规则由 SQL SELECT 语句、主题筛选条件和规则操作组成。设备通过将消息发布到 MQTT 主题来向 Amazon IoT 发送信息。利用 SQL SELECT 语句,您可以从传入的 MQTT 消息提取数据。Amazon IoT 规则的主题筛选条件用于指定一个或多个 MQTT 主题。当与主题筛选条件匹配的主题收到 MQTT 消息时,规则将被触发。借助规则操作,您可以获取从 MQTT 消息提取的信息并将其发送到其他亚马逊云科技服务做存储与分析等。规则操作是针对 Amazon DynamoDB、Amazon Lambda、Amazon SNS 和 Amazon S3 等亚马逊云科技服务定义的。使用 Amazon Lambda 规则,您可以调用其他亚马逊云科技服务或第三方 Web 服务。有关规则操作的完整列表,请参阅 Amazon IoT 规则操作。规则引擎的触发与执行费用如下:


  • $0.15 每 1 百万次规划引擎触发 $0.15 每 1 百万次规划引擎执行每条触发的消息以 5KB 为单位收取费用,多于 5KB,以多条 5KB 进行计费


费用计算案例


1.  如下以 10,000 台设备为例,来计算 Amazon IoT 服务收费,例子中每台设备操作包括:


  • 每 5 分钟 Ping 主服务一次,全年保持活跃

  • 约每 30 分钟发送 1 条消息,每天共发送 50 条消息,每条消息 1KB

  • 约每 30 分钟收到 1 条消息,每天共收到 50 条消息,每条消息 1KB

  • 每天设备影子 100 次更新,消息容量 1KB

  • 每天触发规则引擎 100 次,执行 100 次


a. 每个设备计算过程如下:


  • 连接时长:

    全年保持活跃,连接时间共 525,600 分钟(60 分钟*24 小时*365 天)

  • 消息数:

    发 50 条,收 50 条,共 100 条,每条 1KB,按 5KB 计算

  • 设备影子与设备注册消息:

    每条消息都更新设备影子,共 100 条,每条 1KB

  • 消息引擎触发数:

    共触发 100 次,执行 100 次


b. 10,000(1 万)台设备,每台设备每月费用,每年费用,设备总年费用按表格统计如下:



由下图可以看出连接方面的费用比较固定,消息,设备影子,引擎在收费项目中所占比例比较大。那么在使用当中,如何调整这 3 个项目,来优化费用比较?



费用优化


下面只是给出一个优化思路,真正优化方案的前提,还是以用户实际需求出发。


思路 1:调整消息数据与内容


  1. 假设设备状态在 30 分钟内改变非常少,如夜间的家用 Amazon IoT 设备如净水器、扫地机器人等。可以调整(减少)信息发送间隔,聚合信息长度,比如上例中,可以每隔 60 分钟发送一次信息,或者转为终端触发式(启动或者关闭前发送)。减少发送次数。如在设备启动后与关闭前发送消息。

  2. 丰富发送内容,对于例行消息,可以在触发式,一起发送到平台,比如过去 3 条聚合在一起,成为 1 条 3KB 信息,发送总数减少,每条容量 5KB 内不额外收费。如 Amazon IoT 设备净水器在开启时连接 3 条消息发送开水时间,滤芯状态,是否漏水等,可以合并为一条一起发送。

  3. 由于 Amazon IoT 消息多与设备相关,有一些与设备应用相关的信息数据,如设备采集的图像与视频等,可以由设备其它通道传入到云端存储进行保存,如文件保存到 Amazon  S3,流式数据可以通过 Amazon Kinesis 客户端保存。


思路 2:关于设备影子


  • 设备影子的主要目的是方便云端在设备离线时进行管理。所以有关此类状态信息会发给设备影子,相应的,不需要此功能的,可以不发送给影子消息主题。以节省费用。比如家用电器接入 WIFI 之后网络畅通场景。可以减少设备影子使用。

  • 举例而言,对 100 条消息进行分类,以其中 50 条不需要设备影子为例


思路 3:细化规则引擎逻辑,消除消息引发的规则引擎的重复判断与执行


合并规则引擎执行,比如具有 Amazon IoT 功能的家用电器发消息到 Amazon IoT 规则引擎后,对某个符合条件消息的规则进行以下动作


  • 本条消息保存到 Amazon S3 对象级存储中

  • 本条消息保存到 Amazon DynamoDB 方便展现

  • 本条消息触 Amazon SNS 进行通知或者报警

  • 本条消息激活 Amazon Lambda 进行复杂逻辑判断,比如是否触发购买提醒等


对于上述动作,可以由最后一条 Amazon Lambda 执行逻辑代码中写入前 4 条逻  辑,由 Amazon Lambda 来完成消息保存到 Amazon S3,写到 Amazon DynamoDB,判断是否 Amazon SNS 通知报警等。这样触发由过去 5 条转为 1 条,节约成本。


以此思路优化之后,费用减少近 54%(用户请以实际使用为准)如下:




参考文档


  1. Amazon IoT 费用列表

  2. Amazon IoT 相关文档

  3. Amazon IoT 核心原则


本篇作者


张洋

亚马逊云科技中国团队的解决方案架构师

负责基于亚马逊云科技的云计算方案架构咨询和设计。同时致力于亚马逊云科技云服务在国内的应用和推广。现专注于 HPC 超算与物联网相关领域的研究。在加入亚马逊云科技之前,他曾服务于 EMC, Oracle, Flextronics 等跨国 IT 公司。张洋乐于分享,并且是一名业余游泳教练,热爱游泳和跑步,已经完成 6 次马拉松比赛。


扫描上方二维码即刻报名


用户头像

还未添加个人签名 2019.09.17 加入

还未添加个人简介

评论

发布
暂无评论
Amazon IoT Core 服务成本优化