AWS IoT Analytics へのデータの取り込み - AWS IoT Analytics

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

AWS IoT Analytics へのデータの取り込み

クエリ可能なデータストアにデータを保存するパイプラインにデータをルーティングするチャネルがある場合、メッセージデータを AWS IoT Analytics に送信する準備ができたことになります。ここでは、AWS IoT Analytics にデータを取得する 2 つの方法を示します。AWS IoT メッセージブローカーまたは AWS IoT Analytics BatchPutMessage API を使用してメッセージを送信することができます。。

AWS IoT メッセージブローカーの使用

AWS IoT メッセージブローカーを使用するには、AWS IoT ルールエンジンを使用してルールを作成します。このルールにより、特定のトピックを含むメッセージが AWS IoT Analytics にルーティングされます。ただし、このルールでは、まず必要なアクセス許可を付与するロールを作成する必要があります。

IAM ロールの作成

AWS IoT メッセージを AWS IoT Analytics チャネルにルーティングするには、ルールを設定します。ただし、その前にメッセージデータを AWS IoT Analytics チャネルに送信するためのアクセス許可をルールに付与する IAM ロールを作成する必要があります。

次のコマンドを実行してロールを作成します。

aws iam create-role --role-name myAnalyticsRole --assume-role-policy-document file://arpd.json

arpd.json ファイルの内容は次のようになります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

次に、ポリシードキュメントをロールにアタッチします。

aws iam put-role-policy --role-name myAnalyticsRole --policy-name myAnalyticsPolicy --policy-document file://pd.json

pd.json ファイルの内容は次のようになります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iotanalytics:BatchPutMessage", "Resource": [ "arn:aws:iotanalytics:us-west-2:your-account-number:channel/mychannel" ] } ] }

AWS IoT ルールの作成

チャネルにメッセージを送信する AWS IoT ルールを作成します。

aws iot create-topic-rule --rule-name analyticsTestRule --topic-rule-payload file://rule.json

rule.json ファイルの内容は次のようになります。

{ "sql": "SELECT * FROM 'iot/test'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "iotAnalytics": { "channelName": "mychannel", "roleArn": "arn:aws:iam::your-account-number:role/myAnalyticsRole" } } ] }

iot/test をルーティングする必要があるメッセージの MQTT トピックに置き換えます。チャネル名とロールを前のセクションで作成したものに置き換えます。

MQTT メッセージの AWS IoT Analytics への送信

ルールをチャネルに、チャネルをパイプラインに、パイプラインをデータストアに結合すると、ルールに一致するデータは、AWS IoT Analytics を経由して、クエリを実行する準備ができているデータストアに流れるようになります。これをテストするには、AWS IoT コンソールを使用してメッセージを送信できます。

注記

AWS IoT Analytics に送信するメッセージペイロードのフィールド名 (データ)。

  • 英数字およびアンダースコア (_) のみを使用することができます。他の特殊文字を使用することはできません。

  • 先頭は、英字または 1 つの下線 (_) にする必要があります。

  • ハイフン (-) を含めることはできません。

  • 正規表現では次の通りです: "^[A-Za-z_]([A-Za-z0-9]*|[A-Za-z0-9][A-Za-z0-9_]*)$"

  • 255 文字を超えることはできません。

  • 大文字と小文字は区別されます。同じペイロード内に fooFOO という名前のフィールドがある場合は重複と見なされます。

たとえば、メッセージペイロードでは {"temp_01": 29}{"_temp_01": 29} は有効ですが、{"temp-01": 29}{"01_temp": 29}{"__temp_01": 29} は無効です。

  1. AWS IoT コンソールの、左のナビゲーションペインで、[Test (テスト)] を選択します。

    
                                AWS IoT コンソールの [Monitor] (モニター) ページのスクリーンショット。
  2. MQTT クライアントのページで、[Specify a topic (トピックの指定)] の [Publish (発行)] セクションに「iot/test」と入力します。メッセージペイロードセクションで、次の JSON の内容が存在しているか確認し、存在しない場合は入力します。

    { "message": "Hello from the IoT console" }
  3. [Publish to topic] (トピックに公開) を選択します。

    
                                AWS IoT コンソールの [Test] (テスト) ページのスクリーンショット。

    これでメッセージが発行され、前に作成したデータストアにルーティングされます。

BatchPutMessage API の使用

メッセージデータを AWS IoT Analytics に取り込むもう一つの方法として、BatchPutMessage API コマンドを使用する方法があります。このメソッドでは、メッセージをルートするためにチャネルに特定のトピックを使用して AWS IoT ルールを設定する必要はありません。ただし、データメッセージをチャネルに送信するデバイスが AWS SDK で作成したソフトウェアを実行できること、あるいは AWS CLI CLI を使用して BatchPutMessage を呼び出すことができることが必須条件となります。

  1. 送信するメッセージが含まれているファイル messages.json を作成します (この例では、1 つのメッセージだけが送信されます)。

    [ { "messageId": "message01", "payload": "{ \"message\": \"Hello from the CLI\" }" } ]
  2. batch-put-message コマンドを実行します。

    aws iotanalytics batch-put-message --channel-name mychannel --messages file://messages.json --cli-binary-format raw-in-base64-out

    エラーがなければ次の出力が表示されます。

    { "batchPutMessageErrorEntries": [] }