MQTTのトピック - AWS(AWS) IoT コア

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

MQTTのトピック

MQTTのトピックは AWS IoT メッセージ。 AWS IoT クライアントは、メッセージのトピック名を指定して、公開するメッセージを識別します。クライアントは、トピックフィルターを AWS IoT Core に登録して、サブスクライブ (受信) するメッセージを識別します。メッセージブローカーはトピック名とトピックフィルターを使用して、パブリッシュするクライアントからサブスクライブするクライアントに、 メッセージを振り分けます。

メッセージブローカーは、トピックを使用して、MQTTを使用して送信され、HTTPを使用して送信されたメッセージを HTTPS メッセージ URL.

AWS IoT は一部の予約されたシステムトピックをサポートしていますが、ほとんどの MQTT トピックはシステムデザイナーによって作成および管理されます。AWS IoT は、次のセクションで説明するように、トピックを使用して、パブリッシュ側クライアントから受信したメッセージを識別し、サブスクライブ側クライアントに送信するメッセージを選択します。システムのトピックネームスペースを作成する前に、MQTTトピックの特性を確認し、 IoT システム。

トピック名

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

  • sensor/temperature/room1

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

  • sensor/temperature/room2

  • sensor/humidity/room1

  • sensor/humidity/room2

注記

システム内のメッセージのトピック名を考慮する場合は、次の点に注意してください。

  • トピック名とトピックフィルターでは、大文字と小文字が区別されます。

  • トピック名に個人を特定できる情報を含めることはできません。

  • $ で始まるトピック名は、AWS IoT Core によってのみ使用される 予約済みトピックです。

  • AWS IoT Core 次の間でメッセージを送受信できません: AWS アカウントまたは地域。

トピック名と名前空間の設計の詳細については、ホワイトペーパー、 のMQTTトピックの設計 AWS IoT コア.

アプリがメッセージを公開および登録する方法の例については、次から始めてください。 AWS IoT Core の開始方法 および AWS IoT デバイスとモバイル SDKs.

重要

トピック名前空間は、AWS アカウントとリージョンに制限されます。たとえば、あるリージョンの AWS アカウントで使用される sensor/temp/room1 トピックは、別のリージョンの同じ AWS アカウントで使用されるか、任意のリージョンの他の AWS アカウントで使用される sensor/temp/room1 トピックとは異なります。

トピック ARN

すべてのトピック ARNs (Amazonリソース名)には、次のフォームがあります。

arn:aws:iot:aws-region:AWS-account-ID:topic/Topic

たとえば、 arn:aws:iot:us-west-2:123EXAMPLE456:topic/application/topic/device/sensor はトピックのARNです application/topic/device/sensor.

トピックフィルター

サブスクライブするクライアントは、 メッセージブローカーにトピックフィルターを登録して、メッセージブローカーがそのトピックフィルターに送信するメッセージトピックを指定します。トピックフィルタは、単一のトピック名をサブスクライブするための単一のトピック名にすることも、複数のトピック名をサブスクライブするためのワイルドカード文字を同時に含めることもできます。

公開クライアントは、公開するトピック名にワイルドカード文字を使用できません。

次の表は、トピックフィルターで使用できるワイルドカード文字の一覧です。

トピックのワイルドカード
ワイルドカード文字 マッチ コメント
# トピック階層内のそのレベル以下のすべての文字列。

トピックフィルターの最後の文字にする必要があります。

トピック階層のレベルで唯一の文字である必要があります。

+ ワイルドカード文字を含むトピックフィルターで使用できます。

+ 文字を含むレベル内の任意の文字列。

トピック階層のレベルで唯一の文字である必要があります。

トピックフィルターの複数のレベルで使用できます。

前述のセンサートピック名でのワイルドカードの使用例:

  • sensor/# へのサブスクリプションでは sensor/sensor/temperaturesensor/temperature/room1 にパブリッシュされたメッセージを受信しますが、Sensor にパブリッシュされたメッセージは受信しません。

  • sensor/+/room1 のサブスクリプションでは、sensor/temperature/room1 および sensor/humidity/room1 にパブリッシュされたメッセージを受信しますが、sensor/temperature/room2 または sensor/humidity/room2 に送信されたメッセージは受信しません。

トピックフィルターARN

すべてのトピックフィルタ ARNs (Amazonリソース名)には、次のフォームがあります。

arn:aws:iot:aws-region:AWS-account-ID:topicfilter/TopicFilter

たとえば、 arn:aws:iot:us-west-2:123EXAMPLE456:topic/application/topic/#/sensor はトピックフィルタのARNです application/topic/#/sensor.