本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Firehose
Firehose 元件 (aws.greengrass.KinesisFirehose
) 會透過 Amazon 資料 Firehose 交付串流將資料發佈到 Amazon S3、亞馬 Amazon Redshift 和 Amazon 服務等目的地。 OpenSearch 如需詳細資訊,請參閱什麼是 Amazon 資料 Firehose? 在 Amazon 數據 Firehose 開發人員指南中。
若要使用此元件發佈到 Kinesis 傳遞串流,請將訊息發佈到此元件訂閱的主題。依預設,此元件會訂閱kinesisfirehose/message
和kinesisfirehose/message/binary/#
本機發佈/訂閱主題。您可以在部署此元件時指定其他主題,包括 AWS IoT Core MQTT 主題。
注意
此元件提供與 AWS IoT Greengrass V1 中 Firehose 連接器類似的功能。如需詳細資訊,請參閱 AWS IoT Greengrass V1 開發人員指南中的 Firehose 連接器。
版本
此元件具有下列版本:
-
2.1.x
-
2.0.x
Type
這個組件是一個 Lambda 組件(aws.greengrass.lambda
)。Greengrass 核使用 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
)。此配置指定此組件發布響應的主題。如需詳細資訊,請參閱 建立部署。
-
支援 Firehose 元件在 VPC 中執行。若要在 VPC 中部署此元件,需要下列項目。
-
Firehose 元件必須具有的 VPC 端點的連線能力。
firehose.region.amazonaws.com
com.amazonaws.region.kinesis-firehose
-
端點和連接埠
除了基本作業所需的端點和連接埠之外,此元件還必須能夠對下列端點和連接埠執行輸出要求。如需詳細資訊,請參閱 允許裝置流量透過 Proxy 或防火牆。
端點 | 連線埠 | 必要 | 描述 |
---|---|---|---|
|
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
-
(選擇性) 包含此元件之容器參數的物件。如果您指定
GreengrassContainer
為,則元件會使用這些參數containerMode
。此物件包含下列資訊:
memorySize
-
(選擇性) 配置給元件的記憶體容量 (以 KB 為單位)。
預設值為 64 MB
pubsubTopics
-
(選擇性) 包含元件訂閱以接收訊息之主題的物件。您可以指定每個主題,以及元件是否訂閱 MQTT 主題 AWS IoT Core 或本機發佈/訂閱主題。
此物件包含下列資訊:
0
-這是一個數組索引作為一個字符串。-
包含下列資訊的物件:
type
-
(選擇性) 此元件用來訂閱訊息的發佈/訂閱訊息類型。您可以從以下選項中選擇:
-
PUB_SUB
- 訂閱本機發佈/訂閱訊息。如果您選擇此選項,則主題不能包含 MQTT 萬用字元。如需指定此選項時如何從自訂元件傳送郵件的詳細資訊,請參閱發佈/訂閱本地訊息。 -
IOT_CORE
— 訂閱 AWS IoT Core MQTT 訊息。如果您選擇此選項,主題可以包含 MQTT 萬用字元。如需指定此選項時如何從自訂元件傳送郵件的詳細資訊,請參閱發布/訂閱MQTT 訊 AWS IoT Core 息。
預設:
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" }
輸入資料
此元件會接受下列主題的串流內容,並將內容傳送至目標傳送串流。該組件接受兩種類型的輸入數據:
-
kinesisfirehose/message
主題上的 JSON 資料。 -
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
中的。如需如何在自訂元件中訂閱有關此主題之訊息的詳細資訊,請參閱發布/訂閱MQTT 訊 AWS IoT Core 息。
預設主題 (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 License 2.0 -
botocore
/Apache License 2.0 -
dateutil
/PSF License -
docutils
/BSD 授權、GNU 一般公有授權 (GPL)、Python 軟體基金會授權、公有網域 -
jmespath
/MIT License -
s3transfer
/Apache License 2.0 -
urllib3
/MIT License
此元件是根據 Greengrass 核心軟體
變更記錄
下表說明元件每個版本中的變更。
版本 |
變更 |
---|---|
2.1.7 |
版本更新了 Greengrass 核 2.12.0 版本釋放。 |
2.1.6 |
版本更新了 Greengrass 核 2.11.0 版本釋放。 |
2.1.5 |
版本更新了 Greengrass 核 2.10.0 版本釋放。 |
2.1.4 |
版本更新 Greengrass 2.9.0 版本釋放。 |
2.1.3 |
版本更新 Greengrass 2.8.0 版本的版本。 |
2.1.2 |
版本更新了 Greengrass 核 2.7.0 版本釋放。 |
2.1.1 |
版本更新 Greengrass 2.6.0 版本的版本。 |
2.1.0 |
|
2.0.8 |
版本更新了 Greengrass 核 2.5.0 版本。 |
2.0.7 |
版本更新 Greengrass 2.4.0 版本的版本。 |
2.0.6 |
版本更新了 Greengrass 核 2.3.0 版本。 |
2.0.5 |
版本更新了 Greengrass 核 2.2.0 版本。 |
2.0.4 |
版本更新 Greengrass 2.1.0 版本發布。 |
2.0.3 |
初始版本。 |
另請參閱
-
什麼是 Amazon 數據 Firehose? 在 Amazon 數據 Firehose 開發人員指南