📝

AWS IoT Core とは

2021/04/24に公開

AWS IoT Core について調べてみました。

AWS IoT Core とは

AWS 公式サイトからポイントとなりそうな部分をピックアップしてみます。
よくある質問 - AWS IoT Core | AWS

  • IoT デバイス - AWS 間の通信が可能
  • IoT デバイス同士の通信が可能
  • デバイスがオフラインでも追跡可能
  • サポートされているプロトコルは 4 つ
    • HTTP
    • MQTT
    • WebSockets
    • LoRaWAN
  • デバイスからのデータを処理することが可能
    • 取り込み
    • フィルタリング
    • 変換
    • ルーティング
    • データにも続くアクション
  • 通信はデバイスゲートウェイにより実現される
    • 発信者と受信者を接続するサーバーのような存在
    • 自動的にスケールする
  • すべての通信は暗号化される
  • ルールエンジンにより受信したデータの処理方法を決定する
    • フィルタリングして DB に保存
    • しきい値をモニタリングして通知
    • Lambda でカスタム処理

以下のブログで紹介されているポイントも確認してみます。
【入門】AWS IoT Coreを理解するために必要な6つのポイント | DevelopersIO

  • 6 つのポイント
    • メッセージブローカー(プロトコル)
    • メッセージブローカー(トピック)
    • セキュリティ&アイデンティティ
    • ルールエンジン
    • アクション
    • デバイスシャドウ

メッセージブローカー(プロトコル)

AWS IoT Core側でデバイスからのメッセージを受け取る際に複数のプロトコルがあります。

上述した 4 つのプロトコルです。

  • HTTPS
    • 特定の URL に POST リクエスト
  • MQTT
    • AWS IoT SDK でリクエスト
  • MQTT over WebSocket
    • AWS IoT Core Device SDK でリクエスト

メッセージブローカー(トピック)

WebAPIでいうエンドポイントに当たる部分です。トピックを設定することで受信対象を識別することができます。
トピックに設定したURIに向けてデバイス側が送信を行うことでデータの受信ができます。トピックはURLと同じように「/」で階層を区切ることでトピック自体を階層的に表現することができます。

  • リクエストの送信先
  • トピックを階層に区切ることも可能

セキュリティ&アイデンティティ

AWS IoT Coreでは、デバイスの認証情報とポリシーを管理できます。
証明書の管理自体はAWS IoTで生成することも可能ですし、独自の証明書を登録して使用することもできます。ポリシーはIAM ポリシーと同じルールで管理されます。

  • 認証は証明書、認可はポリシーで管理可能

ルールエンジン

SQLベースの文法でトピックにきた値を整形・追記、フィルタリングしてデータの受け渡しができます。ここで取得したデータをアクションに流すことで、AWS内部の別のサービスにデータを送ることができます。

アクション

AWS IoT Core からAWS内部の別のサービスに繋ぐアクションを設定できます。

  • AWS サービス以外へのメッセージ送信も可能
  • 各サービスごとの処理には適切なアクション権限が必要
  • エラーアクションも設定可能
    • Lambda のコードエラーではエラーアクションに遷移しない

デバイスシャドウ

デバイスシャドウは、IoT Coreに接続するデバイスの現在の状態を保存したり取得する際に使います。

  • シャドウを介してデバイス - AWS 間で情報伝達
  • デバイスのオフライン時でもデバイスの状態はシャドウが保持
    • オンライン時にデバイスへ反映可能

一連の流れのまとめ

  1. デバイスがトピックに向けてMQTTでパブリッシュ
  2. 証明書やポリシーで認証・認可をチェック
  3. シャドウにデータが流れてシャドウを更新
  4. デフォルトの設定でシャドウ更新時に特定のトピックへ向けてパブリッシュ
  5. トピックを対象にいれているルールクエリが起動
  6. ルールクエリに基づいてデータを抽出
  7. DynamoDBにルールクエリで抽出したデータを反映するアクションを実行

まとめ

今回は AWS IoT Core について調べてみました。
どなたかの参考になれば幸いです。

参考資料

Discussion