AWS IoT
開発者ガイド

AWS IoT とは

AWS IoT では、インターネットに接続されたデバイス (センサー、アクチュエーター、組み込みマイクロコントローラー、スマート家電など) と AWS クラウドとのセキュアな双方向通信が可能になります。これにより、複数のデバイスからテレメトリデータを収集し、保存して、分析できます。また、これらのデバイスをユーザーが各自の電話やタブレットから制御できるようにするアプリケーションを作成することもできます。

AWS IoT の構成要素

以下に示しているのは、AWS IoT の構成要素です。

デバイスゲートウェイ

デバイスから AWS IoT へのセキュアかつ効率的な通信を可能にします。

メッセージブローカー

デバイスと AWS IoT アプリケーションが相互にメッセージをパブリッシュおよび受信するためのセキュアなメカニズムを提供します。パブリッシュとサブスクライブには、MQTT を直接または WebSocket を介して使用できます。パブリッシュには、HTTP REST インターフェイスを使用できます。

ルールエンジン

メッセージの処理と他の AWS のサービスとの統合を可能にします。SQL ベースの言語を使用して、メッセージペイロードからデータを選択し、データを処理して、他のサービス (Amazon S3、Amazon DynamoDB、AWS Lambda など) にデータを送信できます。また、メッセージブローカーを使用して、他のサブスクライバーにメッセージを再パブリッシュすることもできます。

セキュリティとアイデンティティサービス

AWS クラウドの安全性の責任分担を提供します。デバイスは、メッセージブローカーにデータをセキュアに送信するために、認証情報を安全な場所に保管する必要があります。メッセージブローカーとルールエンジンは、AWS のセキュリティ機能を使用して、デバイスまたは他の AWS サービスにデータをセキュアに送信します。

[Registry]

AWS クラウドで各デバイスに関連付けられたリソースの整理に使用されます。デバイスを登録し、各デバイスに最大 3 つのカスタム属性を関連付けることができます。また、各デバイスに証明書と MQTT クライアント ID を関連付けて、デバイスの管理とトラブルシューティングの機能を強化することもできます。

グループレジストリ

グループはこれらをグループに分類することで、複数のデバイスを一度に管理できるようにします。グループ内にもグループが含まれているので、グループ階層を構築することもできます。親グループで行った操作は、子グループそしてその中にあるすべてのデバイスと、その子グループでも適用されます。グループに与えられたアクセス許可は、グループ内のすべてのデバイスとそのすべての子グループに適用されます。

デバイスシャドウ

デバイスの現在の状態情報の保存と取得に使用される JSON ドキュメントです。

Device Shadow サービス

AWS クラウドでのデバイスの永続表現を可能にします。更新された状態情報をデバイスシャドウにパブリッシュしておくと、デバイスは接続時に自らの状態を同期させることができます。また、デバイスは現在の状態をアプリケーションや別のデバイス用にシャドウにパブリッシュすることもできます。

デバイスプロビジョニングサービス

デバイスに必要なリソース (モノ、証明書、1 つ以上のポリシー) を記述したテンプレートを使用して、デバイスをプロビジョニングできます。モノは、デバイスを記述する属性を含むレジストリのエントリです。デバイスは AWS IoT で認証するために証明書を使用します。ポリシーは、デバイスが AWS IoT で実行できるオペレーションを決定します。

テンプレートには、ディクショナリ (マップ) の値で置き換えられる変数が含まれています。同じテンプレートを使用して、ディクショナリのテンプレート変数に異なる値を渡すだけで、複数のデバイスをプロビジョニングすることができます。

カスタム認証サービス

カスタム認証サービスと Lambda 機能を使用して、独自の認証および認可戦略を管理できるカスタム認証者を定義できます。カスタムオーソライザーにより、AWS IoT はデバイスを認証し、ベアラトークンの認証と認証戦略を使用してオペレーションを認証することができます。

カスタムオーソライザーは、さまざまな認証戦略 (JSON Web トークン検証、OAuth プロバイダー呼び出しなど) を実装でき、MQTT オペレーションを認証するためにデバイスゲートウェイが使用するポリシー文書を戻す必要があります。

ジョブサービス

AWS IoT に接続された 1 つ以上のデバイスに送信され実行される一連のリモート操作を定義できます。たとえば、一連のデバイスに対して、アプリケーションやファームウェア更新のダウンロードとインストール、再起動、証明書のローテーション、またはリモートトラブルシューティングオペレーションの実行を指示するジョブを定義できます。

ジョブを作成するには、実行するリモートオペレーションの説明と、それを実行するターゲットのリストを指定します。ターゲットは個々のデバイス、グループ、またはその両方にすることができます。

AWS IoT の制限の詳細については、「AWS IoT の制限」を参照してください。

AWS IoT の開始方法

  • AWS IoT の詳細については、「AWS IoT のしくみ」を参照してください。

  • AWS IoT にデバイスを接続する方法については、「AWS IoT の開始方法」を参照してください。

AWS IoT へのアクセス

AWS IoT には、デバイスの作成とデバイスとのやり取り用に以下のインターフェイスが用意されています。

  • AWS Command Line Interface (AWS CLI) - Windows、macOS、Linux で AWS IoT のコマンドを実行します。これらのコマンドで、モノ、証明書、ルール、およびポリシーを作成し、管理することができます。開始するには、「AWS Command Line Interface ユーザーガイド 」を参照してください。AWS IoT のコマンドの詳細については、『AWS CLI Command Reference』の「iot」を参照してください。

  • AWS IoT API - HTTP または HTTPS リクエストを使用して IoT アプリケーションを構築します。これらの API アクションで、モノ、証明書、ルール、およびポリシーをプログラムにより作成し、管理することができます。AWS IoT の API アクションの詳細については、『AWS IoT API リファレンス』の「アクション」を参照してください。

  • AWS SDK - 言語固有の API を使用して IoT アプリケーションを構築します。これらの SDK は HTTP/HTTPS API をラップし、サポートされているいずれの言語でもプログラミングできます。詳細については、AWS の SDK およびツールを参照してください。

  • [AWS IoT Device SDKs]—AWS IoT とメッセージを送受信するための、デバイスで実行するアプリケーションを構築します。詳細については、「AWS IoT SDK」を参照してください。

AWS IoT は以下の AWS サービスと直接統合されます。

  • Amazon Simple Storage Service - AWS クラウドでスケーラブルなストレージを提供します。詳しくは、「Amazon S3」を参照してください。

  • Amazon DynamoDB - マネージド型 NoSQL データベースを提供します。詳細については、「Amazon DynamoDB」を参照してください。

  • Amazon Kinesis - ストリーミングデータのリアルタイム処理を大規模に行うことができるようになります。詳細については、「Amazon Kinesis」を参照してください。

  • AWS Lambda - イベントに対応して Amazon EC2 から仮想サーバーでコードを実行します。詳細については、「AWS Lambda」を参照してください。

  • Amazon Simple Notification Service - 通知を送信または受信します。詳細については、「Amazon SNS」を参照してください。

  • Amazon Simple Queue Service - アプリケーションによって取得されるデータをキューに保存します。詳細については、「Amazon SQS」を参照してください。