在 AWS IoT Greengrass 核心上管理数据流 - AWS IoT Greengrass
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 AWS IoT Greengrass 核心上管理数据流

AWS IoT Greengrass 流管理器使传输高容量变得更加简单和可靠 IoT 数据到 AWS 云。流管理器在本地处理数据流并自动将其导出到 AWS 云。此功能与常见的边缘方案(如机器学习 (ML) 推理)集成,在将数据导出到 AWS 云或本地存储目标之前,将对数据进行本地处理和分析。

流管理器简化了应用程序开发。您的 IoT 应用程序可以使用标准化机制来处理大批量流和管理本地数据保留策略,而不是构建自定义流管理功能。IoT 应用程序可以读取和写入流。它们可以在每个流的基础之上定义存储类型、大小和数据的保留策略,以控制流管理器处理和导出流的方式。

流管理器设计为在间歇性或有限连接的环境中工作。您可以定义带宽使用、超时行为以及当核心连接或断开连接时如何处理流数据。对于关键数据,您可以设置优先级以控制流导出到 AWS 云的顺序。

您可以配置自动导出到 AWS 云存储或进一步处理和分析。StreamManager支持导出到以下AWSCloud目标。

  • 中的通道。AWS IoT Analytics 可让您对数据执行高级分析,以帮助制定业务决策并改进机器学习模型。AWS IoT Analytics有关更多信息,请参阅 用户指南AWS IoT Analytics 中的什么是 ?AWS IoT Analytics。

  • 中的流。Kinesis Data Streams 常用于聚合大容量数据并将其加载到数据仓库或 map-reduce 集群。Kinesis Data Streams有关更多信息,请参阅 Amazon Kinesis Data Streams 中的什么是 ?Amazon Kinesis Developer Guide。

  • 中的资产属性。AWS IoT SiteWise 可让您从工业设备大规模收集、组织和分析数据。AWS IoT SiteWise有关更多信息,请参阅 用户指南AWS IoT SiteWise 中的什么是 ?AWS IoT SiteWise。

  • 中的对象。Amazon S3您可以使用 Amazon S3 存储和检索大量数据。有关更多信息,请参阅 开发人员指南Amazon S3 中的什么是 ?Amazon Simple Storage Service。

流管理工作流

您的 IoT 应用程序通过 AWS IoT Greengrass Core 开发工具包. 在简单的工作流程中,用户定义的 Lambda 在Greengrass核心上运行的功能消耗 IoT 数据,例如时间序列温度和压力度量标准。Lambda 函数可能会过滤或压缩数据,然后调用 AWS IoT Greengrass Core 开发工具包 以将数据写入流管理器中的流。流管理器可以根据为流定义的策略自动将流导出到 AWS 云。用户定义的 Lambda 函数还可以将数据直接发送到本地数据库或存储库。

您的 IoT 应用程序可以包括多个用户定义的 Lambda 读取或写入流的功能。这些本地 Lambda 函数可以读取和写入流,以便在本地过滤、聚合和分析数据。这样可以在数据从核心传输到云或本地目的地之前快速响应本地事件并提取有价值的信息。

下图显示了工作流程示例。


                流管理器工作流程图。

要使用流管理器,首先配置流管理器参数,以定义应用于Greengrass核心上所有流的组级运行时设置。这些可自定义的设置允许您根据业务需求和环境限制,控制流管理器如何存储、处理和导出流。有关更多信息,请参阅配置 AWS IoT Greengrass 流管理器

配置流管理器后,您可以创建和部署 IoT 应用程序。这些通常是用户定义的 Lambda 功能 StreamManagerClient 在 AWS IoT Greengrass Core 开发工具包 创建流并与交互。在流创建期间, Lambda 函数定义每个流策略,例如导出目的地、优先级和持久性。更多信息,包括代码片段 StreamManagerClient 操作,请参阅 使用 StreamManagerClient 与流合作.

有关配置简单工作流程的教程,请参阅 将数据流导出到 AWS 云(控制台)将数据流导出到 AWS 云(CLI).

Requirements

以下要求适用于使用流管理器:

  • 您必须使用 AWS IoT Greengrass 核心软件版本 1.10 or later 且启用了流管理器。有关更多信息,请参阅配置 AWS IoT Greengrass 流管理器

    注意

    流管理器在上不受支持 OpenWrt 分配。

  • 核心设备上必须安装 Java 8 运行时 (JDK 8)。

    • 对于基于 Debian 的发行版(包括 Raspbian)或基于 Ubuntui 的发行版,运行以下命令:

      sudo apt install openjdk-8-jdk
    • 对于基于 Red Hat 的发行版(包括 Amazon Linux),请运行以下命令:

      sudo yum install java-1.8.0-openjdk

      有关更多信息,请参阅 如何下载和安装预构建的 OpenJDK 包裹 在 OpenJDK 文档。

     

  • 除了基础 AWS IoT Greengrass 核心软件之外,流管理器还需要至少 70 MB 的 RAM。您的总内存需求取决于您的工作负载。

     

  • 用户定义的 Lambda 函数必须使用 AWS IoT Greengrass Core 开发工具包 与流管理器交互。AWS IoT Greengrass Core 开发工具包 有多种语言可用,但只有以下版本支持流管理器操作。

    • Java 开发工具包 (v1.4.0 或更高版本)

    • Python 开发工具包(v1.5.0 或更高版本)

    • Node.js 开发工具包(v1.6.0 或更高版本)

    下载与您的对应的SDK版本 Lambda 函数运行时并将其包含在您的 Lambda 函数部署包。

    注意

    适用于 Python 的 AWS IoT Greengrass Core 开发工具包 需要 Python 3.7 或更高版本,并且具有其他软件包依赖关系。有关更多信息,请参阅创建 Lambda 函数部署包(控制台)创建 Lambda 函数部署包 (CLI)

  • 如果您定义 AWS 流的云导出目标,您必须在Greengrass组角色中创建导出目标并授予访问权限。根据目的地的不同,可能还适用其他要求。有关更多信息,请参阅:

    您负责维护这些 AWS 云资源。

数据安全性

使用流管理器时,请注意以下安全注意事项。

本地数据安全性

AWS IoT Greengrass 不会在核心设备上的组件之间进行静态或本地传输的流数据加密。

  • 静态数据。流数据存储在Greengrass核心的存储目录中本地。为了保证数据安全,AWS IoT Greengrass 依赖 Unix 文件权限和全磁盘加密(如果启用)。您可以使用可选的 STREAM_MANAGER_STORE_ROOT_DIR 参数指定存储目录。如果稍后将此参数更改为使用其他存储目录,AWS IoT Greengrass 不会删除以前的存储目录或其内容。

     

  • 本地传输中的数据。 AWS IoT Greengrass 不加密数据源之间的核心上本地传输中的流数据, Lambda 功能, AWS IoT Greengrass Core 开发工具包、和流管理器。

     

  • 传输到 AWS 云的数据。流管理器导出到 AWS 云的数据流使用带传输层安全性 (TLS) 的标准 AWS 服务客户端加密。

有关更多信息,请参阅数据加密

客户端身份验证

流管理器客户端使用 AWS IoT Greengrass Core 开发工具包 与流管理器进行通信。启用客户端身份验证后,只有 Greengrass 组中的 Lambda 函数才能与流管理器中的流交互。禁用客户端身份验证时,Greengrass 核心上运行的任何进程(如 Docker 容器)都可以与流管理器中的流进行交互。只有在您的业务案例需要时才应禁用身份验证。

您可以使用 STREAM_MANAGER_AUTHENTICATE_CLIENT 参数来设置客户端身份验证模式。您可以从控制台或 AWS IoT Greengrass API 配置此参数。更改在部署组后生效。

  Enabled (已启用) 已禁用

参数值

true(默认值和推荐值)

false

允许的客户端

Greengrass 组中的用户定义 Lambda 函数

Greengrass 组中的用户定义 Lambda 函数

Greengrass 核心设备上运行的其他进程

另请参阅