Firehose - AWS IoT Greengrass

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Firehose

Firehose 元件 (aws.greengrass.KinesisFirehose) 會透過 Amazon 資料 Firehose 交付串流將資料發佈到 Amazon S3、亞馬 Amazon Redshift 和 Amazon 服務等目的地。 OpenSearch 如需詳細資訊,請參閱什麼是 Amazon 資料 Firehose? 在 Amazon 數據 Firehose 開發人員指南中。

若要使用此元件發佈到 Kinesis 傳遞串流,請將訊息發佈到此元件訂閱的主題。依預設,此元件會訂閱kinesisfirehose/messagekinesisfirehose/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)。此配置指定此組件發布響應的主題。

    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" } } }
    • 區域替換為您 AWS 區域 使用的區域。

    • 版本取代為此元件執行的 Lambda 函數版本。若要尋找 Lambda 函數版本,您必須檢視要部署之此元件版本的方案。在AWS IoT Greengrass 主控台中開啟此元件的詳細資料頁面,然後尋找 Lambda 函數索引鍵值組。此鍵值對包含 Lambda 函數的名稱和版本。

    重要

    每次部署此元件時,您都必須更新舊版訂閱路由器上的 Lambda 函數版本。這可確保您針對部署的元件版本使用正確的 Lambda 函數版本。

    如需詳細資訊,請參閱 建立部署

  • 支援 Firehose 元件在 VPC 中執行。若要在 VPC 中部署此元件,需要下列項目。

    • Firehose 元件必須具有的 VPC 端點的連線能力。firehose.region.amazonaws.com com.amazonaws.region.kinesis-firehose

端點和連接埠

除了基本作業所需的端點和連接埠之外,此元件還必須能夠對下列端點和連接埠執行輸出要求。如需詳細資訊,請參閱 允許裝置流量透過 Proxy 或防火牆

端點 連線埠 必要 描述

firehose.region.amazonaws.com

443

上載資料至 Firehose

相依性

部署元件時, AWS IoT Greengrass 也會部署其相依性的相容版本。這表示您必須符合元件及其所有相依性的需求,才能成功部署元件。本節列出此元件之已發行版本的相依性,以及定義每個相依性之元件版本的語意版本條件約束。您也可以在AWS IoT Greengrass 主控台中檢視元件每個版本的相依性。在元件詳細資料頁面上,尋找 [相依性] 清單。

2.1.7

下表列出此元件 2.1.7 版的相依性。

相依性 兼容版本 相依性類型
Greengrass 核 > = 2.0.0 硬式
发 Lambda 器 ^2.0.0 硬式
Lambda 執行階段 ^2.0.0 軟式
代幣交換服務 ^2.0.0 硬式
2.1.6

下表列出此元件 2.1.6 版的相依性。

相依性 兼容版本 相依性類型
Greengrass 核 > = 2.0.0 硬式
发 Lambda 器 ^2.0.0 硬式
Lambda 執行階段 ^2.0.0 軟式
代幣交換服務 ^2.0.0 硬式
2.1.5

下表列出此元件 2.1.5 版的相依性。

相依性 兼容版本 相依性類型
Greengrass 核 > = 2.0.0 硬式
发 Lambda 器 ^2.0.0 硬式
Lambda 執行階段 ^2.0.0 軟式
代幣交換服務 ^2.0.0 硬式
2.1.4

下表列出此元件 2.1.4 版的相依性。

相依性 兼容版本 相依性類型
Greengrass 核 > = 2.0.0 硬式
发 Lambda 器 ^2.0.0 硬式
Lambda 執行階段 ^2.0.0 軟式
代幣交換服務 ^2.0.0 硬式
2.1.3

下表列出此元件 2.1.3 版的相依性。

相依性 兼容版本 相依性類型
Greengrass 核 > = 2.0.0 硬式
发 Lambda 器 ^2.0.0 硬式
Lambda 執行階段 ^2.0.0 軟式
代幣交換服務 ^2.0.0 硬式
2.1.2

下表列出此元件 2.1.2 版的相依性。

相依性 兼容版本 相依性類型
Greengrass 核 > = 2.0.0 硬式
发 Lambda 器 ^2.0.0 硬式
Lambda 執行階段 ^2.0.0 軟式
代幣交換服務 ^2.0.0 硬式
2.1.1

下表列出此元件 2.1.1 版的相依性。

相依性 兼容版本 相依性類型
Greengrass 核 > = 2.0.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 硬式
发 Lambda 器 ^2.0.0 硬式
Lambda 執行階段 ^2.0.0 軟式
代幣交換服務 ^2.0.0 硬式
2.0.7

下表列出此元件 2.0.7 版的相依性。

相依性 兼容版本 相依性類型
Greengrass 核 > = 2.0.0 硬式
发 Lambda 器 ^2.0.0 硬式
Lambda 執行階段 ^2.0.0 軟式
代幣交換服務 ^2.0.0 硬式
2.0.6

下表列出此元件 2.0.6 版的相依性。

相依性 兼容版本 相依性類型
Greengrass 核 > = 2.0.0 硬式
发 Lambda 器 ^2.0.0 硬式
Lambda 執行階段 ^2.0.0 軟式
代幣交換服務 ^2.0.0 硬式
2.0.5

下表列出此元件 2.0.5 版的相依性。

相依性 兼容版本 相依性類型
Greengrass 核 > = 2.0.0 硬式
发 Lambda 器 ^2.0.0 硬式
Lambda 執行階段 ^2.0.0 軟式
代幣交換服務 ^2.0.0 硬式
2.0.4

下表列出此元件 2.0.4 版的相依性。

相依性 兼容版本 相依性類型
Greengrass 核 > = 2.0.0 硬式
发 Lambda 器 ^2.0.0 硬式
Lambda 執行階段 ^2.0.0 軟式
代幣交換服務 ^2.0.0 硬式
2.0.3

下表列出此元件 2.0.3 版的相依性。

相依性 兼容版本 相依性類型
Greengrass 核 > = 2.0.3 硬式
发 Lambda 器 > 硬式
Lambda 執行階段 > 軟式
代幣交換服務 > 硬式

如需有關元件相依性的詳細資訊,請參閱元件方案參考

組態

此元件提供下列組態參數,您可以在部署元件時自訂這些參數。

注意

此元件的預設組態包括 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

(選擇性) 元件訂閱接收訊息的主題。如果您指定IotCoretype,您可以在本主題中使用 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" } ] }
注意

如果元件偵測到可以重試的錯誤 (例如連線錯誤),它會在下一個批次中重試發佈。

本機記錄檔

此元件會使用下列記錄檔。

/greengrass/v2/logs/aws.greengrass.KinesisFirehose.log
若要檢視此元件的記錄
  • 在核心裝置上執行下列命令,即時檢視此元件的記錄檔。以 AWS IoT Greengrass 根資料夾的路徑取/greengrass/v2代。

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

授權

此元件包括下列協力廠商軟體/授權:

此元件是根據 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

初始版本。

另請參閱