

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Interagiere mit Geräteschatten
<a name="interact-with-shadows"></a>

Greengrass-Core-Geräte können mithilfe von Komponenten mit [AWS IoT Geräteschatten](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html) interagieren. Ein *Schatten* ist ein JSON-Dokument, das die aktuellen oder gewünschten Statusinformationen für eine AWS IoT Sache speichert. Schatten können den Status eines Geräts für andere AWS IoT Greengrass Komponenten verfügbar machen, unabhängig davon, ob das Gerät angeschlossen ist AWS IoT oder nicht. Jedes AWS IoT Gerät hat seinen eigenen klassischen, unbenannten Schatten. Sie können auch mehrere benannte Schatten für jedes Gerät erstellen. 

[Geräte und Dienste können Cloud-Schatten mithilfe von MQTT und den [reservierten MQTT-Shadow-Themen, HTTP mithilfe der Device Shadow-REST-API](https://docs.aws.amazon.com/iot/latest/developerguide/reserved-topics.html#reserved-topics-shadow)[und dem for](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-rest-api.html) erstellen, aktualisieren und löschen.AWS CLIAWS IoT](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot-data/index.html)

Die [Shadow-Manager-Komponente](shadow-manager-component.md) ermöglicht es Ihren Greengrass-Komponenten, lokale Shadows zu erstellen, zu aktualisieren und zu löschen, indem sie den lokalen [Shadow-Service und die lokalen](ipc-local-shadows.md) Publish/Subscribe-Shadow-Themen verwenden. Der Shadow-Manager verwaltet auch die Speicherung dieser lokalen Shadow-Dokumente auf Ihrem Kerngerät und kümmert sich um die Synchronisation von Shadow-Statusinformationen mit Cloud-Shadows.

Sie können die Shadow-Manager-Komponente auch verwenden, um lokale Shadows für [Client-Geräte](interact-with-local-iot-devices.md) zu verwalten, die eine Verbindung zum Kerngerät herstellen. Damit Shadow Manager Schatten auf Client-Geräten verwalten kann, konfigurieren Sie die [MQTT-Bridge-Komponente](mqtt-bridge-component.md) so, dass sie Nachrichten zwischen dem lokalen MQTT-Broker und dem lokalen Publish/Subscribe-Dienst weiterleitet. Weitere Informationen finden Sie unter [Interagieren Sie mit Schatten auf Client-Geräten und synchronisieren Sie sie](work-with-client-device-shadows.md).

Weitere Informationen zu AWS IoT Device Shadow-Konzepten finden Sie unter [AWS IoT Device Shadow Service](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html) im *AWS IoT Developer Guide*.

**Topics**
+ [Interagiere mit Schatten in Komponenten](interact-with-shadows-in-components.md)
+ [Synchronisieren Sie lokale Geräteschatten mit AWS IoT Core](sync-shadows-with-iot-core.md)

# Interagiere mit Schatten in Komponenten
<a name="interact-with-shadows-in-components"></a>

Sie können benutzerdefinierte Komponenten, einschließlich Lambda-Funktionskomponenten, entwickeln, die den lokalen Shadow-Dienst verwenden, um lokale Shadow-Dokumente und Shadow-Dokumente auf Client-Geräten zu lesen und zu ändern.

Benutzerdefinierte Komponenten interagieren mit dem lokalen Shadow-Dienst mithilfe der AWS IoT Greengrass IPC-Kernbibliotheken im AWS IoT Device SDK oder im AWS IoT Greengrass Komponenten-SDK. Die [Shadow-Manager-Komponente](shadow-manager-component.md) aktiviert den lokalen Shadow-Dienst auf Ihrem Kerngerät.

Um die Shadow Manager-Komponente auf einem Greengrass-Core-Gerät bereitzustellen, [erstellen Sie eine Bereitstellung](create-deployments.md), die die `aws.greengrass.ShadowManager` Komponente enthält.

**Anmerkung**  
Standardmäßig ermöglicht die Bereitstellung der Shadow-Manager-Komponente nur lokale Shadow-Operationen. Um die Synchronisierung von Shadow-Statusinformationen für Core-Geräteshadows oder Shadows für Client-Geräte mit den entsprechenden Cloud-Shadow-Dokumenten in zu ermöglichen AWS IoT Greengrass AWS IoT Core, müssen Sie ein Konfigurationsupdate für die Shadow-Manager-Komponente erstellen, das den `synchronize` Parameter enthält. Weitere Informationen finden Sie unter [Synchronisieren Sie lokale Geräteschatten mit AWS IoT Core](sync-shadows-with-iot-core.md).

**Topics**
+ [Schattenstatus abrufen und ändern](#interact-shadow-states)
+ [Reagieren Sie auf Änderungen des Schattenstatus](#react-shadow-events)

## Schattenstatus abrufen und ändern
<a name="interact-shadow-states"></a>

Die Shadow-IPC-Operationen rufen Statusinformationen in lokalen Shadow-Dokumenten ab und aktualisieren sie. Die Shadow-Manager-Komponente kümmert sich um die Speicherung dieser Shadow-Dokumente auf Ihrem Kerngerät.

**Um lokale Shadow-Status zu ändern**

1. Fügen Sie dem Rezept für Ihre benutzerdefinierte Komponente Autorisierungsrichtlinien hinzu, damit die Komponente Nachrichten zu lokalen Shadow-Themen empfangen kann.

   Beispiele für Autorisierungsrichtlinien finden Sie unter [Beispiele für lokale Shadow-IPC-Autorisierungsrichtlinien](ipc-local-shadows.md#ipc-local-shadow-authorization-policy-examples).

1. Verwenden Sie die Shadow-IPC-Operationen, um Informationen zum Schattenstatus abzurufen und zu ändern. Weitere Hinweise zur Verwendung von Shadow-IPC-Operationen im Komponentencode finden Sie unter. [Interagiere mit lokalen Schatten](ipc-local-shadows.md)

**Anmerkung**  <a name="note-requirement-enable-shadow-manager-client-devices"></a>
Damit ein Core-Gerät mit Client-Geräteshadows interagieren kann, müssen Sie auch die MQTT-Bridge-Komponente konfigurieren und bereitstellen. Weitere Informationen finden Sie unter [Aktivieren des Shadow-Managers für die Kommunikation mit Client-Geräten](work-with-client-device-shadows.md).

## Reagieren Sie auf Änderungen des Schattenstatus
<a name="react-shadow-events"></a>

Greengrass-Komponenten verwenden die lokale publish/subscribe Schnittstelle, um auf einem Kerngerät zu kommunizieren. Damit eine benutzerdefinierte Komponente auf Änderungen des Schattenstatus reagieren kann, können Sie die lokalen publish/subscribe Themen abonnieren. Auf diese Weise kann die Komponente Nachrichten zu den lokalen Shadow-Themen empfangen und dann auf diese Nachrichten reagieren. 

Lokale Shadow-Themen verwenden dasselbe Format wie die AWS IoT Device-Shadow-MQTT-Themen. Weitere Informationen zu Shadow-Themen finden Sie unter [Device Shadow MQTT-Themen](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html) im *AWS IoT Developer Guide*.

**Um auf lokale Änderungen des Shadow-Status zu reagieren**

1. Fügen Sie dem Rezept für Ihre benutzerdefinierte Komponente Zugriffskontrollrichtlinien hinzu, damit die Komponente Nachrichten zu lokalen Shadow-Themen empfangen kann.

   Beispiele für Autorisierungsrichtlinien finden Sie unter [Beispiele für lokale Shadow-IPC-Autorisierungsrichtlinien](ipc-local-shadows.md#ipc-local-shadow-authorization-policy-examples).

1. Um eine benutzerdefinierte Aktion in einer Komponente zu initiieren, verwenden Sie `SubscribeToTopic` IPC-Operationen, um die Shadow-Themen zu abonnieren, zu denen Sie Nachrichten erhalten möchten. Weitere Hinweise zur Verwendung lokaler publish/subscribe IPC-Operationen im Komponentencode finden Sie unter. [Lokale Nachrichten veröffentlichen/abonnieren](ipc-publish-subscribe.md)

1. Um eine Lambda-Funktion aufzurufen, verwenden Sie die Konfiguration der Ereignisquelle, um den Namen des Schattenthemas anzugeben und anzugeben, dass es sich um ein publish/subscribe lokales Thema handelt. Hinweise zum Erstellen von Lambda-Funktionskomponenten finden Sie unter[AWS Lambda Funktionen ausführen](run-lambda-functions.md).

**Anmerkung**  <a name="note-requirement-enable-shadow-manager-client-devices"></a>
Damit ein Core-Gerät mit Client-Geräteschatten interagieren kann, müssen Sie auch die MQTT-Bridge-Komponente konfigurieren und bereitstellen. Weitere Informationen finden Sie unter [Aktivieren des Shadow-Managers für die Kommunikation mit Client-Geräten](work-with-client-device-shadows.md).

# Synchronisieren Sie lokale Geräteschatten mit AWS IoT Core
<a name="sync-shadows-with-iot-core"></a>

Die Shadow-Manager-Komponente ermöglicht AWS IoT Greengrass die Synchronisierung von Shadow-Status auf lokalen Geräten mit AWS IoT Core. Sie müssen die Konfiguration der Shadow-Manager-Komponente so ändern, dass sie den `synchronization` Konfigurationsparameter enthält, und die Namen der AWS IoT Dinge für Ihre Geräte sowie die Schatten, die Sie synchronisieren möchten, angeben. 

Wenn Sie den Schattenmanager für die Synchronisierung von Schatten konfigurieren, werden alle Statusänderungen für bestimmte Schatten synchronisiert, unabhängig davon, ob die Änderungen in lokalen Schattendokumenten oder in Cloud-Schattendokumenten auftreten.

Sie können auch angeben, ob die Schatten-Manager-Komponente Schatten in Echtzeit oder in regelmäßigen Abständen synchronisiert. Standardmäßig synchronisiert die Shadow-Manager-Komponente Schatten in Echtzeit, sodass das Kerngerät Shadow-Updates von AWS IoT Core und zu jedem Update sendet und empfängt. Sie können regelmäßige Intervalle konfigurieren, um die Bandbreitennutzung und die Gebühren zu reduzieren.

**Topics**
+ [Voraussetzungen](#shadow-sync-prereqs)
+ [Konfigurieren Sie die Shadow Manager-Komponente](#configure-shadow-manager-for-sync)
+ [Synchronisieren Sie lokale Schatten](#sync-local-shadows)
+ [Konfliktverhalten bei Shadow Merge](#shadow-merge-behavior)

## Voraussetzungen
<a name="shadow-sync-prereqs"></a>

Um lokale Shadows mit zu synchronisieren AWS IoT Core, müssen Sie die AWS IoT Richtlinie des Greengrass Core-Geräts so konfigurieren, dass die folgenden AWS IoT Core Shadow-Richtlinienaktionen zulässig sind.
+ `iot:GetThingShadow`
+ `iot:UpdateThingShadow`
+ `iot:DeleteThingShadow`

Weitere Informationen finden Sie hier:
+ [AWS IoT Core Richtlinienaktionen](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policy-actions.html) im *AWS IoT Developer Guide*
+ [Minimale AWS IoT Richtlinie für AWS IoT Greengrass V2 Kerngeräte](device-auth.md#greengrass-core-minimal-iot-policy)
+ [Aktualisieren Sie die AWS IoT Richtlinie eines Kerngeräts](device-auth.md#update-core-device-iot-policy)

## Konfigurieren Sie die Shadow Manager-Komponente
<a name="configure-shadow-manager-for-sync"></a>

Der Shadow-Manager benötigt eine Liste von Shadow-Namenszuordnungen, um Shadow-Statusinformationen in lokalen Shadow-Dokumenten mit Cloud-Shadow-Dokumenten in synchronisieren zu können. AWS IoT Core

Um Shadow-Status zu synchronisieren, [erstellen Sie eine Bereitstellung](create-deployments.md), die die `aws.greengrass.ShadowManager` Komponente enthält, und geben Sie die Shadows, die Sie synchronisieren möchten, im `synchronize` Konfigurationsparameter in der Shadow-Manager-Konfiguration in der Bereitstellung an.

**Anmerkung**  <a name="note-requirement-enable-shadow-manager-client-devices"></a>
Damit ein Kerngerät mit den Schatten von Client-Geräten interagieren kann, müssen Sie auch die MQTT-Bridge-Komponente konfigurieren und bereitstellen. Weitere Informationen finden Sie unter [Aktivieren des Shadow-Managers für die Kommunikation mit Client-Geräten](work-with-client-device-shadows.md).

Das folgende Beispiel für ein Konfigurationsupdate weist die Shadow Manager-Komponente an, die folgenden Shadows mit AWS IoT Core zu synchronisieren:
+ Der klassische Shadow für das Core-Gerät 
+ Das `MyCoreShadow` nach dem Kerngerät benannte 
+ Der klassische Schatten für ein IoT-Ding namens `MyDevice2` 
+ Die benannten Schatten `MyShadowA` und `MyShadowB` für ein IoT-Ding namens `MyDevice1`

Dieses Konfigurationsupdate legt fest, dass Schatten mit AWS IoT Core in Echtzeit synchronisiert werden sollen. Wenn Sie Shadow Manager v2.1.0 oder höher verwenden, können Sie die Shadow Manager-Komponente so konfigurieren, dass Schatten in regelmäßigen Abständen synchronisiert werden. Um diese Funktion zu konfigurieren, ändern Sie die Synchronisierungsstrategie auf `periodic` und geben Sie a `delay` in Sekunden für das Intervall an. Weitere Informationen finden Sie [im Strategiekonfigurationsparameter](shadow-manager-component.md#shadow-manager-component-configuration) der Shadow Manager-Komponente.

Dieses Konfigurationsupdate legt fest, dass Schatten in beide Richtungen zwischen AWS IoT Core und dem Kerngerät synchronisiert werden. Wenn Sie Shadow Manager v2.2.0 oder höher verwenden, können Sie die Shadow Manager-Komponente so konfigurieren, dass Schatten nur in eine Richtung synchronisiert werden. Um diese Funktion zu konfigurieren, ändern Sie die Synchronisation `direction` auf `deviceToCloud` oder. `cloudToDevice` Weitere Informationen finden Sie [im Konfigurationsparameter Richtung](shadow-manager-component.md#shadow-manager-component-configuration) der Shadow Manager-Komponente.

```
{
  "strategy": {
    "type": "realTime"
  },
  "synchronize": {
    "coreThing": {
      "classic": true,
      "namedShadows": [
        "MyCoreShadow"
      ]
    },
    "shadowDocuments": [
      {
        "thingName": "MyDevice1",
        "classic": false,
        "namedShadows": [
          "MyShadowA",
          "MyShadowB"
        ]
      },
      {
        "thingName": "MyDevice2",
        "classic": true,
        "namedShadows": [ ]
      }
    ],
    "direction": "betweenDeviceAndCloud"
  }
}
```

## Synchronisieren Sie lokale Schatten
<a name="sync-local-shadows"></a>

Wenn das Greengrass-Core-Gerät mit der AWS IoT Cloud verbunden ist, führt der Shadow-Manager die folgenden Aufgaben für die Shadows aus, die Sie in der Komponentenkonfiguration angeben. Das Verhalten hängt von der Konfigurationsoption für die Richtung der Schattensynchronisierung ab, die Sie angeben. Standardmäßig verwendet der Schattenmanager die `betweenDeviceAndCloud` Option, um Schatten in beide Richtungen zu synchronisieren. Wenn Sie Shadow Manager v2.2.0 oder höher verwenden, können Sie das Kerngerät so konfigurieren, dass Schatten nur in eine Richtung synchronisiert werden. Dies kann oder sein`cloudToDevice`. `deviceToCloud`
+ Wenn die Konfiguration der Shadow-Synchronisierungsrichtung `betweenDeviceAndCloud` oder lautet`cloudToDevice`, ruft Shadow Manager die gemeldeten Statusinformationen aus dem Cloud-Shadow-Dokument in ab. AWS IoT Core Anschließend werden lokal gespeicherte Shadow-Dokumente aktualisiert, um den Gerätestatus zu synchronisieren.
+ Wenn die Konfiguration der Shadow-Synchronisierungsrichtung `betweenDeviceAndCloud` oder ist`deviceToCloud`, veröffentlicht Shadow Manager den aktuellen Status des Geräts im Cloud-Shadow-Dokument.

## Konfliktverhalten bei Shadow Merge
<a name="shadow-merge-behavior"></a>

In einigen Fällen, z. B. wenn das Kerngerät vom Internet getrennt wird, kann sich ein Shadow im lokalen Shadow-Dienst und in der AWS IoT Cloud ändern, bevor der Shadow-Manager die Änderungen synchronisiert. Aus diesem Grund unterscheiden sich der gewünschte und der gemeldete Status zwischen dem lokalen Shadow-Dienst und der Cloud AWS IoT 

Wenn der Shadow-Manager den Shadow synchronisiert, führt er die Änderungen gemäß dem folgenden Verhalten zusammen:
+ Wenn Sie eine ältere Version von Shadow Manager als Version 2.2.0 verwenden oder wenn Sie die Richtung der `betweenDeviceAndCloud` Shadow-Synchronisierung angeben, gilt das folgende Verhalten:
  + Wenn im gewünschten Zustand eines Shadows ein Zusammenführungskonflikt auftritt, überschreibt der Shadow-Manager den widersprüchlichen Abschnitt des lokalen Shadow-Dokuments mit dem Wert aus der Cloud. AWS IoT 
  + Wenn im gemeldeten Status eines Shadows ein Zusammenführungskonflikt auftritt, überschreibt der Shadow-Manager den widersprüchlichen Abschnitt des Schattens in der AWS IoT Cloud mit dem Wert aus dem lokalen Shadow-Dokument.
+ Wenn Sie die Richtung der `deviceToCloud` Schattensynchronisierung angeben, überschreibt der Schattenmanager den Abschnitt des Schattens in der AWS IoT Cloud, der den Konflikt verursacht, mit dem Wert aus dem lokalen Schattendokument.
+ Wenn Sie die Richtung der `cloudToDevice` Schattensynchronisierung angeben, überschreibt der Schattenmanager den Abschnitt des lokalen Schattendokuments, der den Konflikt verursacht, mit dem Wert aus der Cloud. AWS IoT 