

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

# 管理 Greengrass 核心设备上的数据流
<a name="manage-data-streams"></a>

AWS IoT Greengrass 流管理器可以更高效、更可靠地将大量物联网数据传输到. AWS 云流管理器在将数据流导出到 AWS IoT Greengrass Core 之前先处理核心上的数据流 AWS 云。Stream Manager 与常见的边缘场景集成，例如机器学习 (ML) 推理，在这种场景中， AWS IoT Greengrass Core 设备在将数据导出到 AWS 云 或本地存储目标之前处理和分析数据。

流管理器提供了一个通用接口，可简化自定义组件的开发，让您无需构建自定义流管理功能。您的组件可以使用标准化机制来处理高容量流并管理本地数据留存策略。您可以为每个流定义存储类型、大小和数据留存策略，来控制流管理器处理和导出数据的方式。

流管理器在间歇性或有限连接的环境中工作。您可以定义带宽使用情况、超时行为以及 AWS IoT Greengrass 内核在连接或断开连接时如何处理流数据。您还可以设置优先级来控制 AWS IoT Greengrass Core 将流导出到 AWS 云的顺序。这让您能够先于其他数据，更快地处理关键数据。

您可以将流管理器配置为自动将数据导出到以 AWS 云 进行存储或进一步处理和分析。流管理器支持导出到以下 AWS 云 目标：
+ 频道进来 AWS IoT Analytics。 AWS IoT Analytics 允许您对数据进行高级分析，以帮助做出业务决策和改进机器学习模型。有关更多信息，请参阅《AWS IoT Analytics 用户指南》**中的[什么是 AWS IoT Analytics？](https://docs.aws.amazon.com/iotanalytics/latest/userguide/welcome.html)。
+ Amazon Kinesis Data Streams 中的流。您可以使用 Kinesis Data Streams 来聚合大量数据并将其加载到数据仓库 MapReduce 或集群中。有关更多信息，请参阅 *Amazon Kinesis Data Streams 开发人员指南* 中的[什么是 Amazon Kinesis Data Streams？](https://docs.aws.amazon.com/streams/latest/dev/what-is-this-service.html)。
+ 中的资产属性 AWS IoT SiteWise。 AWS IoT SiteWise 允许您大规模收集、组织和分析来自工业设备的数据。有关更多信息，请参阅[什么是 AWS IoT SiteWise？](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/what-is-sitewise.html) 在《*AWS IoT SiteWise 用户指南》*中。
+ Amazon Simple Storage Service（Amazon S3）中的对象 您可以使用 Amazon S3 存储和检索大量的数据。有关更多信息，请参阅《Amazon Simple Storage Service 开发人员指南》**中的[什么是 Amazon S3？](https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html)。

## 流管理工作流
<a name="stream-manager-workflow"></a>

您的 IoT 应用程序通过流管理器 SDK 与流管理器交互。

在简单的工作流程中，内 AWS IoT Greengrass 核上的组件消耗物联网数据，例如时间序列温度和压力指标。组件可能会过滤或压缩数据，然后调用流管理器 SDK 以将数据写入流管理器中的流。直播管理器可以根据您为直播定义的策略 AWS 云 自动将直播导出到。组件还可以将数据直接发送到本地数据库或存储库。

您的 IoT 应用程序可以包含多个用于读取或写入流的自定义组件。这些组件可以读取和写入流，以筛选、聚合和分析 AWS IoT Greengrass 核心设备上的数据。这使得在数据从核心传输到 AWS 云 或本地目的地之前，可以快速响应本地事件并提取有价值的信息。

首先，请将流管理器组件部署到您的 AWS IoT Greengrass 核心设备。在部署中，配置流管理器组件参数来定义应用于 Greengrass 核心设备上的所有流的设置。使用这些参数来根据业务需求和环境约束控制流管理器存储、处理和导出流的方式。

配置流管理器后，您可以创建和部署 IoT 应用程序。这些通常是自定义组件，它们在流管理器 SDK 中使用 `StreamManagerClient` 来创建流并与之交互。在创建流时，您可以定义每个流的策略，例如导出目标、优先级和持久性。

## 要求
<a name="stream-manager-requirements"></a>

以下要求适用于使用流管理器：
+ 除了 AWS IoT Greengrass 核心软件外，直播管理器还需要至少 70 MB 的内存。您的总内存需求取决于您的工作负载。
+ AWS IoT Greengrass 组件必须使用流管理器 SDK 才能与流管理器交互。流管理器 SDK 可用于以下语言：<a name="stream-manager-sdk-download-list"></a>
  + [适用于 Java 的流管理器 SDK](https://github.com/aws-greengrass/aws-greengrass-stream-manager-sdk-java/)（v1.1.0 或更高版本）
  + [适用于 Node.js 的流管理器 SDK](https://github.com/aws-greengrass/aws-greengrass-stream-manager-sdk-js/)（v1.1.0 或更高版本）
  + [适用于 Python 的流管理器 SDK](https://github.com/aws-greengrass/aws-greengrass-stream-manager-sdk-python/)（v1.1.0 或更高版本）
+ AWS IoT Greengrass 组件必须在其配方中将流管理器组件 (`aws.greengrass.StreamManager`) 指定为依赖项才能使用流管理器。
**注意**  <a name="stream-manager-upgrade-note"></a>
如果您使用流管理器将数据导出到云端，则无法将流管理器组件 2.0.7 版本升级到 v2.0.8 到 v2.0.11 之间的版本。如果您是首次部署流管理器，我们强烈建议您部署最新版本的流管理器组件。
+ 如果您为直播定义 AWS 云 导出目标，则必须创建导出目标并以 G [reengrass](device-service-role.md) 设备角色授予访问权限。根据不同的目的地，也可能适用其他要求。有关更多信息，请参阅:<a name="export-destinations-links"></a>
  + [AWS IoT Analytics 频道](stream-export-configurations.md#export-to-iot-analytics)
  + [Amazon Kinesis data streams](stream-export-configurations.md#export-to-kinesis)
  + [AWS IoT SiteWise 资产属性](stream-export-configurations.md#export-to-iot-sitewise)
  + [Amazon S3 对象](stream-export-configurations.md#export-to-s3)

  您有责任维护这些 AWS 云 资源。

## 数据安全性
<a name="stream-manager-security"></a>

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

### 本地数据安全性
<a name="stream-manager-security-stream-data"></a>

AWS IoT Greengrass 不加密核心设备上的静态数据或本地组件之间传输的流数据。
+ **静态数据**。流数据存储在本地存储在存储目录中。为了确保数据安全， AWS IoT Greengrass 依赖文件权限和全盘加密（如果启用）。您可以使用可选的 [STREAM\$1MANAGER\$1STORE\$1ROOT\$1DIR](configure-stream-manager.md#STREAM_MANAGER_STORE_ROOT_DIR) 参数指定存储目录。如果稍后将此参数更改为使用其他存储目录，则 AWS IoT Greengrass 不会删除以前的存储目录或其内容。
+ **数据在本地传输**。 AWS IoT Greengrass 不加密数据源、 AWS IoT Greengrass 组件、流管理器 SDK 和流管理器之间本地传输的流数据。
+ **数据正在传输到 AWS 云**. 由流管理器导出到的数据流 AWS 云 使用带有传输层安全 (TLS) 的标准 AWS 服务客户端加密。

### 客户端身份验证
<a name="stream-manager-security-client-authentication"></a>

流管理器客户端使用流管理器 SDK 与流管理器通信。启用客户端身份验证后，只有 Greengrass 组件才能与流管理器中的流交互。禁用客户端身份验证时，Greengrass 核心设备上运行的任何进程都可以与流管理器中的流交互。只有在您的业务案例需要时才应禁用身份验证。

您可以使用 [STREAM\$1MANAGER\$1AUTHENTICATE\$1CLIENT](configure-stream-manager.md#STREAM_MANAGER_AUTHENTICATE_CLIENT) 参数来设置客户端身份验证模式。您可以在将流管理器组件部署到核心设备时配置此参数。


****  

|   | 已启用 | 已禁用 | 
| --- | --- | --- | 
| 参数值 | `true`（默认值和推荐值） | `false` | 
| 允许的客户端 | 核心设备上的 Greengrass 组件 | 核心设备上的 Greengrass 组件 Greengrass 核心设备上运行的其他进程 | 

## 另请参阅
<a name="stream-manager-see-also"></a>
+ [配置 AWS IoT Greengrass 流管理器](configure-stream-manager.md)
+ [StreamManagerClient 用于处理直播](work-with-streams.md)
+ [导出支持的 AWS 云 目标的配置](stream-export-configurations.md)