AWS IoT Coreのマネージメントコンソールを開き、左側のメニューからACT
を選択しルールの画面を開き、ルールの作成
を選択します
名前にhandson_YYYYMMDD_firehose
の様な名前を入力します
ルールクエリステートメントには、SELECT * FROM 'data/Sensor'
と入力(Sensor
は実際のThing名を指定します)し、アクションの追加
を選択します。
アクションの一覧の中からAmazon Kinesis Firehoseストリームにメッセージを送信する
を探し、選択して、一番下のアクションの追加
を選択して、アクションを追加します。
ストリーム名には前の手順で作成したKinesis Data Firehoseのストリームを選択します。Separetor
には\n(改行)
を選択します。
このアクションを実行するための AWS IoT アクセス権限を付与するロールを選択または作成します。
でロールの作成
を選択するとポップアップが表示されるので、ロール名にiot-kinesisfirehose-rule-role
と入力し、ロールの作成
を選択します。
アクションの追加
を選択すると、アクションがルールに追加されます。
最後に、ルールの作成
を選択して、ルールの作成を行います。
Cloud9でSensorのプログラムが動いていない場合は、再度動かしてください。Firehoseの設定では、データが5MByteに達するか、60秒経過したらS3に出力するように設定をしましたので、少ししてからS3のコンソールを再表示してみてください。
ルールの設定が正しくされていると、以下のようにYYYY/MM/DD/HHのプレフィックスが付いて、オブジェクトが保存されます。
オブジェクトをダウンロードすると以下のように、複数のデータが含まれていることが確認できます。ルールの設定で、Separetorに改行コードを指定したので、1行1データの様な形となっています。
S3のコンソールからダウンロードするとgzip形式のファイルは勝手に展開された状態でダウンロードされます。ダウンロードしたファイルはそのままテキストエディタで開いてください。
{"value": 0.0, "timestamp": "2020-05-11T07:17:25"}
{"value": 0.0, "timestamp": "2020-05-11T07:17:27"}
{"value": 0.0, "timestamp": "2020-05-11T07:17:29"}
{"value": 0.0, "timestamp": "2020-05-11T07:17:31"}
{"value": 0.0, "timestamp": "2020-05-11T07:17:33"}
{"value": 0.0, "timestamp": "2020-05-11T07:17:35"}
{"value": 0.0, "timestamp": "2020-05-11T07:17:37"}
{"value": 0.0, "timestamp": "2020-05-11T07:17:39"}
この手順では、IoTルールを利用してAWSの他のサービスと連携する方法を実際に行っていただきました。ルールやアクションを追加することで送信されてくるデータを簡単に利用することが出来ます。ルールやアクションに付いてもっと詳しく知りたい場合は、こちらをご覧ください。
この手順での作業は以上となります。