COLUMN誰でもわかる!お役立ちコラム

AWS活用支援コラム

AWS IoTの中核、AWS IoT Coreとは?

IoT構築に役立つAWSの機能

IoT(アイオーティ、Internet of Things)は、さまざまなデバイス同士を接続してさまざまなビジネスへの応用の可能性を持った技術です。一方で、別記事でも記載した通りIoTは「ITの総合格闘技」と呼ばれており、多種多様な技術領域から構成されるシステムです。構築のためのマネジメントはもちろんのこと、ネットワークから組込みシステムまで多様な知識や技術が必要です。そのようなシステムをすべて一から作るのは、多大なコストや高度なスキルを持った人材が必要になってしまいます。しかしながら、AWS(Amazon Web Services)を活用することで、ある程度開発を楽に進めることが可能です。AWS IoT(AWSで提供している一連IoTサービスの総称)では、IoTシステム構築のためのさまざまなサービスが用意されています。その中でも中核的な役割を担っているのが、本記事で紹介するAWS IoT Coreです。

AWS IoT Coreの全体像

AWS IoTでは様々なサービスが展開されていますが、その中でもAWS IoT Coreは、IoTデバイスを各種AWSサービスに接続するためのゲートウェイの役割を担っています。つまり、各デバイスを管理し、各デバイスから集められたデータをLambdaやS3など後続のAWSサービスにつなげる役割を担っています。いわば各IoTデバイス、IoTサービス、AWSサービスのハブとして機能するサービスと考えることができます。
ハブとして機能するために、AWS IoTでは下記の機能が用意されています。

  • 認証サービス…接続してくるデバイスの認証情報を管理する
  • デバイスゲートウェイ(接続管理)…デバイスがAWS IoT Coreと通信を行う際のプロトコルを管理する
  • メッセージブローカー…デバイスから受信する大量の送受信メッセージを処理する
  • ルールエンジン…収集したデータをもとに他のAWSサービスに適切に連携する
  • デバイスシャドウ…デバイスの状態を管理する

それぞれ、具体的な機能を次項で記載していきます。

IoT開発はAWSなら素早く実現可能、スタイルズのAWSによるIoTシステム構築サービスはこちら→

認証サービス

IoTデバイスがAWSと安全に接続するためには、接続しているデバイスおよび接続先が正しい接続先かを判断することが非常に重要です。AWS IoT Coreではそのようなセキュリティ要件の実現のためにサーバー認証、クライアント認証、カスタム認証の機能が用意されています。

サーバー認証

接続するデバイスから見て、接続先が正しいかを判断するための認証機能です。デバイスが接続すると、AWS IoT CoreサーバーはTLSによる証明書をデバイスに送信して、接続先が正しいことをデバイス側に伝達します。証明書には、AWSで発行するもののほか、独自の認証機関の証明書を利用することも可能です。

クライアント認証

接続してくるデバイスが正しいデバイスかを判断するための機能です。AWS IoT Coreではクライアントの種別に応じて下記3種類の手段がサポートされています。

  • X.509クライアント証明書…クライアントがデバイスの場合
  • IAMユーザー、グループ、ロール…クライアントがPCなどで、AWS CLIなどを利用して接続を行う場合
  • Amazon Cognito…クライアントがモバイルアプリケーションなどの場合

カスタム認証

高度なセキュリティ要件など、特殊な場合は独自の認証認可の仕組みを利用することができます。この場合は認証用のLambda関数を構築して認証認可を行います。

デバイスゲートウェイ

デバイスゲートウェイは様々なプロトコルを利用する機器に対して、接続管理を行う機能です。AWS IoT Coreでは、IoTデバイスおよびクライアントとの通信プロトコルとして、MQTT、MQTT over WebSocket Secure(WSS)、HTTPSプロトコルを使用可能となっており、それらのプロトコルに合わせてそれぞれの機器と接続することが可能です。

メッセージブローカー

IoTデバイスやクライアントから送信されたデータをAWS IoT Coreが受け取り、次のデータ処理に向けて受け流すサーバーの役割を果たす仕組みで、Pub/Sub型の仕組みを採用しています。送付先は “トピック”として設定が可能になっています。

Pub/Sub型とは

メッセージ(データ)の送信者(パブリッシュ側)が特定の受信者(サブスクライブ側)を想定せずにメッセージを送るように設計されたデータのやり取り形式のことです。このパブリッシュ/サブスクライブ型のプロトコルを利用することで、データのやり取りを非同期処理することができます。非同期処理とは、「相手の状態を気にせずデータを送る」処理のことで、身近な例でいうと留守電メッセージやメールが該当します。

トピックとは

トピックとは、メッセージ(データ)を送り先に振り分けるための識別子です。”/”(スラッシュ)で複数の階層として送り先を指定することで、収集したデータによって送り先を分類します。例えば、

temperature/tokyo/chiyoda-ku/marunouchi

のようにトピックを設定しておき、丸の内に設置したセンサーからのデータはmarunouchi に、その他のエリアから収集したデータはchiyoda-kuやtokyoに振り分ける、といった形です。なお、トピック指定には、正規表現のようなワイルドカードを使用可能です。

ルールエンジン

ルールエンジンはIoTデバイスから収集したデータを後続のAWSのサービスにつなげるための機能です。具体的には、条件を設定し、条件に当てはまるデータを加工・フィルタリングした上で、各種AWSサービスに適した形で受け渡します。条件にはSQLを設定することができます。具体的な利用例を見てみましょう。

データのフィルタリング・加工

下記のようなSQLがあるとします。

SELECT *
FROM temperature/tokyo/chiyoda-ku/marunouchi
WHERE temperature > 25.0

これは、『SELECT』がデータの取得先、『FROM』が対象となるTopic、『WHERE』以下が条件となっており、『丸の内で気温が25.0以上となっているデータ』を条件として設定しています。これによりデータをフィルタリングすることが可能です。また、50以上の組み込み関数を利用することが可能で、例えばデータの日時を付与するTimestamp関数を利用することで、収集したデータを拡張することが可能です。

アクションの設定

LambdaやDynamoDB、S3など、主要なAWSサービスに連携して後続の処理を定義することが可能です。連携先は各種AWSサービスだけでなく、HTTPSによりSlackなどの別アプリケーションを指定したり、別のMQTTトピックにメッセージを再送信することもできます。なお、後続の処理を実行するためにはAWS IoT Core側にIAMロールがアタッチされている必要があります。

IoT開発はAWSなら素早く実現可能、スタイルズのAWSによるIoTシステム構築サービスはこちら→

デバイスシャドウ

デバイスシャドウは、AWS IoT Coreに接続するデバイスの現在の状態を保存したり取得する機能を有しています。IoTシステムにおいては、デバイスは故障や設置状況により接続が途切れてしまうことがあります。IoTデバイスの状態の情報をクラウド上に持っておくことで、アプリケーション側からは常にデバイス状態を把握することができ、再接続時にアプリケーションを正常に稼働させることができたり、データの齟齬によるデータの欠損等を防止することができます。またメンテナンスの際にはデバイスが一覧化されていることで、デバイスの一元管理も可能になります。デバイスの状態はJSON形式で保存されます。

まとめ

IoTシステムを一から構築することは非常に困難ですが、AWS IoT Coreには5種類の機能が用意されており、それぞれがIoTシステムの構築に役立つ機能となっています。これらの機能を使いこなすことで、よりスムーズにIoTシステムの構築が可能になります。AWS IoT Coreを効率的に使うためにはAWSに強いベンダーに相談するのもいいでしょう。