本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Firehose
Firehose 组件 (aws.greengrass.KinesisFirehose
) 通过亚马逊数据 Firehose 传输流将数据发布到目的地,例如亚马逊 S3、亚马逊 Redshift 和亚马逊服务。 OpenSearch 有关更多信息,请参阅《Amazon Data Firehose 开发人员指南》中的什么是 Amazon Data Firehose?。
要通过此组件发布至 Kinesis 传输流,请向此组件订阅的主题发布一条消息。默认情况下,此组件订阅 kinesisfirehose/message
和 kinesisfirehose/message/binary/#
本地发布/订阅主题。部署此组件时,您可以指定其他主题,包括 AWS IoT Core MQTT 主题。
注意
此组件提供的功能与 V1 中的 Firehose 连接器类似。 AWS IoT Greengrass 有关更多信息,请参阅 AWS IoT Greengrass V1 开发人员指南中的 Firehose 连接器。
版本
此组件具有以下版本:
-
2.1.x
-
2.0.x
类型
此组件是一个 Lambda 组件 (aws.greengrass.lambda
)。Greengrass Nucleus 使用 Lambda 启动程序组件运行此组件的 Lambda 函数。
有关更多信息,请参阅 组件类型。
操作系统
此组件只能安装在 Linux 核心设备上。
要求
此组件具有以下要求:
-
您的核心设备必须满足运行 Lambda 函数的要求。如果您希望核心设备运行容器化 Lambda 函数,则设备必须满足相关要求。有关更多信息,请参阅 Lambda 函数要求。
-
Python
版本 3.7 已安装在核心设备上,并已添加到 PATH 环境变量中。 -
Greengrass 设备角色必须允许执行
firehose:PutRecord
和firehose:PutRecordBatch
操作,如以下示例 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
) 的以下配置更新。此配置指定此组件发布响应的主题。有关更多信息,请参阅 创建部署。
-
支持在 VPC 中运行 Firehose 组件。要在 VPC 中部署此组件,需要满足以下条件。
-
Firehose 组件必须连接至 VPC 终端节点为
com.amazonaws.region.kinesis-firehose
的firehose.region.amazonaws.com
。
-
端点和端口
除基本操作所需的端点和端口外,此组件还必须能够对以下端点和端口执行出站请求。有关更多信息,请参阅 允许设备流量通过代理或防火墙。
Endpoint | 端口 | 必需 | 描述 |
---|---|---|---|
|
443 | 是 |
将数据上传至 Firehose。 |
依赖项
部署组件时, AWS IoT Greengrass 还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求,才能成功部署组件。本部分列出了此组件的已发布版本的依赖关系,以及定义每个依赖关系的组件版本的语义版本约束。您还可以在 AWS IoT Greengrass 控制台
有关组件依赖关系的更多信息,请参阅组件配方参考。
配置
此组件提供您可以在部署组件时自定义的以下配置参数。
注意
此组件的默认配置包括 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
— 该组件在 AWS IoT Greengrass 容器内的隔离运行时环境中运行。
默认值:
GreengrassContainer
-
containerParams
-
(可选)包含此组件的容器参数的对象。如果您为
containerMode
指定GreengrassContainer
,则该组件使用这些参数。该对象包含以下信息:
memorySize
-
(可选)要分配给组件的内存量(以千字节为单位)。
默认为 64 MB(65,535 KB)。
pubsubTopics
-
(可选)包含组件订阅以接收消息的主题的对象。您可以指定每个主题以及该组件是订阅来自的 MQTT 主题 AWS IoT Core 还是本地发布/订阅主题。
该对象包含以下信息:
0
– 这是字符串形式的数组索引。-
包含以下信息的对象:
type
-
(可选)此组件用来订阅消息的发布/订阅消息收发的类型。从以下选项中进行选择:
-
PUB_SUB
– 订阅本地发布/订阅消息。如果选择此选项,主题不能包含 MQTT 通配符。有关在指定此选项时如何从自定义组件发送消息的更多信息,请参阅 发布/订阅本地消息。 -
IOT_CORE
— 订阅 AWS IoT Core MQTT 消息。如果选择此选项,主题可以包含 MQTT 通配符。有关在指定此选项时如何从自定义组件发送消息的更多信息,请参阅 发布/订阅 AWS IoT Core MQTT 消息。
默认值:
PUB_SUB
-
topic
-
(可选)组件订阅以接收消息的主题。如果您为
type
指定IotCore
,则可以在本主题中使用 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
。有关如何在自定义组件中订阅此主题消息的更多信息,请参阅 发布/订阅 AWS IoT Core MQTT 消息。
默认主题 (AWS 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
查看此组件的日志
-
在核心设备上运行以下命令可实时查看此组件的日志文件。
替换为 AWS IoT Greengrass 根文件夹的路径。/greengrass/v2
sudo tail -f
/logs/aws.greengrass.KinesisFirehose.log/greengrass/v2
许可证
此组件包含以下第三方软件/许可:
-
AWS SDK for Python (Boto3)
/Apache 许可证 2.0 -
botocore
/Apache 许可证 2.0 -
dateutil
/PSF 许可证 -
docutils
/BSD 许可证,GNU 通用公共许可证 (GPL),Python 软件基金会许可证,公共领域 -
jmespath
/MIT 许可证 -
s3transfer
/Apache 许可证 2.0 -
urllib3
/MIT 许可证
此组件在 Greengrass Core 软件许可协议
更改日志
下表介绍每个组件版本的更改。
版本 |
更改 |
---|---|
2.1.9 |
Greengrass nucleus 版本 2.14.0 版本的版本已更新。 |
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 |
初始版本。 |
另请参阅
-
《Amazon Data Firehose 开发人员指南》中的什么是 Amazon Data Firehose?