AWS IoT Core で実現する IoT デバイス接続 - MQTT 通信とデバイスシャドウ

MQTT プロトコルで IoT デバイスを接続し、デバイスシャドウで状態を同期する。ルールエンジンによるデータルーティングとデバイス認証の設計を紹介します。

IoT Core の概要

IoT Core は数十億台の IoT デバイスをクラウドに安全に接続し、毎秒数百万メッセージを処理するマネージドサービスです。MQTT プロトコルでデバイスとクラウド間の双方向メッセージングを提供し、ルールエンジンで受信データを AWS サービスにルーティングします。デバイスの認証は X.509 証明書で行い、IoT ポリシーでトピックごとのパブリッシュ・サブスクライブ権限を制御します。

デバイスシャドウとルールエンジン

デバイスシャドウは JSON ドキュメントでデバイスの状態を管理します。desired (期待状態) と reported (実際の状態) の差分を delta として検出し、デバイスに設定変更を通知します。デバイスがオフラインの場合、次回接続時に delta が送信されます。ルールエンジンは SQL ライクなクエリで受信メッセージをフィルタリングし、条件に合致するメッセージを LambdaDynamoDB、S3、KinesisTimestream などにルーティングします。

デバイス認証とセキュリティ

IoT Core は X.509 証明書によるデバイス認証を標準とし、デバイスごとに一意の証明書を発行します。 AWS IoT CA で証明書を管理し、 Just-in-Time Registration (JITR) で初回接続時に自動登録する仕組みを構築できます。 IoT ポリシーで MQTT トピックへのパブリッシュ・サブスクライブ権限をデバイス単位で制御し、${iot:Connection.Thing.ThingName} 変数でデバイス固有のトピックへのアクセスを制限します。 Device Defender で異常な接続パターン (大量のメッセージ送信、未知の IP からの接続) を検出し、自動的にデバイスの証明書を無効化するアクションを設定できます。 MQTT の構成パターンを把握するうえで関連書籍 (Amazon)が参考になります。

IoT Core の料金体系

IoT Core の料金は接続時間 (100 万分あたり 0.08 ドル)、メッセージング (100 万メッセージあたり 1 ドル、5KB 単位)、ルールエンジンのアクション実行 (100 万回あたり 0.15 ドル) で構成されます。デバイスシャドウの更新は 100 万オペレーションあたり 1.25 ドルです。メッセージサイズを 5KB 以内に収めることでメッセージング料金を最適化できます。デバイスからの送信頻度を適切に設定し、変化がないデータの冗長な送信を避けることでコストを削減します。Basic Ingest を使うとルールエンジンのメッセージング料金が不要になり、大量のデバイスデータを低コストで取り込めます。

まとめ

IoT Core は MQTT ベースのデバイス接続、X.509 証明書認証、ルールエンジンによるデータルーティングを提供する IoT プラットフォームです。デバイスシャドウでオフラインデバイスの状態を管理し、Device Defender でセキュリティ異常を検出して、安全な IoT 環境を構築できます。