
今天,我很高兴地宣布,从 2018 年 4 月 24 日起,AWS IoT Analytics 服务已全面开放。客户可以使用 IoT Analytics 批量清理、加工、丰富、存储和分析连接的设备数据。目前,AWS IoT Analytics 已在美国东部 (弗吉尼亚北部)、美国西部 (俄勒冈)、美国东部 (俄亥俄) 和欧洲 (爱尔兰) 推出。去年十一月,我的同事 Tara Walker 的博客大作演示了 AWS IoT Analytics 服务的一些功能,Ben Kehoe (AWS 社区英雄、iRobot 公司研究员) 在 AWS Re:Invent 上也谈到,iRobot 将用 AWS IoT Analytics 代替原来用于将数据转发到弹性搜索群集的“鲁布戈德堡机械”(意指将简单工作复杂化的设计)。
根据服务预览期间收到的客户反馈,AWS IoT Analytics 团队增加了多项新的功能,包括使用 BatchPutMessage API 消化来自外部来源的数据、设置存储数据的数据保留策略、重新加工现有数据、预览管道结果以及使用 SampleChannelData API 预览通道消息等功能。
下面我们将介绍 IoT Analytics 的核心概念,然后将进行示例演示。
AWS IoT Analytics 的概念
AWS IoT Analytics 可以分解为几个简单的概念。在数据准备方面,客户将拥有:通道、管道和数据存储。在数据分析方面,客户将拥有:数据集和笔记本。
数据准备
通道是 IoT Analytics 的入口,它们会从现有的 IoT Core MQTT 主题收集数据,或从使用 Ingestion API 向通道发送消息的外部来源收集数据。通道具有可弹性扩展的特点,以二进制或 JSON 格式消费数据。此外通道还会不可变地存储原始设备数据,以便于在需求改变时使用不同的逻辑重新加工。
管道消费来自通道的消息,允许您分步骤处理消息,这被称为活动,例如根据属性筛选、通过添加或删除字段的方式转换消息的内容、调用 Lambda 函数以执行复杂的转换以及从外部数据源添加数据等,甚至还可使用来自 IoT Core 的数据丰富消息。管道会将其数据输出到数据存储。
数据存储是一种可查询的 IoT 优化数据存储解决方案,它面向管道的输出,支持自定义保留周期以优化成本。客户查询数据存储时,结果将会放入数据集中。
数据分析
数据集与 SQL 数据库中的视图类似。客户通过运行数据存储查询来创建数据集。数据集可以手动生成,也可使用重复性的计划生成。
笔记本是 Amazon SageMaker 托管的 Jupyter 笔记本,它允许客户使用自定义代码分析数据,甚至可以构建或训练数据的 ML 模型。IoT Analytics 提供多种笔记本模板,带有预先编写的常见 IoT 使用案例模型,例如预防性维护、异常检测、队列细分和预测等。
此外,您还可以将 IoT Analytics 作为 Amazon QuickSight 的数据源使用,轻松实现数据的可视化。各项服务的定价信息详见 AWS IoT Analytics 定价页面。
IoT Analytics 演示
虽然此演示使用控制台,但此处显示的所有操作都可使用 CLI 轻松完成。我们首次导航至控制台时,将会有一个有用的操作指南,告诉我们如何构建通道、管道和数据存储:

我们首先要创建一个通道。我已经使用 IoT Core 将一些数据放入 MQTT 通道,因此我将选择该通道。首先我将为通道命名,然后选择保留周期。

现在我将选择 IoT Core 主题并抓取数据。此外我还可以使用 PutMessages API,直接将消息发布到通道中。

现在我已经拥有通道了,下一步将是创建管道。为此我将从“操作”下拉菜单中选择“Create a pipeline from this channel”(从此通道创建管道)。

然后我将提供管道名称和来源,完成管道向导。

我将选择管道应该具备的消息属性。这可以使用采样 API 从通道提取并猜测将需要哪些属性,我也可以上传 JSON 中的参数。

然后我会定义管道的活动。如果我处理的是二进制数据,我首先需要使用 Lambda 函数将消息反序列化,输入 JSON,从而确保其他筛选函数可以对其进行操作。我可以创建筛选器,根据其他属性计算属性,我也可利用来自 IoT Core 注册表的元数据丰富消息。

目前我只需要筛选一些消息,使用 Lambda 函数进行小的转换。

最后,我会选择或创建一个数据存储,用于输出管道的结果。

现在我已经有了一个数据存储,我可以通过创建数据集来创建该数据的视图。

我刚刚从数据存储选择了此数据集的所有数据,但我还可以在需要时选择个别属性。

数据集已经准备妥当!我可以调整计划中的 Cron 表达式,以根据需要经常或不经常重新运行它。

如果我希望利用我的数据创建模型,我可以创建 SageMaker 支持的 Jupyter 笔记本。一些模板是不错的切入点,例如异常检测或输出预测。

以下是一个异常检测笔记本的示例。

最后,如果我需要创建数据的简单可视化,我可以使用 QuickSight 导入 IoT Analytics 数据集。

请告诉我们!
我很期待看到客户使用 AWS IoT Analytics 构建的成果。我们 IoT 团队的同事也很期待听到您对服务的反馈意见,因此通过留言或 Twitter 告诉我们您希望看到哪些功能。
评论