

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

# クライアントデバイスシャドウとやり取りして同期する
<a name="work-with-client-device-shadows"></a>

[シャドウマネージャーコンポーネント](shadow-manager-component.md)を使用して、クライアントデバイスシャドウを含むローカルシャドウを管理できます。シャドウマネージャーを使用して次の操作ができます。
+ Greengrass コンポーネント内のクライアントデバイスシャドウとやり取りします。
+ クライアントデバイスシャドウを と同期します AWS IoT Core。

**注記**  
デフォルトでは、シャドウマネージャーコンポーネントはシャドウを と同期しません AWS IoT Core 。シャドウマネージャーコンポーネントを設定して、同期させるクライアントデバイスシャドウを指定する必要があります。

**Topics**
+ [前提条件](#client-device-shadows-prerequisites)
+ [シャドウマネージャーがクライアントデバイスと通信できるようにする](#enable-shadow-manager-client-devices)
+ [コンポーネント内のクライアントデバイスシャドウとやり取りする](#interact-with-client-device-shadows)
+ [クライアントデバイスシャドウを と同期する AWS IoT Core](#sync-client-device-shadows-with-iot-core)

## 前提条件
<a name="client-device-shadows-prerequisites"></a>

クライアントデバイスシャドウを操作し、クライアントデバイスシャドウを と同期するには AWS IoT Core、コアデバイスが次の要件を満たしている必要があります。
+ コアデバイスでは、[クライアントデバイスサポート用の Greengrass コンポーネント](connect-client-devices.md#cloud-discovery-components)に加えて、次のコンポーネントを実行する必要があります。
  + [Greengrass nucleus](greengrass-nucleus-component.md) v2.6.0 以降
  + [シャドウマネージャー](shadow-manager-component.md) v2.2.0 以降
  + [MQTT ブリッジ](mqtt-bridge-component.md) v2.2.0 以降
+ [クライアントデバイス認証](client-device-auth-component.md)コンポーネントは、[デバイスシャドウトピック](https://docs.aws.amazon.com/iot/latest/developerguide/reserved-topics.html#reserved-topics-shadow)でクライアントデバイスが通信できるように設定する必要があります。

## シャドウマネージャーがクライアントデバイスと通信できるようにする
<a name="enable-shadow-manager-client-devices"></a>

デフォルトでは、シャドウマネージャーコンポーネントはクライアントデバイスシャドウを管理しません。この機能を有効にするには、クライアントデバイスとシャドウマネージャーコンポーネント間で MQTT メッセージをリレーする必要があります。クライアントデバイスは MQTT メッセージを使用してデバイスシャドウアップデートを送受信します。シャドウマネージャーコンポーネントはローカルの Greengrass パブリッシュ/サブスクライブインターフェイスをサブスクライブするので、[MQTT ブリッジコンポーネント](mqtt-bridge-component.md)を設定して[デバイスシャドウトピック](https://docs.aws.amazon.com/iot/latest/developerguide/reserved-topics.html#reserved-topics-shadow)で MQTT メッセージをリレーできます。

MQTT ブリッジコンポーネントは、それぞれメッセージソースとメッセージの送信先を指定するトピックマッピングのリストを使用します。シャドウマネージャーコンポーネントがクライアントデバイスシャドウを管理できるようにするには、MQTT ブリッジコンポーネントをデプロイし、クライアントデバイスシャドウのシャドウトピックを指定します。ローカル MQTT とローカルのパブリッシュ/サブスクライブの間でメッセージを両方向にリレーするようにブリッジを設定する必要があります。

<a name="create-mqtt-bridge-deployment-info"></a>MQTT ブリッジコンポーネントをコアデバイスまたはコアデバイスのグループにデプロイするには、`aws.greengrass.clientdevices.mqtt.Bridge` コンポーネントを含む[デプロイを作成](create-deployments.md)します。デプロイの MQTT ブリッジコンポーネント設定で、トピックマッピング `mqttTopicMapping` を指定します。

クライアントデバイスとシャドウマネージャーコンポーネント間の通信を有効にするように MQTT ブリッジコンポーネントを設定するには、次の例を使用します。

**注記**  
これらの設定例は、 AWS IoT Greengrass コンソールで使用できます。 AWS IoT Greengrass API を使用する場合、`merge`設定の更新にはシリアル化された JSON オブジェクトが必要なため、次の JSON オブジェクトを文字列にシリアル化する必要があります。詳細については、「[コンポーネント設定の更新](update-component-configurations.md)」を参照してください。

**Example 例: すべてのクライアントデバイスシャドウを管理する**  
次の MQTT ブリッジ設定例では、シャドウマネージャーがすべてのクライアントデバイスのすべてのシャドウを管理できるようになります。  

```
{
  "mqttTopicMapping": {
    "ShadowsLocalMqttToPubsub": {
      "topic": "$aws/things/+/shadow/#",
      "source": "LocalMqtt",
      "target": "Pubsub"
    },
    "ShadowsPubsubToLocalMqtt": {
      "topic": "$aws/things/+/shadow/#",
      "source": "Pubsub",
      "target": "LocalMqtt"
    }
  }
}
```

**Example 例: クライアントデバイスのシャドウを管理する**  
次の MQTT ブリッジ設定例では、シャドウマネージャーが `MyClientDevice` という名前のクライアントデバイスのすべてのシャドウを管理できるようになります。  

```
{
  "mqttTopicMapping": {
    "ShadowsLocalMqttToPubsub": {
      "topic": "$aws/things/MyClientDevice/shadow/#",
      "source": "LocalMqtt",
      "target": "Pubsub"
    },
    "ShadowsPubsubToLocalMqtt": {
      "topic": "$aws/things/MyClientDevice/shadow/#",
      "source": "Pubsub",
      "target": "LocalMqtt"
    }
  }
}
```

**Example 例: すべてのクライアントデバイスの名前で指定されたシャドウを管理する**  
次の MQTT ブリッジ設定例では、シャドウマネージャーがすべてのクライアントデバイスの `DeviceConfiguration` という名前のシャドウを管理できるようになります。  

```
{
  "mqttTopicMapping": {
    "ShadowsLocalMqttToPubsub": {
      "topic": "$aws/things/+/shadow/name/DeviceConfiguration/#",
      "source": "LocalMqtt",
      "target": "Pubsub"
    },
    "ShadowsPubsubToLocalMqtt": {
      "topic": "$aws/things/+/shadow/name/DeviceConfiguration/#",
      "source": "Pubsub",
      "target": "LocalMqtt"
    }
  }
}
```

**Example 例: すべてのクライアントデバイスの名前のないシャドウを管理する**  
次の MQTT ブリッジ設定例では、シャドウマネージャーがすべてのクライアントデバイスの名前のないシャドウを管理できるようになりますが、名前付きシャドウは管理できません。  

```
{
  "mqttTopicMapping": {
    "DeleteShadowLocalMqttToPubsub": {
      "topic": "$aws/things/+/shadow/delete",
      "source": "LocalMqtt",
      "target": "Pubsub"
    },
    "DeleteShadowPubsubToLocalMqtt": {
      "topic": "$aws/things/+/shadow/delete/#",
      "source": "Pubsub",
      "target": "LocalMqtt"
    },
    "GetShadowLocalMqttToPubsub": {
      "topic": "$aws/things/+/shadow/get",
      "source": "LocalMqtt",
      "target": "Pubsub"
    },
    "GetShadowPubsubToLocalMqtt": {
      "topic": "$aws/things/+/shadow/get/#",
      "source": "Pubsub",
      "target": "LocalMqtt"
    },
    "UpdateShadowLocalMqttToPubsub": {
      "topic": "$aws/things/+/shadow/update",
      "source": "LocalMqtt",
      "target": "Pubsub"
    },
    "UpdateShadowPubsubToLocalMqtt": {
      "topic": "$aws/things/+/shadow/update/#",
      "source": "Pubsub",
      "target": "LocalMqtt"
    }
  }
}
```

## コンポーネント内のクライアントデバイスシャドウとやり取りする
<a name="interact-with-client-device-shadows"></a>

ローカルシャドウサービスを使用するカスタムコンポーネントを開発して、クライアントデバイスのローカルシャドウドキュメントの読み取りと変更ができます。詳細については、「[コンポーネントのシャドウとやり取りする](interact-with-shadows-in-components.md)」を参照してください。

## クライアントデバイスシャドウを と同期する AWS IoT Core
<a name="sync-client-device-shadows-with-iot-core"></a>

ローカルクライアントデバイスのシャドウ状態を と同期するようにシャドウマネージャーコンポーネントを設定できます AWS IoT Core。詳細については、「[ローカルデバイスシャドウを と同期する AWS IoT Core](sync-shadows-with-iot-core.md)」を参照してください。