のドキュメントを表示しています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 |
|
3 |
|
2 |
|
1 |
|
バージョンの変更については、「Changelog」を参照してください。
Requirements
このコネクタには以下の要件があります。
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 コマンドは、ConnectorDefinition
IoT 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 関数の例を設定するには、次のステップ (概要) を使用します。
-
他の Python ランタイムを使用する場合は、Python 3.6 から Python 3.7 へのシンボリックリンクを作成することができます。
-
「コネクタの使用を開始する (コンソール)」および「コネクタの使用を開始する (CLI)」トピックには、Twilio 通知コネクタの例を設定およびデプロイする方法を示す詳細なステップが含まれています。
コネクタの要件を満たしていることを確認します。
グループロール要件では、必要なアクセス許可を付与するようにロールを設定し、ロールがグループに追加されていることを確認する必要があります。詳細については、「Greengrass グループロールの管理 (コンソール)」または「Greengrass グループロールの管理 (CLI)」を参照してください。
-
入力データをコネクタに送信する Lambda 関数を作成して発行します。
サンプルコードを PY ファイルとして保存します。をダウンロードして、解凍します。AWS IoT GreengrassPython 用 Core SDK。次に、PY ファイルとルートレベルの
greengrasssdk
フォルダを含む zip パッケージを作成します。この zip パッケージは、にアップロードするデプロイパッケージです。AWS Lambda。Python 3.7 Lambda 関数を作成したら、関数バージョンを公開し、エイリアスを作成します。
-
Greengrass グループを設定します。
-
エイリアスで Lambda 関数を追加します (推奨)。Lambda ライフサイクルを長期間有効に (または
"Pinned": true
CLI で)。 -
コネクタを追加し、そのパラメータを設定します。
-
コネクタが入力データを受信し、サポートされているトピックフィルターで出力データを送信できるようにするサブスクリプションを追加します。
Lambda 関数をソースに、コネクタをターゲットに設定し、サポートされている入力トピックフィルターを使用します。
コネクタをソースとして、AWS IoT Core をターゲットとして設定し、サポートされている出力トピックフィルターを使用します。このサブスクリプションを使用して、でステータスメッセージを表示します。AWS IoTconsole.
-
-
グループをデプロイします。
-
左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_message
action. 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 コネクタには、以下のサードパーティーのソフトウェアおよびライセンスが含まれています。
-
AWS SDK for Python (Boto3)
/Apache License 2.0 -
botocore
/Apache License 2.0 -
dateutil
/PSF ライセンス -
docutils
/BSD ライセンス、GNU 一般パブリックライセンス (GPL)、Python Software Foundation ライセンス、パブリックドメイン -
jmespath
/MIT ライセンス -
s3transfer
/Apache License 2.0 -
urllib3
/MIT ライセンス
このコネクタは、Greengrass Core ソフトウェアライセンス契約
Changelog
次の表に、コネクタの各バージョンにおける変更点を示します。
バージョン |
変更 |
---|---|
4 |
追加の |
3 |
Lambda ランタイムを Python 3.7 にアップグレードしました。これにより、ランタイム要件が変更されます。 |
2 |
過剰なログ記録を減らすための修正。 |
1 |
初回リリース。 |
Greengrass グループには、一度にコネクタの 1 つのバージョンのみを含めることができます。コネクタのバージョンのアップグレードについては、「コネクタのバージョンのアップグレード」を参照してください。
以下の資料も参照してください。
-
AWS IoT Analytics ユーザーガイドの「AWS IoT Analytics とは」