デバイスの AWS IoT への接続 - AWS IoT Core

デバイスの AWS IoT への接続

デバイスは、 AWS IoT Core を介して AWS IoT やその他のサービスに接続します。 AWS IoT Core を通じて、デバイスは、アカウントに固有のデバイスエンドポイントを使用してメッセージを送受信します。MQTT および WSS プロトコルを使用した AWS IoTDevice SDKs サポートデバイス通信。デバイスが使用できるプロトコルの詳細については、デバイス通信プロトコル を参照してください。

メッセージブローカー

AWS IoT は、メッセージブローカーを通じてデバイス通信を管理します。デバイスおよびクライアントは、メッセージブローカーにメッセージを発行するとともに、メッセージブローカーが発行するメッセージにサブスクライブします。メッセージは、アプリケーション定義のトピックによって識別されます。メッセージブローカーは、デバイスまたはクライアントによって発行されたメッセージを受信すると、そのメッセージのトピックにサブスクライブしているデバイスとクライアントにそのメッセージを再発行します。メッセージブローカーは、メッセージの内容に基づいてアクションを実行する AWS IoT ルールエンジンにもメッセージを転送します。

AWS IoT メッセージセキュリティ

AWS IoT へのデバイス接続では、認証のために X.509 クライアント証明書AWS 署名 V4 を使用します。デバイスの通信は TLS バージョン 1.2 によって保護されており、AWS IoT では、デバイスは接続時に Server Name Indication (SNI) 拡張を送信する必要があります。詳細については、「AWS IoT のトランスポートセキュリティ」を参照してください。

AWS IoT デバイスデータとサービスエンドポイント

各アカウントには、アカウントに固有で、特定の IoT 機能をサポートする複数のデバイスエンドポイントがあります。AWS IoT デバイスデータエンドポイントは、IoT デバイスの通信ニーズに合わせて設計された発行/サブスクライブプロトコルをサポートします。ただし、アプリやサービスなどの他のクライアントも、これらのエンドポイントが提供する特殊な機能をそれらのアプリケーションが必要とする場合には、このインターフェイスを使用できます。AWS IoT デバイスサービスエンドポイントは、セキュリティおよび管理サービスへのデバイス中心のアクセスをサポートします。

アカウントのデバイスデータエンドポイントについては、 AWS IoT Core コンソールの [Settings] (設定) ページで確認できます。

デバイスデータエンドポイントなど、特定の目的のためにアカウントのデバイスエンドポイントを知るには、ここに示されている describe-endpoint CLI コマンドまたは DescribeEndpoint REST API を使用して、次の表の endpointType パラメータ値を指定します。

aws iot describe-endpoint --endpoint-type endpointType

このコマンドは、次の形式で iot-endpoint を返します: account-specific-prefix.iot.aws-region.amazonaws.com

新しいデバイスが接続されるたびに DescribeEndpoint API をクエリする必要はありません。作成したエンドポイントは永続的に維持され、作成後は変更されません。

すべてのカスタマーには iot:Data-ATS および iot:Data エンドポイントがあります。各エンドポイントは X.509 証明書を使用して、クライアントを認証します。Symantec 認証機関の広範な不信用に関連する問題を避けるために、新しい iot:Data-ATS エンドポイントタイプを使用することを強くお勧めします。下位互換性のために VeriSign 証明書を使用する古いエンドポイントからデータを取得するための iot:Data エンドポイントをデバイスに提供します。詳細については、「サーバーの認証」を参照してください。

デバイス用 AWS IoT エンドポイント

エンドポイントの目的

endpointType

説明

AWS IoT Core  - データプレーンオペレーション

iot:Data-ATS

AWS IoT のメッセージブローカー、Device Shadow、およびルールエンジンのコンポーネントとの間でデータを送受信するために使用されます。

iot:Data-ATS は、ATS 署名付きデータエンドポイントを返します。

AWS IoT Core - データプレーンオペレーション (レガシー)

iot:Data

iot:Data は、下位互換性のために提供された VeriSign 署名付きデータエンドポイントを返します。

AWS IoT Core 認証情報アクセス

iot:CredentialProvider

デバイスの組み込みの X.509 証明書を交換し、一時的な認証情報を他の AWS のサービスと直接接続するために使用されます。他の AWS のサービスへの接続の詳細については、「AWS への直接呼び出しを承認する」を参照してください。

AWS IoT Device Management - ジョブデータオペレーション

iot:Jobs

デバイスが Jobs Device HTTPS API を使用して AWS IoT Jobs サービスとインタラクションできるようにするために使用されます。

AWS IoT Core Device Advisor オペレーション (プレビュー)

iot:DeviceAdvisor

Device Advisor を使用してデバイスをテストするために使用されるテストエンドポイントタイプ。詳細については、「Device Advisor」を参照してください。

AWS IoT Core データベータ (プレビュー)

iot:Data-Beta

ベータリリース用に予約されたエンドポイントの種類。現在の使用については、設定可能なエンドポイント を参照してください。

また、example.com などの独自の完全修飾ドメイン名 (FQDN) および関連するサーバー証明書を使用して、現在パブリックベータ版の 設定可能なエンドポイント を使用してデバイスを AWS IoT に接続することもできます。

AWS IoTDevice SDKs

AWS IoT Device SDK は、IoT デバイスを AWS IoT Core に接続するのに役立ち、MQTT および MQTT over WSS プロトコルをサポートします。

AWS IoT Device SDK は、AWS IoT Device SDK が IoT デバイスの特殊な通信ニーズをサポートする点で AWS SDK とは異なりますが、AWS SDK でサポートされるすべてのサービスをサポートしているわけではありません。AWS IoT Device SDK は、すべての AWS のサービスをサポートする AWS SDK と互換性があります。ただし、それらは異なる認証方法を使用し、異なるエンドポイントに接続するため、IoT デバイスで AWS SDK を使用することが非現実的になる可能性があります。

モバイルデバイス

AWS Mobile SDK は、MQTT デバイス通信、一部の AWS IoT サービス API、および他の AWS のサービスの API のすべてをサポートします。サポートされているモバイルデバイスで開発している場合は、その SDK を確認して、それが IoT ソリューションの開発に最適なオプションであるかどうかを確認してください。

C++

AWS IoT C++ Device SDK

AWS IoT C++ Device SDK を使用すると、デベロッパーは AWS および AWS IoT Core サービスのAPI を使用して接続されたアプリケーションを構築できます。具具体的には、この SDK にはリソース制約がなく、メッセージキュー、マルチスレッドサポート、最新の言語機能などの高度な機能が必要なデバイス向けに設計されています。詳細については、以下を参照してください。

Python

AWS IoT Device SDK for Python

AWS IoT Device SDK for Python では、デベロッパーがデバイスを使用して MQTT または WebSocket Secure (WSS) プロトコル経由の MQTT で AWS IoT プラットフォームにアクセスできるように Python スクリプトを記述できます。デバイスを AWS IoT Core サービスの API に接続することで、ユーザーは AWS IoT Core が提供するメッセージブローカー、ルール、デバイスシャドウサービス、および AWS Lambda、Amazon Kinesis、Amazon S3 などの他の AWS のサービスを安全に使用できます。

JavaScript

AWS IoT Device SDK for JavaScript

AWS IoT Device SDK for JavaScript では、デベロッパーが MQTT または WebSocket プロトコル経由の MQTT を使用して AWS IoT Core の API にアクセスする JavaScript アプリケーションを記述できます。これは、Node.js 環境およびブラウザーアプリケーションで使用できます。詳細については、以下を参照してください。

Java

AWS IoT Device SDK for Java

AWS IoT Device SDK for Java では、Java デベロッパーが MQTT または WebSocket プロトコル経由の MQTT で AWS IoT Core の API にアクセスできます。SDK では、デバイスシャドウサービスがサポートされています。GET、UPDATE、DELETE を含む HTTP メソッドを使用して、 Shadows にアクセスできます。SDK では、簡略化された Shadow アクセスモデルもサポートしていて、デベロッパーが、JSON ドキュメントをシリアル化または逆シリアル化することなく、ゲッターメソッドとセッターメソッドを使用して Shadows とデータを交換できます。詳細については、以下を参照してください。

Embedded C

AWS IoT Device SDK for Embedded C

重要

この SDK は、経験豊富な組み込みソフトウェアデベロッパーによる使用を想定しています。

AWS IoT Device SDK for Embedded C (C-SDK) は、IoT デバイスを AWS IoT Core に安全に接続するために組み込みアプリケーションで使用できる、MIT オープンソースライセンスに基づく C ソースファイルのコレクションです。これには、MQTT、JSON Parser、および AWS IoT Device Shadow ライブラリが含まれています。これはソース形式で配布され、アプリケーションコード、その他のライブラリ、およびオプションで RTOS (Real Time Operating System) とともにお客様のファームウェアに組み込まれることが意図されています。

Fleet Provisioning の場合、https://github.com/aws/aws-iot-device-sdk-embedded-C/tree/v4_beta_deprecated にある AWS IoT Device SDK for Embedded C の v4_beta_deprecated バージョンを使用します。

AWS IoT Device SDK for Embedded C は通常、最適化された C 言語ランタイムを必要とするリソース制約のあるデバイスを対象としています。この SDK は、任意のオペレーティングシステムで使用でき、任意のプロセッサタイプ (MCU や MPU など) でホストできます。デバイスに十分なメモリと使用可能な処理リソースがある場合は、C++、Java、JavaScript、または Python 用の AWS IoT Device SDK など、他の AWS IoT Device および Mobile SDK のいずれかを使用することをお勧めします。

詳細については、以下を参照してください。