Firehose - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Firehose

Firehose 组件 (aws.greengrass.KinesisFirehose) 通过亚马逊数据 Firehose 传输流将数据发布到目的地,例如亚马逊 S3、亚马逊 Redshift 和亚马逊服务。 OpenSearch 有关更多信息,请参阅什么是 Amazon Data Firehose? 在《亚马逊数据 Firehose 开发者指南》中。

要使用此组件发布到 Kinesis 交付流,请向该组件订阅的主题发布消息。默认情况下,此组件订阅kinesisfirehose/messagekinesisfirehose/message/binary/#本地发布/ 订阅主题。部署此组件时,您可以指定其他主题,包括 Amazon IoT Core MQTT 主题。

注意

此组件提供的功能与 V1 中的 Firehose 连接器类似。 Amazon IoT Greengrass 有关更多信息,请参阅《Amazon IoT Greengrass V1 开发者指南》中的 Firehose 连接器

版本

此组件有以下版本:

  • 2.1.x

  • 2.0.x

类型

组件是一个 Lambda 组件 () aws.greengrass.lambdaGreengrass 核心使用 Lambda 启动器组件运行此组件的 Lambda 函数。

有关更多信息,请参阅组件类型

操作系统

此组件只能安装在 Linux 核心设备上。

要求

此组件具有以下要求:

  • 您的核心设备必须满足运行 Lambda 函数的要求。如果您希望核心设备运行容器化的 Lambda 函数,则该设备必须满足要求。有关更多信息,请参阅Lambda 函数要求

  • Python 版本 3.7 已安装在核心设备上,并已添加到 PATH 环境变量中。

  • Greengrass 设备角色必须允许firehose:PutRecordBatch和操作,如firehose:PutRecord以下示例 IAM 策略所示。

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "firehose:PutRecord", "firehose:PutRecordBatch" ], "Effect": "Allow", "Resource": [ "arn:aws:firehose:region:account-id:deliverystream/stream-name" ] } ] }

    您可以动态覆盖此组件的输入消息负载中的默认传送流。如果您的应用程序使用此功能,则 IAM 策略必须将所有目标流作为资源包括在内。您可以授予对资源的具体或条件访问权限(例如,通过使用通配符 * 命名方案)。

  • 要接收此组件的输出数据,在部署此组件时,必须合并旧版订阅路由器组件 (aws.greengrass.LegacySubscriptionRouter) 的以下配置更新。此配置指定此组件发布响应的主题。

    Legacy subscription router v2.1.x
    { "subscriptions": { "aws-greengrass-kinesisfirehose": { "id": "aws-greengrass-kinesisfirehose", "source": "component:aws.greengrass.KinesisFirehose", "subject": "kinesisfirehose/message/status", "target": "cloud" } } }
    Legacy subscription router v2.0.x
    { "subscriptions": { "aws-greengrass-kinesisfirehose": { "id": "aws-greengrass-kinesisfirehose", "source": "arn:aws:lambda:region:aws:function:aws-greengrass-kinesisfirehose:version", "subject": "kinesisfirehose/message/status", "target": "cloud" } } }
    • 区域替换为您 Amazon Web Services 区域 使用的区域。

    • 版本替换为该组件运行的 Lambda 函数的版本。要查找 Lambda 函数版本,您必须查看要部署的此组件版本的配方。在Amazon IoT Greengrass 控制台中打开此组件的详细信息页面,查找 Lambda 函数键值对。此键值对包含 Lambda 函数的名称和版本。

    重要

    每次部署此组件时,都必须更新旧版订阅路由器上的 Lambda 函数版本。这样可以确保您为部署的组件版本使用正确的 Lambda 函数版本。

    有关更多信息,请参阅创建部署

  • 支持在 VPC 中运行 Firehose 组件。要在 VPC 中部署此组件,需要满足以下条件。

    • Firehose 组件必须连接到 firehose.region.amazonaws.com VPC 终端节点为。com.amazonaws.region.kinesis-firehose

端点和端口

除了基本操作所需的端点和端口外,此组件还必须能够对以下端点和端口执行出站请求。有关更多信息,请参阅允许设备流量通过代理或防火墙

Endpoint 端口 必需 描述

firehose.region.amazonaws.com

443

将数据上传到 Firehose。

依赖项

部署组件时, Amazon IoT Greengrass 还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖项的要求才能成功部署该组件。本节列出了此组件已发布版本的依赖关系以及定义每个依赖项的组件版本的语义版本限制。您还可以在Amazon IoT Greengrass 控制台中查看组件每个版本的依赖关系。在组件详细信息页面上,查找 “依赖关系” 列表。

2.1.7

下表列出了此组件版本 2.1.7 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.13.0 硬性
Lambda 启动器 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
代币兑换服务 ^2.0.0 硬性
2.1.6

下表列出了此组件版本 2.1.6 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.12.0 硬性
Lambda 启动器 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
代币兑换服务 ^2.0.0 硬性
2.1.5

下表列出了此组件版本 2.1.5 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.11.0 硬性
Lambda 启动器 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
代币兑换服务 ^2.0.0 硬性
2.1.4

下表列出了此组件版本 2.1.4 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.10.0 硬性
Lambda 启动器 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
代币兑换服务 ^2.0.0 硬性
2.1.3

下表列出了此组件版本 2.1.3 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.9.0 硬性
Lambda 启动器 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
代币兑换服务 ^2.0.0 硬性
2.1.2

下表列出了此组件版本 2.1.2 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.8.0 硬性
Lambda 启动器 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
代币兑换服务 ^2.0.0 硬性
2.1.1

下表列出了此组件版本 2.1.1 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.7.0 硬性
Lambda 启动器 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
代币兑换服务 ^2.0.0 硬性
2.0.8 - 2.1.0

下表列出了此组件版本 2.0.8 和 2.1.0 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.6.0 硬性
Lambda 启动器 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
代币兑换服务 ^2.0.0 硬性
2.0.7

下表列出了此组件版本 2.0.7 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.5.0 硬性
Lambda 启动器 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
代币兑换服务 ^2.0.0 硬性
2.0.6

下表列出了此组件版本 2.0.6 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.4.0 硬性
Lambda 启动器 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
代币兑换服务 ^2.0.0 硬性
2.0.5

下表列出了此组件版本 2.0.5 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.3.0 硬性
Lambda 启动器 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
代币兑换服务 ^2.0.0 硬性
2.0.4

下表列出了此组件版本 2.0.4 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.2.0 硬性
Lambda 启动器 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
代币兑换服务 ^2.0.0 硬性
2.0.3

下表列出了此组件版本 2.0.3 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.3 <2.1.0 硬性
Lambda 启动器 >=1.0.0 硬性
Lambda 运行时 >=1.0.0 软性
代币兑换服务 >=1.0.0 硬性

有关组件依赖关系的更多信息,请参阅组件配方参考

配置

此组件提供以下配置参数,您可以在部署该组件时对其进行自定义。

注意

此组件的默认配置包括 Lambda 函数参数。我们建议您仅编辑以下参数,以便在您的设备上配置此组件。

lambdaParams

包含此组件的 Lambda 函数参数的对象。该对象包含以下信息:

EnvironmentVariables

一个包含 Lambda 函数参数的对象。该对象包含以下信息:

DEFAULT_DELIVERY_STREAM_ARN

组件发送数据的默认 Firehose 传输流的 ARN。您可以使用输入消息负载中的delivery_stream_arn属性覆盖目标流。

注意

核心设备角色必须允许对所有目标传送流执行所需的操作。有关更多信息,请参阅要求

PUBLISH_INTERVAL

(可选)组件将批处理数据发布到 Firehose 之前等待的最大秒数。要将组件配置为在收到指标时发布指标(这意味着不进行批处理),请指定0

此值最多可为 900 秒。

默认值:10 秒

DELIVERY_STREAM_QUEUE_SIZE

(可选)在组件拒绝同一传输流的新记录之前,要在内存中保留的最大记录数。

此值必须至少为 2,000 条记录。

默认值:5,000 条记录

containerMode

(可选)此组件的容器化模式。从以下选项中进行选择:

  • NoContainer— 该组件不在隔离的运行时环境中运行。

  • GreengrassContainer— 该组件在 Amazon IoT Greengrass 容器内的隔离运行时环境中运行。

默认:GreengrassContainer

containerParams

(可选)包含此组件容器参数的对象。如果您为指定GreengrassContainer,则该组件将使用这些参数containerMode

该对象包含以下信息:

memorySize

(可选)要分配给组件的内存量(以千字节为单位)。

默认为 64 MB (65,535 KB)。

pubsubTopics

(可选)一个对象,其中包含组件订阅以接收消息的主题。您可以指定每个主题以及该组件是订阅来自的 MQTT 主题 Amazon IoT Core 还是本地发布/订阅主题。

该对象包含以下信息:

0— 这是字符串形式的数组索引。

包含以下信息的对象:

type

(可选)此组件用于订阅消息的发布/订阅消息的类型。从以下选项中进行选择:

  • PUB_SUB – 订阅本地发布/订阅消息。如果选择此选项,则主题不能包含 MQTT 通配符。有关在指定此选项时如何从自定义组件发送消息的更多信息,请参阅发布/订阅本地消息

  • IOT_CORE— 订阅 Amazon IoT Core MQTT 消息。如果选择此选项,则主题可以包含 MQTT 通配符。有关在指定此选项时如何从自定义组件发送消息的更多信息,请参阅发布/订阅 Amazon IoT Core MQTT 消息

默认:PUB_SUB

topic

(可选)组件订阅以接收消息的主题。如果您IotCore为指定type,则可以在本主题中使用 MQTT 通配符(+#)。

例 示例:配置合并更新(容器模式)
{ "lambdaExecutionParameters": { "EnvironmentVariables": { "DEFAULT_DELIVERY_STREAM_ARN": "arn:aws:firehose:us-west-2:123456789012:deliverystream/mystream" } }, "containerMode": "GreengrassContainer" }
例 示例:配置合并更新(无容器模式)
{ "lambdaExecutionParameters": { "EnvironmentVariables": { "DEFAULT_DELIVERY_STREAM_ARN": "arn:aws:firehose:us-west-2:123456789012:deliverystream/mystream" } }, "containerMode": "NoContainer" }

输入数据

此组件接受以下主题的直播内容,并将内容发送到目标传送流。该组件接受两种类型的输入数据:

  • JSON 数据,位于 kinesisfirehose/message 主题中。

  • 二进制数据,位于 kinesisfirehose/message/binary/# 主题中。

JSON 数据的默认主题(本地发布/订阅):kinesisfirehose/message

该消息接受以下属性。输入消息必须采用 JSON 格式。

request

要发送到传输流和目标传输流(如果不同于默认流)的数据。

类型:其中object包含以下信息:

data

要发送到传输流的数据。

类型:string

delivery_stream_arn

(可选)目标 Firehose 传送流的 ARN。指定此属性可覆盖默认的传送流。

类型:string

id

请求的任意 ID。使用此属性将输入请求映射到输出响应。当您指定此属性时,组件会将响应对象中的id属性设置为该值。

类型:string

例 示例输入
{ "request": { "delivery_stream_arn": "arn:aws:firehose:region:account-id:deliverystream/stream2-name", "data": "Data to send to the delivery stream." }, "id": "request123" }
二进制数据的默认主题(本地发布/订阅):kinesisfirehose/message/binary/#

使用此主题发送包含二进制数据的消息。该组件不解析二进制数据。该组件按原样传输数据。

要将输入请求映射到输出响应,请将消息主题中的 # 通配符替换为任意请求 ID。例如,如果您将消息发布到 kinesisfirehose/message/binary/request123,响应对象中的 id 属性将设置为 request123

如果您不希望将请求映射到响应,可以将消息发布到 kinesisfirehose/message/binary/。请务必包含尾部的斜杠 () /

输出数据

默认情况下,此组件将响应作为以下 MQTT 主题的输出数据发布。您必须在传统订阅路由器组件的配置subject中将此主题指定为。有关如何在您的自定义组件中订阅有关此主题的消息的更多信息,请参阅发布/订阅 Amazon IoT Core MQTT 消息

默认主题 (Amazon IoT Core MQTT):kinesisfirehose/message/status

例 示例输出

响应将包含批次中发送的每条数据记录的状态。

{ "response": [ { "ErrorCode": "error", "ErrorMessage": "test error", "id": "request123", "status": "fail" }, { "firehose_record_id": "xyz2", "id": "request456", "status": "success" }, { "firehose_record_id": "xyz3", "id": "request890", "status": "success" } ] }
注意

如果组件检测到可以重试的错误(例如连接错误),则会在下一批中重试发布。

本地日志文件

此组件使用以下日志文件。

/greengrass/v2/logs/aws.greengrass.KinesisFirehose.log
查看此组件的日志
  • 在核心设备上运行以下命令以实时查看此组件的日志文件。/greengrass/v2替换为 Amazon IoT Greengrass 根文件夹的路径。

    sudo tail -f /greengrass/v2/logs/aws.greengrass.KinesisFirehose.log

许可证

此组件包括以下第三方软件/许可:

该组件是根据 Greengrass 核心软件许可协议发布的

更改日志

下表描述了该组件的每个版本中的更改。

版本

更改

2.1.7

Greengrass nucleus 版本 2.12.0 版本的版本已更新。

2.1.6

Greengrass nucleus 版本 2.11.0 版本的版本已更新。

2.1.5

Greengrass nucleus 版本 2.10.0 版本的版本已更新。

2.1.4

Greengrass nucleus 版本 2.9.0 版本的版本已更新。

2.1.3

Greengrass nucleus 版本 2.8.0 版本的版本已更新。

2.1.2

Greengrass nucleus 版本 2.7.0 版本的版本已更新。

2.1.1

Greengrass nucleus 版本 2.6.0 版本的版本已更新。

2.1.0

新功能

2.0.8

Greengrass nucleus 版本 2.5.0 版本的版本已更新。

2.0.7

Greengrass nucleus 版本 2.4.0 版本的版本已更新。

2.0.6

Greengrass nucleus 版本 2.3.0 版本的版本已更新。

2.0.5

Greengrass nucleus 版本 2.2.0 版本的版本已更新。

2.0.4

Greengrass nucleus 版本 2.1.0 版本的版本已更新。

2.0.3

初始版本。

另请参阅