AQ Tech Blog

AWS IoT Coreとは?最低限押さえておくべき基礎知識 | AQ Tech Blog

作成者: takeshi.yoshida|2023年01月19日

はじめに

以前、案件で利用したAWS IoT Coreについて社内の勉強会で発表する機会がありました。

勉強会用に作成した資料を元に、AWS IoT Coreを理解するにあたって必要な最低限の基礎知識をまとめた記事を執筆してみました。

当記事の対象者

AWS IoT Coreについてこれから学ぼうとしている方を対象としております。

AWS IoT Coreとは?

一言で言えば、外部IoTデバイスとクラウド間を安全に接続するマネージドサービスです。

スマホ、スマートデバイス、ウェアラブルデバイス、コネクテッドカー、etc..といったIoTデバイスからは大量のデータを取得することができます。これらのデータをAWSサービスを用いて有効活用する際に、AWS IoT CoreがIoTデバイスとAWSサービスとの相互接続の仲介役となります。

AWS IoT Coreの主な用途

1つ目はデータ収集となります。

上記で説明した通りIoTデバイスが取得したデータをAWS IoT Coreを用いて収集します。

収集したデータをAWSサービスによって、データ蓄積(S3、DynamoDB)、リアルタイム分析(OpenSearch)、機械学習(SageMaker)など様々な方法で活用できます。もちろんここで挙げたAWSサービスはほんの一例です。

2つ目はデバイス制御です。

AWS IoT CoreからIoTデバイスに対して遠隔で電源オンオフ、ソフトウェアアップデート、ファームウェアアップデートなどを行います。

今回の記事は1つ目に挙げたデータ収集をメインに解説していきます。

AWS IoT Coreの主な機能(IoTデバイス接続・データ収集に関わる箇所)

IoTデバイス接続・データ収集に関わるAWS IoT Coreの主な機能を紹介します。

AWS IoT Coreは様々な要素がありますが、下記の機能を最低限押さえておけば、後述するAWS公式ハンズオンに取り組みやすいと思います。

 

画像引用:AWS IoT Core初級

 

デバイスゲートウェイ

IoTデバイスとの接続管理をします。

マネージドサービスのため、自前でサーバーを用意する必要もありません。

また大量のIoTデバイスが接続しにきても自動的にスケールアウトするため、運用の負担がありません。

現在(2022年11月)プロトコルは、

・MQTT、WebSocketのPublish(送信)/Subscribe(受信)

・HTTPSのPublish(送信)

をサポートしています。

 

アイデンティティサービス

IoTデバイスの認証・認可管理をします。

認証に利用する証明書はAWS IoT Core生成の証明書、独自証明書が利用できます。

証明書以外にもCognitoによるクライアント認証、Lambdaによるカスタム認証なども利用できます。

初めてAWS IoT Coreを利用する場合、AWS IoT Core生成の証明書を利用するのが一番簡単です。

認可はAWS IoT Policyで行い、IoTデバイスのアクセスを制御できます。

AWS IoT PolicyはIAM Policy同様にJSONで記述します。

 

メッセージブローカー

デバイスとデバイス、デバイスとクラウド、デバイスとアプリケーションなど様々な双方向通信を仲介します。

Topic(データの送信先URL)を介して、Publish(送信)/Subscribe(受信)モデルで通信します。

このTopicは一部予約されているものがありますが、基本的に自由に設計する事ができます。

参考:予約済みトピック - AWS IoT Core

 

公式ドキュメントのTopic設計の例を引用します。

トピック名とトピックフィルターは、UTF-8 エンコードされた文字列です。スラッシュ (/) 文字を使用して階層のレベルを区切ることにより、情報の階層を表すことができます。たとえば、このトピック名は、部屋 1 の温度センサーを表すことができます。

  • sensor/temperature/room1

この例では、次のようなトピック名を持つ他の種類のセンサーが他の部屋にある場合もあります。

  • sensor/temperature/room2
  • sensor/humidity/room1
  • sensor/humidity/room2

引用:MQTT トピック - AWS IoT Core

 

公式ドキュメントの例では「機器(センサー)/機能(温度・湿度)/場所(部屋)」という階層で、データを識別できるようになっています。

大量のIoTデバイスのデータを管理・活用する際に、このTopic設計が非常に重要となります。

 

Topic設計のホワイトペーパーを紹介したAWS公式ブログがあります。

Topic設計をする際、このAWS公式ブログでTopic設計のベストプラクティスの概要をつかむのがおすすめです。また、ブログに記載されている図を見ると、Topicについて想像がしやすくなると思います。

より詳細な内容を学びたい場合は、ブログで紹介されているホワイトペーパーを読むようにしてください。

参考:Designing MQTT Topics for AWS IoT Core – ホワイトペーパーについて | Amazon Web Services ブログ

 

ルールエンジン

メッセージブローカー(Topic)に来たデータをSQL文でフィルタリングする事ができます。

 

SQL文の構文は以下の通りです。

SELECT <データ属性> FROM <トピック名> WHERE <条件>

 

SELECT句、FROM句、 WHERE句などの詳細な設定、制約事項は公式ドキュメントを参照してください。

参考:AWS IoT SQL リファレンス

 

フィルタリングしたデータは、IoT ルールアクションによって他のAWS サービスに連携する事が出来ます。

IoT ルールアクションによって連携できるAWSサービスの一覧は、以下の公式ドキュメントを参照してください。

参考:AWS IoT ルールアクション

公式ハンズオンの紹介

AWS公式ハンズオンを紹介します。

「AWS IoT Core 初級ハンズオン」というAWS公式ハンズオンで、以下の構成のシステムを構築できます。

AWS IoT Core for Beginners (Japanese)

画像引用:1.2 ハンズオン構成

アプリケーションのデータ活用、リアルタイム分析・可視化、データ蓄積といったデータ収集の主なパターンを学ぶことができます。上記に記載した最低限の基礎知識を元にこのハンズオンを一通り行えば、AWS IoT Coreの理解が深まると思います。ぜひお試しください。

最後に

案件でAWS IoT Coreを利用した際は、並行でOSSであるHiveMQの検証をしていました。

HiveMQをAWS環境上で利用するには、EC2を構築し、管理する必要があります。また、ナレッジが基本的に英語のものしか無く、理解することが難しかったです。

そのため、マネージドサービスであるAWS IoT Coreは理解しやすく非常に使いやすいと感じました。

もし皆さんがAWSでIoT環境を構築することになった際は、まずはAWS IoT Coreを利用することをおすすめします。その際、この記事がお役に立てたのなら幸いです。