

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

# MQTT トピック
<a name="topics"></a>

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

メッセージブローカーは、トピックを使用して、MQTT を使用して送信されたメッセージと、HTTP を使用して [HTTPS メッセージ URL](http.md#httpurl) に送信されたメッセージを識別します。

は一部の[予約済みシステムトピック](reserved-topics.md) AWS IoT をサポートしていますが、ほとんどの MQTT トピックは、次のセクションで説明するように、システムデザイナーであるユーザーが作成および管理します。 はトピック AWS IoT を使用して、発行クライアントから受信したメッセージを識別し、サブスクライブしているクライアントに送信するメッセージを選択します。システムのトピック名前空間を作成する前に、MQTT トピックの特性を確認して、IoT システムに最適なトピック名の階層を作成します。

## トピック名
<a name="topicnames"></a>

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

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

**注記**  
システム内のメッセージのトピック名を考慮する場合は、次の点に注意してください。  
トピック名とトピックフィルターでは、大文字と小文字が区別されます。
トピック名に個人を特定できる情報を含めることはできません。
$ で始まるトピック名は、 AWS IoT Coreのみが使用する[予約済みのトピック](reserved-topics.md)です。
AWS IoT Core は、 AWS アカウントまたはリージョン間でメッセージを送受信できません。

トピック名と名前空間の設計の詳細については、ホワイトペーパーの「[AWS IoT Coreの MQTT トピックの設計](https://docs.aws.amazon.com/whitepapers/latest/designing-mqtt-topics-aws-iot-core/designing-mqtt-topics-aws-iot-core.html)」を参照してください。

アプリケーションがメッセージを発行およびサブスクライブする方法の例については、[AWS IoT Core チュートリアルの開始方法](iot-gs.md) と [AWS IoT Device SDK、Mobile SDK、および AWS IoT Device Client](iot-sdks.md) から始めてください。

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

## トピック ARN
<a name="topicnames-arn"></a>

すべてのトピック 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 です。

## トピック名フィルター
<a name="topicfilters"></a>

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

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

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


**トピックのワイルドカード**  

| ワイルドカード文字 | マッチ | コメント | 
| --- | --- | --- | 
| \# | トピック階層内のそのレベル以下のすべての文字列。 | トピックフィルターの最後の文字にする必要があります。<br />トピック階層のレベルで唯一の文字である必要があります。<br />\+ ワイルドカード文字を含むトピックフィルターで使用できます。 | 
| \+ | 文字を含むレベル内の任意の文字列。 | トピック階層のレベルで唯一の文字である必要があります。<br />トピックフィルターの複数のレベルで使用できます。 | 

前述のセンサートピック名でのワイルドカードの使用例:
+ `sensor/#` へのサブスクリプションでは `sensor/`、`sensor/temperature`、`sensor/temperature/room1` にパブリッシュされたメッセージを受信しますが、`sensor` にパブリッシュされたメッセージは受信しません。
+ `sensor/+/room1` のサブスクリプションでは、`sensor/temperature/room1` および `sensor/humidity/room1` にパブリッシュされたメッセージを受信しますが、`sensor/temperature/room2` または `sensor/humidity/room2` に送信されたメッセージは受信しません。

### トピックフィルターの ARN
<a name="topicfilters-arn"></a>

すべてのトピックフィルター 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 です。