IoT Analytics - AWS IoT Greengrass

のドキュメントを表示していますAWS IoT Greengrass Version 1。AWS IoT Greengrass Version 2の最新のメジャーバージョンです。AWS IoT Greengrass。の使用方法の詳細については、「」を参照してください。AWS IoT Greengrass V2の詳細については、AWS IoT Greengrass Version 2開発者ガイド

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

IoT Analytics

IoT Analytics コネクタは、にローカルデバイスデータを送信しますAWS IoT Analytics。このコネクタを中央ハブとして使用して、Greengrass コアデバイスのセンサーおよび接続された Greengrass デバイスからデータを収集できます。コネクタは、データをAWS IoT AnalyticsチャンネルをAWS アカウントとリージョン。デフォルトの送信先チャネルおよび動的に指定されたチャネルにデータを送信できます。

注記

AWS IoT Analytics は、IoT データを収集、保存、処理、クエリできるフルマネージド型サービスです。AWS IoT Analytics では、データをさらに分析、処理できます。たとえば、マシンの健全性をモニタリングするために ML モデルをトレーニングしたり、新しいモデリング戦略をテストしたりするために使用できます。詳細については、AWS IoT Analytics ユーザーガイド「AWS IoT Analytics とは」を参照してください。

コネクタは、MQTT トピックの書式設定されたデータおよび書式設定されていないデータを受け入れます。送信先チャネルがインラインで指定された、2 つの事前定義されたトピックがサポートされます。また、サブスクリプションで設定された、お客様定義のトピックでメッセージを受信できます。これは、固定トピックに発行するメッセージをデバイスからメッセージをルーティングしたり、リソースに制約のあるデバイスから、構造化されていないデータやスタックに依存したデータを処理したりするために使用できます。

このコネクタは、BatchPutMessage API を使用して、データ (JSON または base64 エンコードされた文字列) を送信先チャネルに送信します。コネクタは、raw データを API の要件に準拠した形式に処理できます。コネクタは入力メッセージをチャネルごとのキューにバッファし、非同期的にバッチを処理します。また、クエリおよびバッチ動作を制御し、メモリ使用を制限するパラメータを提供します。たとえば、最大キューサイズ、バッチ間隔、メモリサイズ、アクティブなチャネルの数を設定できます。

このコネクタには以下のバージョンがあります。

バージョン

ARN

4

arn:aws:greengrass:region::/connectors/IoTAnalytics/versions/4

3

arn:aws:greengrass:region::/connectors/IoTAnalytics/versions/3

2

arn:aws:greengrass:region::/connectors/IoTAnalytics/versions/2

1

arn:aws:greengrass:region::/connectors/IoTAnalytics/versions/1

バージョンの変更については、「Changelog」を参照してください。

Requirements

このコネクタには以下の要件があります。

Version 3 - 4
  • AWS IoT Greengrass Core ソフトウェア v1.9.3 以降。

  • Pythonバージョン 3.7 または 3.8 が Core デバイスにインストールされ、PATH 環境変数に追加されている。

    注記

    Python 3.8 を使用するには、次のコマンドを実行して、デフォルトの Python 3.7 インストールフォルダから、インストールされている Python 3.8 バイナリへのシンボリックリンクを作成します。

    sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7

    これにより、AWS IoT Greengrass の Python 要件を満たすようにデバイスが設定されます。

  • このコネクタは、Amazon Web Services リージョンでのみ使用できます。AWS IoT GreengrassおよびAWS IoT Analyticsがサポートされています。

  • 関連するすべての AWS IoT Analytics エンティティとワークフローが作成され、設定されます。エンティティには、チャネル、パイプライン、データストア、およびデータセットが含まれます。詳細については、「」を参照してください。AWS CLIまたはconsoleプロシージャのAWS IoT Analyticsユーザーガイド

    注記

    送信先AWS IoT Analyticsチャネルは、同じアカウントを使用する必要があり、同じAWS リージョンをこのコネクタとして使用します。

  • -Greengrass グループのロールを許可するように構成されたiotanalytics:BatchPutMessageアクションを、以下の IAM ポリシーの例に示すように、送信先チャネルに適用します。チャネルは、現在のAWS アカウントとリージョン。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1528133056761", "Action": [ "iotanalytics:BatchPutMessage" ], "Effect": "Allow", "Resource": [ "arn:aws:iotanalytics:region:account-id:channel/channel_1_name", "arn:aws:iotanalytics:region:account-id:channel/channel_2_name" ] } ] }

    グループロール要件では、必要なアクセス許可を付与するようにロールを設定し、ロールがグループに追加されていることを確認する必要があります。詳細については、「Greengrass グループロールの管理 (コンソール)」または「Greengrass グループロールの管理 (CLI)」を参照してください。

Versions 1 - 2
  • AWS IoT GreengrassCore ソフトウェア v1.7 以降。

  • Pythonバージョン 2.7 が Core デバイスにインストールされ、PATH 環境変数に追加されている。

  • このコネクタは、Amazon Web Services リージョンでのみ使用できます。AWS IoT GreengrassおよびAWS IoT Analyticsがサポートされています。

  • 関連するすべての AWS IoT Analytics エンティティとワークフローが作成され、設定されます。エンティティには、チャネル、パイプライン、データストア、およびデータセットが含まれます。詳細については、「」を参照してください。AWS CLIまたはconsoleプロシージャのAWS IoT Analyticsユーザーガイド

    注記

    送信先AWS IoT Analyticsチャネルは、同じアカウントを使用する必要があり、同じAWS リージョンをこのコネクタとして使用します。

  • -Greengrass グループのロールを許可するように構成されたiotanalytics:BatchPutMessageアクションを、以下の IAM ポリシーの例に示すように、送信先チャネルに適用します。チャネルは、現在のAWS アカウントとリージョン。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1528133056761", "Action": [ "iotanalytics:BatchPutMessage" ], "Effect": "Allow", "Resource": [ "arn:aws:iotanalytics:region:account-id:channel/channel_1_name", "arn:aws:iotanalytics:region:account-id:channel/channel_2_name" ] } ] }

    グループロール要件では、必要なアクセス許可を付与するようにロールを設定し、ロールがグループに追加されていることを確認する必要があります。詳細については、「Greengrass グループロールの管理 (コンソール)」または「Greengrass グループロールの管理 (CLI)」を参照してください。

Parameters

MemorySize

このコネクタに割り当てるメモリ量 (KB 単位)。

での表示名AWS IoTコンソール: メモリサイズ

必須true

タイプ: string

有効なパターン:^[0-9]+$

PublishRegion

-AWS リージョンでは必須AWS IoT Analyticsチャネルがに作成されます。コネクタと同じリージョンを使用します。

注記

これは、グループロールで指定されたチャネルのリージョンに一致する必要があります。

での表示名AWS IoTコンソール: 発行領域

必須false

タイプ: string

有効なパターン:^$|([a-z]{2}-[a-z]+-\\d{1})

PublishInterval

受信したデータのバッチを AWS IoT Analytics に発行する間隔 (秒単位)。

での表示名AWS IoTコンソール: [パブリッシュ間隔]

必須false

タイプ: string

デフォルト値: 1

有効なパターン:$|^[0-9]+$

IotAnalyticsMaxActiveChannels

コネクタがアクティブに監視する AWS IoT Analytics チャネルの最大数。これは 0 より大きい必要があり、少なくとも、コネクタが同時に発行することが予期されるチャネル数と同じである必要があります。

このパラメータを使用すると、コネクタが同時に管理できるキューの合計数を限定して、メモリ消費量を制限することができます。キューに入れられたすべてのメッセージが送信されると、キューは削除されます。

での表示名AWS IoTコンソール: アクティブなチャネルの最大数

必須false

タイプ: string

デフォルト値: 50

有効なパターン:^$|^[1-9][0-9]*$

IotAnalyticsQueueDropBehavior

キューがいっぱいであるときに、チャネルキューからメッセージを削除する動作。

での表示名AWS IoTコンソール: キューの削除動作

必須false

タイプ: string

有効な値: DROP_NEWEST または DROP_OLDEST

デフォルト値: DROP_NEWEST

有効なパターン:^DROP_NEWEST$|^DROP_OLDEST$

IotAnalyticsQueueSizePerChannel

メッセージが送信または削除される前に、メモリに保持するされるメッセージの最大数 (1 チャネルあたり)。0 より大きくする必要があります。

での表示名AWS IoTコンソール: チャネルあたりの最大キューサイズ

必須false

タイプ: string

デフォルト値: 2048

有効なパターン:^$|^[1-9][0-9]*$

IotAnalyticsBatchSizePerChannel

1 つのバッチリクエストで AWS IoT Analytics チャネルに送信するメッセージの最大数。0 より大きくする必要があります。

表示名AWS IoTコンソール: チャネルあたりのバッチに対するメッセージの最大数

必須false

タイプ: string

デフォルト値: 5

有効なパターン:^$|^[1-9][0-9]*$

IotAnalyticsDefaultChannelName

お客様定義の入力トピックに送信されるメッセージに対して、このコネクタが使用する AWS IoT Analytics チャネルの名前。

表示名AWS IoTコンソール: デフォルトのチャンネル名

必須false

タイプ: string

有効なパターン:^[a-zA-Z0-9_]$

IsolationMode

このコネクタのコンテナ化モード。デフォルトは GreengrassContainer です。つまり、コネクタは AWS IoT Greengrass コンテナ内の分離されたランタイム環境で実行されます。

注記

グループの既定のコンテナ化設定は、コネクタには適用されません。

での表示名AWS IoTコンソール: コンテナ分離モード

必須false

タイプ: string

有効な値: GreengrassContainer または NoContainer

有効なパターン:^NoContainer$|^GreengrassContainer$

サンプルコネクタを作成する (AWS CLI)

次の CLI コマンドは、ConnectorDefinitionIoT Analytics コネクタを含む初期バージョンで。

aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MyIoTAnalyticsApplication", "ConnectorArn": "arn:aws:greengrass:region::/connectors/IoTAnalytics/versions/3", "Parameters": { "MemorySize": "65535", "PublishRegion": "us-west-1", "PublishInterval": "2", "IotAnalyticsMaxActiveChannels": "25", "IotAnalyticsQueueDropBehavior": "DROP_OLDEST", "IotAnalyticsQueueSizePerChannel": "1028", "IotAnalyticsBatchSizePerChannel": "5", "IotAnalyticsDefaultChannelName": "my_channel" } } ] }'
注記

このコネクタの Lambda 関数には、存続期間の長いライフサイクル。

左AWS IoT Greengrassコンソールでは、グループのコネクタページで. 詳細については、「Greengrass コネクタの開始方法 (コンソール)」を参照してください。

入力データ

このコネクタは、事前定義またはお客様定義の MQTT トピックでデータを受け入れます。発行者は、Greengrass デバイス、Lambda 関数、またはその他のコネクタにすることができます。

事前定義されたトピック

コネクタは、発行者がチャネル名をインラインで定義できる、次の 2 つの構造化された MQTT トピックをサポートします。

  • Aフォーマットされたメッセージで、iotanalytics/channels/+/messages/putトピック。これらの入力メッセージの IoT データは、JSON または base64 でエンコードされた文字列としてフォーマットされる必要があります。

  • iotanalytics/channels/+/messages/binary/put トピックのフォーマットされていないメッセージ このトピックで受信された入力メッセージはバイナリデータとして扱われ、任意のデータ型を含めることができます。

    事前定義されたトピックに発行するには、+ ワイルドカードをチャンネル名で置き換えます。次に例を示します。

    iotanalytics/channels/my_channel/messages/put
お客様定義のトピック

コネクタは # トピック構文をサポートします。これにより、サブスクリプションで設定する任意の MQTT トピックで入力メッセージを受け入れることができます。トピックパスを指定することをお勧めします。代わりに、#ワイルドカード。これらのメッセージは、コネクタに指定したデフォルトのチャネルに送信されます。

お客様定義のトピックの入力メッセージはバイナリデータとして処理されます。任意のメッセージ形式を使用し、任意のデータ型を含めることができます。お客様定義のトピックを使用すると、固定されたトピックに発行するデバイスからメッセージをルーティングできます。また、それらのトピックを使用して、データを処理できないデバイスから入力データをフォーマットされたメッセージに受け入れ、コネクタに送信することもできます。

サブスクリプションと MQTT トピックの詳細については、「入力と出力」を参照してください。

グループロールは、すべての送信先チャネルで iotanalytics:BatchPutMessage アクションを許可する必要があります。詳細については、「Requirements」を参照してください。

トピックのフィルター: iotanalytics/channels/+/messages/put

このトピックを使用して、フォーマットされたメッセージをコネクタに送信し、動的に送信先チャネルを指定します。このトピックでは、応答出力で返される ID を指定することもできます。コネクタは、AWS IoT Analytics に送信するアウトバウンド BatchPutMessage リクエストで、各メッセージの固有の ID を検証します。ID が重複しているメッセージは削除されます。

このトピックに送信される入力データは、次のメッセージ形式を使用します。

メッセージのプロパティ
request

指定されたチャンネルに送信するデータ。

必須true

タイプ:objectには、以下のプロパティが含まれます。

message

デバイスまたはセンサーデータ (JSON または base64 でエンコードされた文字列)。

必須true

タイプ: string

id

リクエストの任意の ID。このプロパティでは、入力リクエストを出力レスポンスにマッピングします。指定すると、レスポンスオブジェクトの id プロパティはこの値に設定されます。このプロパティを省略する場合は、コネクタによって ID が生成されます。

必須false

タイプ: string

有効なパターン:.*

入力例
{ "request": { "message" : "{\"temp\":23.33}" }, "id" : "req123" }
トピックのフィルター: iotanalytics/channels/+/messages/binary/put

このトピックを使用して、フォーマットされていないメッセージをコネクタに送信し、動的に送信先チャネルを指定します。

コネクタのデータにより、このトピックで受信された入力メッセージは解析されません。これは、バイナリデータとして扱われます。AWS IoT Analytics にメッセージを送信する前にコネクタはメッセージをエンコードし、BatchPutMessage API の要件に準拠するようにフォーマットします。

  • コネクタは base64 で raw データをエンコードし、エンコードされたペイロードをアウトバウンド BatchPutMessage リクエストに含めます。

  • コネクタは ID を生成し、各入力メッセージに割り当てます。

    注記

    コネクタのレスポンス出力には、これらの入力メッセージの ID 相関は含まれません。

メッセージのプロパティ

なし。

トピックのフィルター: #

このトピックを使用して、任意のメッセージ形式をデフォルトのチャネルに送信します。これが特に役立つのは、デバイスが固定されたトピックに発行するときや、コネクタでサポートされているメッセージ形式にデータを処理できないデバイスからデフォルトのチャネルにデータを送信する場合です。

トピック構文は、このコネクタをデータソースに接続するために作成するサブスクリプションで定義します。トピックパスを指定することをお勧めします。代わりに、#ワイルドカード。

コネクタのデータにより、この入力トピックに公開されるメッセージは解析されません。すべての入力メッセージはバイナリデータとして扱われます。AWS IoT Analytics にメッセージを送信する前にコネクタはメッセージをエンコードし、BatchPutMessage API の要件に準拠するようにフォーマットします。

  • コネクタは base64 で raw データをエンコードし、エンコードされたペイロードをアウトバウンド BatchPutMessage リクエストに含めます。

  • コネクタは ID を生成し、各入力メッセージに割り当てます。

    注記

    コネクタのレスポンス出力には、これらの入力メッセージの ID 相関は含まれません。

メッセージのプロパティ

なし。

出力データ

このコネクターは、MQTT トピックで出力データとしてステータス情報を発行します。この情報には、AWS IoT Analyticsに送信される各入力メッセージに対してAWS IoT Analytics。

サブスクリプションのトピックフィルター

iotanalytics/messages/put/status

出力例: 成功
{ "response" : { "status" : "success" }, "id" : "req123" }
出力例: 失敗
{ "response" : { "status" : "fail", "error" : "ResourceNotFoundException", "error_message" : "A resource with the specified name could not be found." }, "id" : "req123" }
注記

コネクタが再試行可能なエラー (接続エラーなど) を検出すると、次のバッチでパブリッシュが再試行されます。エクスポネンシャルバックオフは、AWSSDKのことです。再試行可能なエラーが発生したリクエストは、チャネルキューに再度追加され、IotAnalyticsQueueDropBehavior パラメータに従ってさらに発行できます。

使用例

コネクタの試用に使用できる Python 3.7 Lambda 関数の例を設定するには、次のステップ (概要) を使用します。

注記
  1. コネクタの要件を満たしていることを確認します。

    グループロール要件では、必要なアクセス許可を付与するようにロールを設定し、ロールがグループに追加されていることを確認する必要があります。詳細については、「Greengrass グループロールの管理 (コンソール)」または「Greengrass グループロールの管理 (CLI)」を参照してください。

  2. 入力データをコネクタに送信する Lambda 関数を作成して発行します。

    サンプルコードを PY ファイルとして保存します。をダウンロードして、解凍します。AWS IoT GreengrassPython 用 Core SDK。次に、PY ファイルとルートレベルの greengrasssdk フォルダを含む zip パッケージを作成します。この zip パッケージは、にアップロードするデプロイパッケージです。AWS Lambda。

    Python 3.7 Lambda 関数を作成したら、関数バージョンを公開し、エイリアスを作成します。

  3. Greengrass グループを設定します。

    1. エイリアスで Lambda 関数を追加します (推奨)。Lambda ライフサイクルを長期間有効に (または"Pinned": trueCLI で)。

    2. コネクタを追加し、そのパラメータを設定します。

    3. コネクタが入力データを受信し、サポートされているトピックフィルターで出力データを送信できるようにするサブスクリプションを追加します。

      • Lambda 関数をソースに、コネクタをターゲットに設定し、サポートされている入力トピックフィルターを使用します。

      • コネクタをソースとして、AWS IoT Core をターゲットとして設定し、サポートされている出力トピックフィルターを使用します。このサブスクリプションを使用して、でステータスメッセージを表示します。AWS IoTconsole.

  4. グループをデプロイします。

  5. 左AWS IoTコンソール、Testページで、出力データトピックをサブスクライブして、コネクタからのステータスメッセージを表示します。この例の Lambda 関数は長期間有効であり、グループがデプロイされた直後にメッセージの送信を開始します。

    テストが終了したら、Lambda ライフサイクルをオンデマンド (または"Pinned": false)、およびフロをデプロイします。これにより、関数がメッセージの送信を停止します。

Example

次の Lambda 関数の例は、入力メッセージをコネクタに送信します。

import greengrasssdk import time import json iot_client = greengrasssdk.client('iot-data') send_topic = 'iotanalytics/channels/my_channel/messages/put' def create_request_with_all_fields(): return { "request": { "message" : "{\"temp\":23.33}" }, "id" : "req_123" } def publish_basic_message(): messageToPublish = create_request_with_all_fields() print("Message To Publish: ", messageToPublish) iot_client.publish(topic=send_topic, payload=json.dumps(messageToPublish)) publish_basic_message() def lambda_handler(event, context): return

Limits

このコネクタには、次の制限が適用されます。

  • によって適用されるすべての制限AWS SDK for Python (Boto3)向けのAWS IoT Analytics batch_put_messageaction.

  • AWS IoT Analytics BatchPutMessage API によって適用されるすべてのクォータ。詳細については、「」を参照してください。サービスクォータforAWS IoT Analytics()AWSの全般的なリファレンス

    • チャネルごとに 1 秒あたり 100,000 件のメッセージ。

    • バッチごとに 100 件のメッセージ。

    • メッセージごとに 128 KB。

    この API では、チャネル名 (チャネル ARN ではありません) を使用するため、クロスリージョンまたはクロスアカウントチャネルへのデータの送信はサポートされません。

  • AWS IoT Greengrass Core によって適用されるすべてのクォータ。詳細については、「」を参照してください。サービスクォータ向けのAWS IoT GreengrassコアのAWSの全般的なリファレンス

    特に、以下のクォータが適用されます。

    • デバイスによって送信されるメッセージの最大サイズは 128 KB です。

    • Greengrass コアルーターのメッセージキューの最大サイズは、2.5 MB です。

    • トピック文字列の最大長は、UTF-8 エンコード文字で 256 バイトです。

Licenses

IoT Analytics コネクタには、以下のサードパーティーのソフトウェアおよびライセンスが含まれています。

このコネクタは、Greengrass Core ソフトウェアライセンス契約

Changelog

次の表に、コネクタの各バージョンにおける変更点を示します。

バージョン

変更

4

追加のIsolationModeコネクタのコンテナ化モードを設定するためのパラメータです。

3

Lambda ランタイムを Python 3.7 にアップグレードしました。これにより、ランタイム要件が変更されます。

2

過剰なログ記録を減らすための修正。

1

初回リリース。

Greengrass グループには、一度にコネクタの 1 つのバージョンのみを含めることができます。コネクタのバージョンのアップグレードについては、「コネクタのバージョンのアップグレード」を参照してください。

以下の資料も参照してください。