翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 文字を超えることはできません。
-
大文字と小文字は区別されます。同じペイロード内に
foo
とFOO
という名前のフィールドがある場合は重複と見なされます。
たとえば、メッセージペイロードでは {"temp_01": 29}
や {"_temp_01": 29}
は有効ですが、{"temp-01": 29}
、{"01_temp": 29}
や {"__temp_01": 29}
は無効です。
-
AWS IoT コンソール
の、左のナビゲーションペインで、[Test (テスト)] を選択します。 -
MQTT クライアントのページで、[Specify a topic (トピックの指定)] の [Publish (発行)] セクションに「
iot/test
」と入力します。メッセージペイロードセクションで、次の JSON の内容が存在しているか確認し、存在しない場合は入力します。{ "message": "Hello from the IoT console" }
-
[Publish to topic] (トピックに公開) を選択します。
これでメッセージが発行され、前に作成したデータストアにルーティングされます。
BatchPutMessage API の使用
メッセージデータを AWS IoT Analytics に取り込むもう一つの方法として、BatchPutMessage
API コマンドを使用する方法があります。このメソッドでは、メッセージをルートするためにチャネルに特定のトピックを使用して AWS IoT ルールを設定する必要はありません。ただし、データメッセージをチャネルに送信するデバイスが AWS SDK で作成したソフトウェアを実行できること、あるいは AWS CLI CLI を使用して BatchPutMessage
を呼び出すことができることが必須条件となります。
-
送信するメッセージが含まれているファイル
messages.json
を作成します (この例では、1 つのメッセージだけが送信されます)。[ { "messageId": "message01", "payload": "{ \"message\": \"Hello from the CLI\" }" } ]
-
batch-put-message
コマンドを実行します。aws iotanalytics batch-put-message --channel-name mychannel --messages file://messages.json --cli-binary-format raw-in-base64-out
エラーがなければ次の出力が表示されます。
{ "batchPutMessageErrorEntries": [] }