AWS IoT に上げたデータをCloudWatchで簡単にグラフ化する


AWS IoTに上がったデータの可視化方法は色々ありますが。これは個人的に最もシンプルと思われる方法です。

ちなみに他の方法の例としては、

あたりがあると思います。

入力データ例

{
  "humidity": 52,
  "temperature": 27.61
}

こんなデータが定期的にデバイスからMQTTでPubされたとします。
トピックは、data/area-1/device-1 とします。

ルール、アクションの設定

  • AWS IoT のコンソールで、左側のメニューから ACT > ルール を選びます
  • 右上の作成を押します
  • ルール作成の画面で、
    • 名前は適当に入れます
    • ルールクエリステートメントは、 SELECT * FROM 'data/area-1/device-1'
    • アクションの追加で、CloudWatch Logsにメッセージデータを送信する を選びます
    • ログのグループ名は、新しいリソースを作成するを選び、CloudWatchのコンソールで、アクション > ロググループの作成 を選びます
    • ロググループの名前は BME280 にします。(センサーの名前にしました)
    • 終わったらAWS IoTのコンソールに戻り、ログのグループ名から、 BME280 を選択します
    • ロールの作成で、適当な名前をつけて、 ロールの作成 を押します
    • ルールの作成 をクリックします
  • ここまでで、ログが先程設定したロググループに追加されるようになるはずです

CloudWatchの設定

  • CloudWatchのコンソールを開き、インサイトをクリックします。
  • ロググループから先程作成したものを選びます。
  • クエリを以下のように変更します
stats avg(temperature) by bin(1m)
  • クエリの実行をクリックします。
  • 可視化のタブを開くとログが表示されます
  • アクション > ダッシュボードに追加 をクリックします
  • 以下のように設定することでダッシュボードで見れるようになります
  • できたら左側のメニューから ダッシュボード > BME280(ダッシュボード名)を選びます

以上で完成です!もちろんクエリをカスタマイズすると色々描画方法は変えられます。