翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
MQTT トピック
MQTT トピックは AWS IoT messages. AWS IoT clients を識別し、メッセージトピック名を指定して発行するメッセージを識別します。クライアントは、トピックフィルターを 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 Core」を参照してください。
アプリケーションがメッセージを発行およびサブスクライブする方法の例については、AWS IoT Core チュートリアルの開始方法 と AWS IoT Device SDK、Mobile SDK、および AWS IoT Device Client から始めてください。
重要
トピック名前空間は、 AWS アカウント および リージョンに制限されています。例えば、あるリージョン AWS アカウント の で使用されるsensor/temp/room1
トピックは、別のリージョンの同じ AWS アカウントで使用されるトピック、または任意のリージョンの他の で使用されるsensor/temp/room1
トピックとは異なり AWS アカウント ます。
トピック 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/temperature
、sensor/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:topicfilter/application/topic/+/sensor
はトピックフィルターARNの です application/topic/+/sensor
。