AWS IoTを利用する
の編集
https://yassu.jp/pukiwiki/index.php?AWS+IoT%A4%F2%CD%F8%CD%D1%A4%B9%A4%EB
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
(no template pages)
[[MQTTめも]] #contents AWS IoTにてPublish, Subscribeするテスト方法については[[AWS IoT]]を参照して下さい。 ここでは実際にデバイスを登録してIoT側にてSubscribeした内容をRepublishするまでを行ってみます。~ MQTTクライアントとなるデバイスにはWindowsソフトの[[MQTT.fx]]を使用します。 最終的にはSubscribeした内容に応じてPublishしたり、その内容をRDBに保存するまでを検討します。 *AWS IoTの設定 [#v3c81ead] **モノの登録 [#w1d2e33b] IoT Coreを選択し、管理メニューからモノを選択し、単一のモノを作成します。~ 名前にTestDeviceを入力、タイプの名前もTestDeviceを入力し、タイプを作成します。~ 推奨されている1-Click 証明書作成にて証明書を作成します。~ 次の4種類の証明書をダウンロードし、有効化し、完了します。 -このモノの証明書 *.cert.pem -パブリックキー *.public.key -プライベートキー *.private.key -AWS IoTのルートCA VeriSign-Class*.pem **ポリシーの作成 [#o1ac9a22] 安全性メニューからポリシーを選択し、ポリシーを作成します。~ 名前にTestDeviceを入力、アクションは「iot:*」、リソース ARNは「*」とし、許可にチェックを入れます。 安全性メニューから証明書を選択し、作成した証明書を選択します。~ アクションからポリシーのアタッチを選択。~ 作成したTestDeviceポリシーをアタッチします。 **ルールの作成 [#b58c7feb] ACTメニューからルールを作成します。~ 名前はTestDeviceRule、属性は以下、トピックフィルターは test/pub を入力します。~ 組み込み関数を使用してClient IDを取得することもできます。 clientid() AS client_id, timestamp() AS timestamp, * 生成されるルールクエリステートメントは以下になります。 SELECT clientid() AS client_id, timestamp() AS timestamp, * FROM 'test/pub' 条件は指定せずにアクションを追加します。~ 選択できるアクションは以下の通りになります。 #ref(AWS_IoT.png) 「AWS IoT のトピックにメッセージを再パブリッシュする」を選択し、アクションを設定します。~ トピックは test/sub を入力します。~ IAMロール名は IoT_role とし、新しいロールを作成します。 アクションは複数登録が可能です。 **IAMロールへのポリシーのアタッチ [#bfff7666] AWSのトップからIAM(Identity and Access Management)を選択します。~ ロールから作成したIoT_roleを選択します。~ ポリシーのアタッチからAWSIoTLogging, AWSIoTRuleActionsを選択し、アタッチします。 *MQTT.fxの設定 [#t3eab449] **接続設定 [#e0cc6f2e] [[MQTT.fx]]をインストールし、青い歯車をクリックし、接続設定を行います。 Broker Addressにはエンドポイント、Broker Portは8883になります。~ エンドポイントはAWS IoTの設定メニューにて確認できます。 同一画面でSSL/TLSを選択し、証明書の設定を行います。 Enable SSL/TLSにチェック ProtocolはTLSv1.2を選択 Self signed certificatesをチェック -CA File : root CAを選択 -Client Certificate File : 拡張子crt -Client Key File : private.pem.key -Client Key Password : 未入力 -PEM Formatted : チェック OKでConnectにて接続します。 Logタブにて接続していることを確認します。 *動作確認 [#o66e5364] **Subscribe [#z8091efe] MQTT.fxのSubscribeメニューにてトピックに test/sub を入力し、Subscribeボタンを押下し、待ち受け状態にします。 **Publish [#ef0494eb] MQTT.fxのPublishメニューにてトピックに test/pub を入力し、メッセージに以下を入力してAWS IoTに向けてPublishします。 {"temp":25} Publishで特に画面上では変化は起きませんが、再びSubscribeメニューを開くとclient_idとtimestampが付加され、以下のメッセージがAWS IoTからPublishされていることが確認できます。 {"client_id":"AWS_IoT","timestamp":1529478275214,"temp":25} *考察 [#i527405e] Subscribeした内容に応じてPublishする内容を変えたい場合は、「メッセージデータを渡す Lambda 関数を呼び出す」アクションを追加し、Lambdaにてメッセージを解析してAWS IoTへPublishすることになりそうです。~ Lambdaで使用できる言語はNode.js, Java, C#, Go, Pythonなので、Pythonが選択肢になりそうです。 Subscribeしたメッセージをデータベースへ保存する場合は、KinesisやS3バケットを経由してRDBに保存したり、DynamoDBへ挿入することになりそうです。
タイムスタンプを変更しない
[[MQTTめも]] #contents AWS IoTにてPublish, Subscribeするテスト方法については[[AWS IoT]]を参照して下さい。 ここでは実際にデバイスを登録してIoT側にてSubscribeした内容をRepublishするまでを行ってみます。~ MQTTクライアントとなるデバイスにはWindowsソフトの[[MQTT.fx]]を使用します。 最終的にはSubscribeした内容に応じてPublishしたり、その内容をRDBに保存するまでを検討します。 *AWS IoTの設定 [#v3c81ead] **モノの登録 [#w1d2e33b] IoT Coreを選択し、管理メニューからモノを選択し、単一のモノを作成します。~ 名前にTestDeviceを入力、タイプの名前もTestDeviceを入力し、タイプを作成します。~ 推奨されている1-Click 証明書作成にて証明書を作成します。~ 次の4種類の証明書をダウンロードし、有効化し、完了します。 -このモノの証明書 *.cert.pem -パブリックキー *.public.key -プライベートキー *.private.key -AWS IoTのルートCA VeriSign-Class*.pem **ポリシーの作成 [#o1ac9a22] 安全性メニューからポリシーを選択し、ポリシーを作成します。~ 名前にTestDeviceを入力、アクションは「iot:*」、リソース ARNは「*」とし、許可にチェックを入れます。 安全性メニューから証明書を選択し、作成した証明書を選択します。~ アクションからポリシーのアタッチを選択。~ 作成したTestDeviceポリシーをアタッチします。 **ルールの作成 [#b58c7feb] ACTメニューからルールを作成します。~ 名前はTestDeviceRule、属性は以下、トピックフィルターは test/pub を入力します。~ 組み込み関数を使用してClient IDを取得することもできます。 clientid() AS client_id, timestamp() AS timestamp, * 生成されるルールクエリステートメントは以下になります。 SELECT clientid() AS client_id, timestamp() AS timestamp, * FROM 'test/pub' 条件は指定せずにアクションを追加します。~ 選択できるアクションは以下の通りになります。 #ref(AWS_IoT.png) 「AWS IoT のトピックにメッセージを再パブリッシュする」を選択し、アクションを設定します。~ トピックは test/sub を入力します。~ IAMロール名は IoT_role とし、新しいロールを作成します。 アクションは複数登録が可能です。 **IAMロールへのポリシーのアタッチ [#bfff7666] AWSのトップからIAM(Identity and Access Management)を選択します。~ ロールから作成したIoT_roleを選択します。~ ポリシーのアタッチからAWSIoTLogging, AWSIoTRuleActionsを選択し、アタッチします。 *MQTT.fxの設定 [#t3eab449] **接続設定 [#e0cc6f2e] [[MQTT.fx]]をインストールし、青い歯車をクリックし、接続設定を行います。 Broker Addressにはエンドポイント、Broker Portは8883になります。~ エンドポイントはAWS IoTの設定メニューにて確認できます。 同一画面でSSL/TLSを選択し、証明書の設定を行います。 Enable SSL/TLSにチェック ProtocolはTLSv1.2を選択 Self signed certificatesをチェック -CA File : root CAを選択 -Client Certificate File : 拡張子crt -Client Key File : private.pem.key -Client Key Password : 未入力 -PEM Formatted : チェック OKでConnectにて接続します。 Logタブにて接続していることを確認します。 *動作確認 [#o66e5364] **Subscribe [#z8091efe] MQTT.fxのSubscribeメニューにてトピックに test/sub を入力し、Subscribeボタンを押下し、待ち受け状態にします。 **Publish [#ef0494eb] MQTT.fxのPublishメニューにてトピックに test/pub を入力し、メッセージに以下を入力してAWS IoTに向けてPublishします。 {"temp":25} Publishで特に画面上では変化は起きませんが、再びSubscribeメニューを開くとclient_idとtimestampが付加され、以下のメッセージがAWS IoTからPublishされていることが確認できます。 {"client_id":"AWS_IoT","timestamp":1529478275214,"temp":25} *考察 [#i527405e] Subscribeした内容に応じてPublishする内容を変えたい場合は、「メッセージデータを渡す Lambda 関数を呼び出す」アクションを追加し、Lambdaにてメッセージを解析してAWS IoTへPublishすることになりそうです。~ Lambdaで使用できる言語はNode.js, Java, C#, Go, Pythonなので、Pythonが選択肢になりそうです。 Subscribeしたメッセージをデータベースへ保存する場合は、KinesisやS3バケットを経由してRDBに保存したり、DynamoDBへ挿入することになりそうです。
テキスト整形のルールを表示する
添付ファイル:
AWS_IoT.png
859件
[
詳細
]