AWS IoTに関する基本的な内容をまとめてみたものです。AWS IoTに関する、Web上にすでにある解説コンテンツをまとめたサイトの抜粋です。
[AWS IoTの実現するセキュアな双方向通信] (https://www.techcrowd.jp/iot/secure/)
[IoTサービスでサポートする通信プロトコル] (https://www.techcrowd.jp/iot/secure/)
AWS IoT では数十億のデバイスと数兆のメッセージをサポートし、それらのメッセージを AWS エンドポイントおよび他のデバイスに確実かつ安全に処理しルーティングします。AWS IoT では、断続的な接続を許容し、デバイスのコードフットプリントを削減し、必要なネットワーク帯域幅を削減するよう特にデザインされた HTTP、WebSockets、および MQTT といった軽量の通信プロトコルをサポートしています。
HTTP:
HTTPプロトコルでの通信をサポートしており、デバイス側からrestAPIで呼ぶことが可能
MQTT:
MQTTは軽量でリソースの限られているデバイスとの通信に広く使われているプロトコル。
AWS IoTは、MQTT 3.1.1ベースで実装
WebSockets:
MQTT over WebSocketsをサポートしているので、ブラウザベースのアプリケーションがAWS IoTと接続しているデバイスと双方向通信を行うことが可能。WebSocketはTCP port443での通信が可能のため、大部分のファイアウォールやwebプロキシーサーバを通すことが可能
[軽量でリソースを消費しないMQTTプロトコル] (https://www.techcrowd.jp/iot/secure/)
MQTT は軽量の pub/sub プロトコルでネットワーク帯域幅とデバイスリソースを最小限に抑えるよう設計されています。MQTT では TLS を使用した安全な通信もサポートされています。MQTT は IoT ユースケースで頻繁に使用されています。MQTT v3.1.1 では OASIS 標準で、AWS IoT デバイスゲートウェイはほとんどの MQTT の仕様をサポートしています。
MQTTの軽量・リソースを消費しない点をHTTPS通信と比較すると、下記のようになります
(出展; http://stephendnicholas.com/posts/power-profiling-mqtt-vs-https)
・スループットが93倍
・メッセージ送信において消費電力が1/12
・メッセージ受信において消費電力が1/180
・コネクション維持において消費電力が1/2
・ネットワークオーバーヘッドが1/8
[デバイスとの双方向通信] (https://www.techcrowd.jp/iot/secure/)
AWS IoTは、長期間のセッション保持によるクラウドを介したメッセージの送受信を実現します。クライアント(デバイスやアプリ)は制御信号やコマンドなどをクラウドから受信することができます。
AWS IoT では、断続的な接続を許容し、デバイスのコードフットプリントを削減し、必要なネットワーク帯域幅を削減するよう特にデザインされた HTTP、WebSockets、および MQTT といった軽量の通信プロトコルをサポートしています。AWS IoT では他の業界標準およびカスタムプロトコルをサポートし、複数の異なるプロトコルを使用しているデバイス同士でも相互に通信できます。
AWS IoT ではデバイスの最新の状態情報を保存し、いつでも読み込みまたは設定できるので、デバイスが常にオンラインであるかのようにアプリケーションに出現させることができます。これはデバイスとの通信が切断されていてもアプリケーションがデバイスの状態を読み込むことができ、デバイスが再接続された時にもデバイスの状態を設定し実装できることを意味します。
また、AWS IoTのMQTTでの通信では、ベストエフォート型と品質保障型のふたつの通信モードをもっています。ベストエフォート型はメッセージの到達は保障していませんが、オーバーヘッドは少なく、保障型ではメッセージの到達を保障しているものの、オーバーヘッドがベストエフォート型よりは大きくなります。
[TLSによる相互認証] (https://www.techcrowd.jp/iot/secure/)
AWS IoT では接続するすべてのポイントで認証とエンドツーエンドの暗号化を提供し、デバイスと AWS IoT 間で身元が証明されたデータのみが交換されます。それに加え、詳細なアクセス権限のポリシーを適用することによってデバイスとアプリケーションに安全にアクセスできます。
AWS IoT では、AWS の認証メソッド (「SigV4」と呼ばれます) および X.509 証明書ベースの認証がサポートされています。HTTP による接続ではこれらの方法のいずれかを使用できます。MQTT による接続では証明書ベースの認証、WebSockets による接続では SigV4 を使用できます。AWS IoT では、AWS IoT によって生成された証明書、および推奨される認証機関 (CA) によって署名された証明書を使用できます。それぞれの証明書に対するロールやポリシーの選択をマッピングでき、デバイスに触れることなく、デバイスやアプリケーションによるアクセスを認証したり、考えが変わったときにすべてのアクセスを取り消したりできます。