MQTT トピック - AWS IoT Core

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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 アカウントまたはリージョン間でメッセージを送受信できません。

トピック名と名前空間の設計の詳細については、ホワイトペーパーの「AWS IoT Coreの MQTT トピックの設計」を参照してください。

アプリケーションがメッセージを発行およびサブスクライブする方法の例については、の開始方法 AWS IoT CoreAWS IoT Device SDKsMobile SDKs、および AWS IoT Device Client から始めてください。

重要

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

トピック ARN

すべてのトピック ARN (Amazon リソースネーム) は、次のフォーマットを備えています。

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

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

トピックフィルター

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

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

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

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

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

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

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

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

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

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

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

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

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

トピックフィルターの ARN

すべてのトピックフィルター ARN (Amazon リソースネーム) は、次の形式になります。

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

例えば、arn:aws:iot:us-west-2:123EXAMPLE456:topicfilter/application/topic/+/sensor はトピックフィルター application/topic/+/sensor の ARN です。