本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Firehose
Firehose 组件 (aws.greengrass.KinesisFirehose
) 通过亚马逊数据 Firehose 传输流将数据发布到目的地,例如亚马逊 S3、亚马逊 Redshift 和亚马逊服务。 OpenSearch 有关更多信息,请参阅什么是 Amazon Data Firehose? 在《亚马逊数据 Firehose 开发者指南》中。
要使用此组件发布到 Kinesis 交付流,请向该组件订阅的主题发布消息。默认情况下,此组件订阅kinesisfirehose/message
和kinesisfirehose/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.lambda
。Greengrass 核心使用 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
) 的以下配置更新。此配置指定此组件发布响应的主题。有关更多信息,请参阅 创建部署。
-
支持 Firehose 组件在中运行。VPC要在中部署此组件VPC,需要满足以下条件。
-
Firehose 组件必须具有VPC终端节点的连接。
firehose.region.amazonaws.com
com.amazonaws.region.kinesis-firehose
-
端点和端口
除了基本操作所需的端点和端口外,此组件还必须能够对以下端点和端口执行出站请求。有关更多信息,请参阅 允许设备流量通过代理或防火墙。
Endpoint | 端口 | 必需 | 描述 |
---|---|---|---|
|
443 | 是 |
将数据上传到 Firehose。 |
依赖项
部署组件时, Amazon IoT Greengrass 还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖项的要求才能成功部署该组件。本节列出了此组件已发布版本的依赖关系以及定义每个依赖项的组件版本的语义版本限制。您还可以在Amazon IoT Greengrass 控制台
有关组件依赖关系的更多信息,请参阅组件配方参考。
配置
此组件提供以下配置参数,您可以在部署该组件时对其进行自定义。
注意
此组件的默认配置包括 Lambda 函数参数。我们建议您仅编辑以下参数,以便在您的设备上配置此组件。
lambdaParams
-
包含此组件的 Lambda 函数参数的对象。该对象包含以下信息:
EnvironmentVariables
-
一个包含 Lambda 函数参数的对象。该对象包含以下信息:
DEFAULT_DELIVERY_STREAM_ARN
-
组件发送ARN数据的默认 Firehose 传送流。您可以使用输入消息负载中的
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
-
(可选)一个对象,其中包含组件订阅以接收消息的主题。您可以指定每个主题以及该组件是订阅的主题 Amazon IoT Core 还是本地发布/订阅MQTT主题。
该对象包含以下信息:
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" } ] }
注意
如果组件检测到可以重试的错误(例如连接错误),则会在下一批中重试发布。
本地日志文件
此组件使用以下日志文件。
/logs/aws.greengrass.KinesisFirehose.log
/greengrass/v2
查看此组件的日志
-
在核心设备上运行以下命令以实时查看此组件的日志文件。
替换为 Amazon IoT Greengrass 根文件夹的路径。/greengrass/v2
sudo tail -f
/logs/aws.greengrass.KinesisFirehose.log/greengrass/v2
许可证
此组件包括以下第三方软件/许可:
-
Amazon SDK for Python (Boto3)
/Apache 许可证 2.0 -
botocore
/Apache 许可证 2.0 -
dateutil
/许可证 PSF -
d@@ ocutils
/BSD许可证、GNU通用公共许可证 (GPL)、Python 软件基础许可证、公共领域 -
jmespath /许可证
MIT -
s3transfer
/Apache 许可证 2.0 -
urllib3 /许可证
MIT
该组件是根据 Greengrass 核心软件许可协议发布的
更改日志
下表描述了该组件的每个版本中的更改。
版本 |
更改 |
---|---|
2.1.8 |
Greengrass nucleus 版本 2.13.0 版本的版本已更新。 |
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 |
初始版本。 |
另请参阅
-
什么是亚马逊 Data Firehose? 在 Amazon Data Firehos e 开发者指南中