この記事は、AWS サービスの1つであるAWS IoT についての概要が、「AWS Training and Certification」にて公開されているのでこちらを翻訳しながら紹介していきたいと思います。
コンテンツへのアクセス方法はこちらに記載しています。
Introduction to AWS IoT
AWS IoTは、AWSとデバイスをセキュアにつなぐことができるマネージド型のプラットフォームです。そのため、様々なデバイスとAWSサービスを組みあせて利用していくことが可能となります。
AWS IoTの主な特徴として5つ挙げられます。
・どの様なスペックでもサポート可能なプロトコルサポート
・IoTの規模に合わせたスケーリング
・非常にセキュアな環境
・クラウドやモバイルアプリとの統合
・SDKやツールへのサポート対応
AWS IoT Components
図のように、AWS IoTには様々なコンポーネントが用意されています。ここでは、1つひとつのコンポーネントを見ていきながら、それぞれの役割について紹介していきます。
Device GatewayはAWS IoTとデバイス間のセキュアな通信を可能とします。Pub/Subメッセージングモデルを使用することで、1対1、または1対多の通信を可能としています。
Device GatewayはMQTT、webソケット、そしてHTTP1.1プロトコルに対応しており、自動スケーリングが可能なため、インフラ環境をプロビジョニングする必要がありません。
Device GatewayはMessage Brokerとホストしています。Message Brokerは、AWS IoTとメッセージの送受信を可能にするサービスです。ただし、AWSアカウントやリージョンを飛び越えた送受信はできません。
AWS IoTではデバイスやサービス同士での通信を安全に行えるよう、セキュアなコミュニケーションチャンネルを提供しております。
AWSクラウドセキュリティメカニズムは、AWS IoTとデバイスやAWSサービス間で行われるデータ通信を保護します。AWS IoTと接続されているデバイスは、Message Broker やThing Shadowへのアクセスが保証されている必要があります。AWS IoTに送受信される全てのトラフィックはTLSによって暗号化されている必要があります。
AWS IoTでは、4つの認証手法をサポートしております。
・X.509 certificates
・IAM users, groups, and roles
・Amazon Cognito identities
・Federated identities
これら4つの認証手法は、モバイルアプリやWebアプリ、そしてデスクトップアプリだけでなく、AWS CLIコマンドでの利用も可能です。AWS IoTデバイスでは、一般的にX.509 certificatesを利用しております。
また、ポリシーを使ってそれぞれのアイデンティティの実行可能範囲を制限することができます。
AWS IoTのルールエンジン機能は、送られてきたMQTTメッセージを読み取ります。その後送られたメッセージに記載されたルールに沿った行動を実行してくれます。
AWS IoTのルールエンジン機能の仕様について例をもとに見てみましょう。
一台の車が雨の中を走っていたとします。そのとき、他の自動車モジュールには雨の中を走行する車のエンジンの稼働状況や、道路状況などの情報が定期的に送られております。そして、その情報はAWS IoTにも送られています。ルールエンジンはそのデータをzip codeにある全ての車に送り、雨の中の運転に対して警告します。
それと同時に、AWS IoTはこのデータをS3バケットにロードし、Amazon Quick Sightでこのデータを実行するために、Visual Analyticsを初期化します。また、予想外のエンジン修理に備えて、Amazon MLも起動させておくことが出来ます。
デバイスは常にAWS IoTと接続状態にあるわけではありません。接続が途切れることもあります。Thing Shadow(別名:Device Shadow)は、デバイスの直近の情報や状態をストアすることが可能なJSONドキュメント仕様のサービスです。
Thing ShadowはMQTT・HTTPで操作することができます。
こちらも例を見てみましょう。ある質量分析装置がAWS IoTに接続しており、数時間サイクルでAWS IoTにステートメントを報告しているとします。装置はサイクルが完了したら接続が切れるように設定されておりますが、できたら装置とはオンライン接続時と同じ様にシームレスで繋がっていて欲しいと考えております。
Device Shadowは、質量分析装置のオンライン接続が中断された際にはステートメントを報告するよう設定します。これによりDevice Shadowには装置のステートメントが維持されているので、そこからステートメントを調べることも出来ます。
Device Registryはデバイスのデータベースと認識して頂ければと思います。デバイスからDevice Registryへのエントリについては任意ではありますが、このサービスを利用することで、デバイスのエコシステムをより効率的なものにすることができます。
Device Registryは「Thing」と「Thing Type」で構成されております。「Light Bulb」を例に説明して行きたいと思います。Thing Typeには「Light Bulb」を割り当てます。これはシリアルナンバーのような役割を果たします。そして、Thingには「My Light Bulb」を割り当てます。これは、シリアルナンバーに対する個々の識別を表しています。これにより、Device Registryにある1つひとつのデバイスが個々に認識できるようになります。メタデータをもとに、Device Registryから接続しているデバイスを見つけることも可能です。
AWS IoTには、Device SDKと呼ばれるサービスがあります。これによってAWS IoTとデバイスを結びつけることが可能となります。Device SDKは5つあります。
・C-SDK
・Cソースファイルの集合体でAWS IoTプラットフォームとアプリをセキュアに繋ぐ
・JS-SDK
・MQTTを使用してAWS IoTに接続するジョブアプリを作成可能
・Arduino Library
・AWS IoTとArduino Yunの接続可能
・iOS SDK
・オープンソースソフトウェア開発キット
Android SDK
・AWSを使ったモバイルアプリの開発に必要なドキュメントや、ライブラリサンプルを提供
Hyperscale Infrastructure
AWS IoTは他のAWSサービスとシームレスに作用します。AWSはどの様なアプリに対しても、ハイパースケールなインフラストラクチャを提供します。例えば、AWS Lambdaであれば、コードを走らせるためのサーバを用意する必要はもうありません。何かしらのイベントが発生した際の対応にのみLambdaを使う、といったことができます。
また、AWS IoTを使用することで、他のAWSサービスと合わせてセキュアでパワフルなIoT開発が可能となります。
おわりに
AWS IoTについての紹介は以上です。既存のAWSサービスを組み合わせながら、身近なデバイスをお手軽にIoT化することができるこちらのサービス、是非お試しください。