

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.

# Client-Geräte mit Core-Geräten Connect
<a name="connect-client-devices"></a>

Sie können *Cloud Discovery* so konfigurieren, dass Client-Geräte mit Kerngeräten verbunden werden. Wenn Sie Cloud Discovery konfigurieren, können Client-Geräte eine Verbindung zum AWS IoT Greengrass Cloud-Dienst herstellen, um Informationen über Kerngeräte abzurufen, mit denen sie eine Verbindung herstellen können. Anschließend können die Client-Geräte versuchen, eine Verbindung zu jedem Kerngerät herzustellen, bis sie erfolgreich verbunden sind.

Um Cloud Discovery zu verwenden, müssen Sie wie folgt vorgehen:
+ Ordnen Sie Client-Geräte den Kerngeräten zu, mit denen sie eine Verbindung herstellen können.
+ Geben Sie die MQTT-Broker-Endpunkte an, an denen Client-Geräte eine Verbindung zu den einzelnen Kerngeräten herstellen können.
+ Stellen Sie Komponenten auf dem Kerngerät bereit, die die Unterstützung für Client-Geräte ermöglichen.

  Sie können auch optionale Komponenten bereitstellen, um Folgendes zu tun:
  + Leitet Nachrichten zwischen Client-Geräten, Greengrass-Komponenten und dem AWS IoT Core Cloud-Dienst weiter.
  + Verwalten Sie die MQTT-Broker-Endpunkte der Kerngeräte automatisch für Sie.
  + Verwalten Sie lokale Client-Geräte-Schatten und synchronisieren Sie Shadows mit dem AWS IoT Core Cloud-Dienst.

Sie müssen auch die AWS IoT Richtlinien für das Kerngerät überprüfen und aktualisieren, um sicherzustellen, dass es über die erforderlichen Berechtigungen verfügt, um Client-Geräte zu verbinden. Weitere Informationen finden Sie unter [Voraussetzungen](#connect-client-devices-requirements).

Nachdem Sie Cloud Discovery konfiguriert haben, können Sie die Kommunikation zwischen einem Client-Gerät und einem Core-Gerät testen. Weitere Informationen finden Sie unter [Testen Sie die Kommunikation mit Client-Geräten](test-client-device-communications.md).

**Topics**
+ [Voraussetzungen](#connect-client-devices-requirements)
+ [Greengrass-Komponenten für die Unterstützung von Client-Geräten](#cloud-discovery-components)
+ [Konfigurieren Sie Cloud Discovery (Konsole)](#configure-cloud-discovery-console)
+ [Cloud Discovery konfigurieren ()AWS CLI](#configure-cloud-discovery-cli)
+ [Client-Geräte zuordnen](associate-client-devices.md)
+ [Authentifizierung von Clients im Offlinemodus](offline-authentication.md)
+ [Endpunkte von Kerngeräten verwalten](manage-core-device-endpoints.md)
+ [Wählen Sie einen MQTT-Broker](choose-local-mqtt-broker.md)
+ [Client-Geräte über einen AWS IoT Greengrass MQTT-Broker mit einem Core-Gerät verbinden](connecting-to-mqtt.md)
+ [Testen Sie die Kommunikation mit Client-Geräten](test-client-device-communications.md)
+ [Greengrass-Entdeckungs-API RESTful](greengrass-discover-api.md)

## Voraussetzungen
<a name="connect-client-devices-requirements"></a>

Um Client-Geräte mit einem Core-Gerät zu verbinden, müssen Sie über Folgendes verfügen:
+ Auf dem Kerngerät muss [Greengrass Nucleus](greengrass-nucleus-component.md) v2.2.0 oder höher ausgeführt werden.
+ Die Greengrass-Servicerolle, die AWS IoT Greengrass für Sie AWS-Konto in der AWS Region gilt, in der das Kerngerät betrieben wird. Weitere Informationen finden Sie unter [Konfigurieren Sie die Greengrass-Servicerolle](#configure-service-role-requirement).
+ Die AWS IoT Richtlinie des Kerngeräts muss die folgenden Berechtigungen zulassen:<a name="core-device-iot-policy-client-device-permissions"></a>
  + <a name="core-device-iot-policy-client-device-permissions-putcertificateauthorities"></a>`greengrass:PutCertificateAuthorities`
  + <a name="core-device-iot-policy-client-device-permissions-verifyclientdeviceidentity"></a>`greengrass:VerifyClientDeviceIdentity`
  + <a name="core-device-iot-policy-client-device-permissions-verifyclientdeviceiotcertificateassociation"></a>`greengrass:VerifyClientDeviceIoTCertificateAssociation`
  + <a name="core-device-iot-policy-client-device-permissions-getconnectivityinfo"></a>`greengrass:GetConnectivityInfo`
  + <a name="core-device-iot-policy-client-device-permissions-updateconnectivityinfo"></a>`greengrass:UpdateConnectivityInfo`— (Optional) Diese Berechtigung ist erforderlich, um die [IP-Detektorkomponente](ip-detector-component.md) zu verwenden, die die Netzwerkverbindungsinformationen des Kerngeräts an den AWS IoT Greengrass Cloud-Dienst meldet.
  + <a name="core-device-iot-policy-client-device-permissions-shadows"></a>`iot:GetThingShadow``iot:UpdateThingShadow`, und `iot:DeleteThingShadow` — (Optional) Diese Berechtigungen sind erforderlich, um die [Shadow-Manager-Komponente](shadow-manager-component.md) zum Synchronisieren von Schatten auf Client-Geräten zu verwenden AWS IoT Core. Diese Funktion erfordert [Greengrass Nucleus](greengrass-nucleus-component.md) v2.6.0 oder höher, Shadow Manager v2.2.0 oder höher und [MQTT](mqtt-bridge-component.md) Bridge v2.2.0 oder höher.

  Weitere Informationen finden Sie unter [Konfigurieren Sie die AWS IoT Ding-Richtlinie](#configure-iot-policy-requirement).
**Anmerkung**  
Wenn Sie bei der [Installation der AWS IoT Greengrass Core-Software die AWS IoT Standardrichtlinie verwendet haben, verfügt das Core-Gerät](install-greengrass-core-v2.md) über eine AWS IoT Richtlinie, die den Zugriff auf alle Aktionen ermöglicht (). AWS IoT Greengrass `greengrass:*`
+ AWS IoT Dinge, die Sie als Client-Geräte verbinden können. Weitere Informationen finden Sie im *AWS IoT Core Entwicklerhandbuch* unter [AWS IoT Ressourcen erstellen](https://docs.aws.amazon.com/iot/latest/developerguide/create-iot-resources.html).
+ Das Client-Gerät muss über eine Client-ID eine Verbindung herstellen. Eine Client-ID ist ein Dingname. Keine andere Client-ID wird akzeptiert.
+ Die AWS IoT Richtlinie jedes Client-Geräts muss die `greengrass:Discover` Genehmigung zulassen. Weitere Informationen finden Sie unter [Minimale AWS IoT Richtlinie für Client-Geräte](device-auth.md#client-device-minimal-iot-policy).

**Topics**
+ [Konfigurieren Sie die Greengrass-Servicerolle](#configure-service-role-requirement)
+ [Konfigurieren Sie die AWS IoT Ding-Richtlinie](#configure-iot-policy-requirement)

### Konfigurieren Sie die Greengrass-Servicerolle
<a name="configure-service-role-requirement"></a>

<a name="greengrass-service-role-intro"></a>Die Greengrass-Servicerolle ist eine AWS Identity and Access Management (IAM) -Servicerolle, die den AWS IoT Greengrass Zugriff auf Ressourcen von AWS Diensten in Ihrem Namen autorisiert. Diese Rolle ermöglicht es, die Identität von Client-Geräten AWS IoT Greengrass zu überprüfen und die Verbindungsinformationen der Kerngeräte zu verwalten.

Wenn Sie die [Greengrass-Servicerolle](greengrass-service-role.md) in dieser Region noch nicht eingerichtet haben, müssen Sie eine Greengrass-Servicerolle AWS IoT Greengrass für Sie AWS-Konto in dieser Region zuordnen.

Wenn Sie die Seite „**Core-Geräteerkennung konfigurieren**“ in der [AWS IoT Greengrass Konsole](https://console.aws.amazon.com/greengrass) verwenden, AWS IoT Greengrass wird die Greengrass-Servicerolle für Sie eingerichtet. Andernfalls können Sie sie manuell über die [AWS IoT Konsole](https://console.aws.amazon.com/iot) oder die AWS IoT Greengrass API einrichten.

In diesem Abschnitt überprüfen Sie, ob die Greengrass-Servicerolle eingerichtet ist. Wenn sie nicht eingerichtet ist, erstellen Sie eine neue Greengrass-Servicerolle, die Sie AWS IoT Greengrass für Sie AWS-Konto in dieser Region zuordnen können.

#### Konfiguration der Greengrass-Servicerolle (Konsole)
<a name="configure-service-role-requirement-console"></a>

1. Prüfen Sie, ob die Greengrass-Servicerolle AWS IoT Greengrass für Sie AWS-Konto in dieser Region zugeordnet ist. Gehen Sie wie folgt vor:

   1. <a name="open-iot-console"></a>Navigieren Sie zur [AWS IoT -Konsole](https://console.aws.amazon.com/iot).

   1. Wählen Sie im Navigationsbereich **Settings** (Einstellungen).

   1. Suchen Sie im Abschnitt **Greengrass-Servicerolle** nach **Aktuelle Servicerolle**, um zu sehen, ob eine Greengrass-Servicerolle zugeordnet ist.

      Wenn Ihnen eine Greengrass-Servicerolle zugewiesen ist, erfüllen Sie diese Anforderung, um die IP-Detektorkomponente verwenden zu können. Fahren Sie mit [Konfigurieren Sie die AWS IoT Ding-Richtlinie](#configure-iot-policy-requirement) fort.

1. Wenn die Greengrass-Servicerolle AWS IoT Greengrass für Sie AWS-Konto in dieser Region nicht zugeordnet ist, erstellen Sie eine Greengrass-Servicerolle und ordnen Sie sie zu. Gehen Sie wie folgt vor:

   1. Navigieren Sie zur [IAM-Konsole](https://console.aws.amazon.com/iam).

   1. Wählen Sie **Roles**.

   1. Wählen Sie **Rolle erstellen** aus.

   1. Gehen Sie auf der Seite **Rolle erstellen** wie folgt vor:

      1. Wählen Sie unter **Vertrauenswürdiger Entitätstyp** die Option aus **AWS-Service**.

      1. **Wählen **Sie unter Anwendungsfall**, **Anwendungsfälle für andere AWS-Services die** Option **Greengrass und anschließend Greengrass** aus.** Diese Option gibt an, dass eine vertrauenswürdige Entität hinzugefügt AWS IoT Greengrass werden soll, die diese Rolle übernehmen kann.

      1. Wählen Sie **Weiter** aus.

      1. Wählen Sie unter **Berechtigungsrichtlinien** die aus, **AWSGreengrassResourceAccessRolePolicy**die der Rolle zugewiesen werden sollen.

      1. Wählen Sie **Weiter** aus.

      1. Geben Sie unter **Rollenname** einen Namen für die Rolle ein, z. B. **Greengrass\$1ServiceRole**.

      1. Wählen Sie **Rolle erstellen** aus.

   1. <a name="open-iot-console"></a>Navigieren Sie zur [AWS IoT -Konsole](https://console.aws.amazon.com/iot).

   1. Wählen Sie im Navigationsbereich **Settings** (Einstellungen).

   1. Wählen Sie im Abschnitt **Greengrass-Servicerolle die Option Rolle** **anhängen** aus.

   1. Wählen Sie im Modal **Update Greengrass Service Role** die IAM-Rolle aus, die Sie erstellt haben, und wählen Sie dann Rolle **anhängen** aus.

#### Konfigurieren Sie die Greengrass-Servicerolle ()AWS CLI
<a name="configure-service-role-requirement-cli"></a>

1. Prüfen Sie, ob die Greengrass-Servicerolle AWS IoT Greengrass für Sie AWS-Konto in dieser Region zugeordnet ist.

   ```
   aws greengrassv2 get-service-role-for-account
   ```

   Wenn die Greengrass-Servicerolle zugeordnet ist, gibt der Vorgang eine Antwort zurück, die Informationen über die Rolle enthält.

   Wenn Ihnen eine Greengrass-Servicerolle zugewiesen ist, erfüllen Sie diese Anforderung, um die IP-Detektorkomponente verwenden zu können. Fahren Sie mit [Konfigurieren Sie die AWS IoT Ding-Richtlinie](#configure-iot-policy-requirement) fort.

1. Wenn die Greengrass-Servicerolle AWS IoT Greengrass für Sie AWS-Konto in dieser Region nicht zugeordnet ist, erstellen Sie eine Greengrass-Servicerolle und ordnen Sie sie zu. Gehen Sie wie folgt vor:

   1. <a name="create-greengrass-service-role-step-create-role"></a>Erstellen Sie eine Rolle mit einer Vertrauensrichtlinie, die es Ihnen ermöglicht, die Rolle AWS IoT Greengrass zu übernehmen. In diesem Beispiel wird eine Rolle namens `Greengrass_ServiceRole` erstellt, aber Sie können einen anderen Namen verwenden. Wir empfehlen, dass Sie auch die Kontextschlüssel `aws:SourceArn` und die `aws:SourceAccount` globalen Bedingungsschlüssel in Ihre Vertrauensrichtlinie aufnehmen, um das Sicherheitsproblem „*Confused Deputy*“ zu vermeiden. Die Bedingungskontextschlüssel beschränken den Zugriff, sodass nur Anfragen zugelassen werden, die vom angegebenen Konto und Greengrass-Workspace stammen. Weitere Informationen zum Confused-Deputy-Problem finden Sie [Serviceübergreifende Confused-Deputy-Prävention](cross-service-confused-deputy-prevention.md).

------
#### [ Linux or Unix ]

      ```
      aws iam create-role --role-name Greengrass_ServiceRole --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
              "Service": "greengrass.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
              "ArnLike": {
                "aws:SourceArn": "arn:aws:greengrass:region:account-id:*"
              },
              "StringEquals": {
                "aws:SourceAccount": "account-id"
              }
            }
          }
        ]
      }'
      ```

------
#### [ Windows Command Prompt (CMD) ]

      ```
      aws iam create-role --role-name Greengrass_ServiceRole --assume-role-policy-document "{\\"Version\\":\\"2012-10-17		 	 	 \\",\\"Statement\\":[{\\"Effect\\":\\"Allow\\",\\"Principal\\":{\\"Service\\":\\"greengrass.amazonaws.com\\"},\\"Action\\":\\"sts:AssumeRole\\",\\"Condition\\":{\\"ArnLike\\":{\\"aws:SourceArn\\":\\"arn:aws:greengrass:region:account-id:*\\"},\\"StringEquals\\":{\\"aws:SourceAccount\\":\\"account-id\\"}}}]}"
      ```

------
#### [ PowerShell ]

      ```
      aws iam create-role --role-name Greengrass_ServiceRole --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
              "Service": "greengrass.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
              "ArnLike": {
                "aws:SourceArn": "arn:aws:greengrass:region:account-id:*"
              },
              "StringEquals": {
                "aws:SourceAccount": "account-id"
              }
            }
          }
        ]
      }'
      ```

------

   1. <a name="create-greengrass-service-role-step-copy-role-arn"></a>Kopieren Sie den Rollen-ARN aus den Rollenmetadaten in der Ausgabe. Sie verknüpfen die Servicerolle mithilfe des ARN mit Ihrem Konto.

   1. <a name="create-greengrass-service-role-step-attach-policy"></a>Fügen Sie der Rolle die `AWSGreengrassResourceAccessRolePolicy`-Richtlinie an.

      ```
      aws iam attach-role-policy --role-name Greengrass_ServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSGreengrassResourceAccessRolePolicy
      ```

   1. Verknüpfen Sie die Greengrass-Servicerolle mit AWS IoT Greengrass für Sie AWS-Konto. *role-arn*Ersetzen Sie es durch den ARN der Servicerolle.

      ```
      aws greengrassv2 associate-service-role-to-account --role-arn role-arn
      ```

      Der Vorgang gibt die folgende Antwort zurück, wenn er erfolgreich ist.

      ```
      {
        "associatedAt": "timestamp"
      }
      ```

### Konfigurieren Sie die AWS IoT Ding-Richtlinie
<a name="configure-iot-policy-requirement"></a>

Core-Geräte verwenden X.509-Gerätezertifikate, um Verbindungen zu zu autorisieren. AWS Sie fügen Gerätezertifikaten AWS IoT Richtlinien hinzu, um die Berechtigungen für ein Kerngerät zu definieren. Weitere Informationen erhalten Sie unter [AWS IoT Richtlinien für den Betrieb auf Datenebene](device-auth.md#iot-policies) und [Minimale AWS IoT Richtlinie zur Unterstützung von Client-Geräten](device-auth.md#client-device-support-minimal-iot-policy).

Um Client-Geräte mit einem Core-Gerät zu verbinden, muss die AWS IoT Richtlinie des Core-Geräts die folgenden Berechtigungen zulassen:<a name="core-device-iot-policy-client-device-permissions"></a>
+ <a name="core-device-iot-policy-client-device-permissions-putcertificateauthorities"></a>`greengrass:PutCertificateAuthorities`
+ <a name="core-device-iot-policy-client-device-permissions-verifyclientdeviceidentity"></a>`greengrass:VerifyClientDeviceIdentity`
+ <a name="core-device-iot-policy-client-device-permissions-verifyclientdeviceiotcertificateassociation"></a>`greengrass:VerifyClientDeviceIoTCertificateAssociation`
+ <a name="core-device-iot-policy-client-device-permissions-getconnectivityinfo"></a>`greengrass:GetConnectivityInfo`
+ <a name="core-device-iot-policy-client-device-permissions-updateconnectivityinfo"></a>`greengrass:UpdateConnectivityInfo`— (Optional) Diese Berechtigung ist erforderlich, um die [IP-Detektorkomponente](ip-detector-component.md) zu verwenden, die die Netzwerkverbindungsinformationen des Kerngeräts an den AWS IoT Greengrass Cloud-Dienst meldet.
+ <a name="core-device-iot-policy-client-device-permissions-shadows"></a>`iot:GetThingShadow``iot:UpdateThingShadow`, und `iot:DeleteThingShadow` — (Optional) Diese Berechtigungen sind erforderlich, um die [Shadow-Manager-Komponente](shadow-manager-component.md) zum Synchronisieren von Schatten auf Client-Geräten zu verwenden AWS IoT Core. Diese Funktion erfordert [Greengrass Nucleus](greengrass-nucleus-component.md) v2.6.0 oder höher, Shadow Manager v2.2.0 oder höher und [MQTT](mqtt-bridge-component.md) Bridge v2.2.0 oder höher.

In diesem Abschnitt überprüfen Sie die AWS IoT Richtlinien für Ihr Kerngerät und fügen alle erforderlichen Berechtigungen hinzu, die noch fehlen. Wenn Sie das [AWS IoT Greengrass Core-Softwareinstallationsprogramm zur Bereitstellung von Ressourcen](quick-installation.md) verwendet haben, verfügt Ihr Kerngerät über eine AWS IoT Richtlinie, die den Zugriff auf alle AWS IoT Greengrass Aktionen ermöglicht (`greengrass:*`). In diesem Fall müssen Sie die AWS IoT Richtlinie nur aktualisieren, wenn Sie die Shadow-Manager-Komponente zur Synchronisierung von Geräteschatten bereitstellen möchten AWS IoT Core. Andernfalls können Sie diesen Abschnitt überspringen.

#### Konfigurieren Sie die AWS IoT Ding-Richtlinie (Konsole)
<a name="configure-iot-policy-requirement-console"></a>

1. <a name="update-iot-policy-console-open-greengrass-console"></a>Wählen Sie im Navigationsmenü der [AWS IoT Greengrass Konsole](https://console.aws.amazon.com/greengrass) die Option **Core-Geräte** aus.

1. <a name="update-iot-policy-console-choose-core-device"></a>Wählen Sie auf der Seite **Core-Geräte** das zu aktualisierende Kerngerät aus.

1. <a name="update-iot-policy-console-choose-core-device-thing"></a>Wählen Sie auf der Seite mit den Details zum Kerngerät den Link zum **Ding** des Kerngeräts aus. Dieser Link öffnet die Seite mit den Ding-Details in der AWS IoT Konsole.

1. <a name="update-iot-policy-console-choose-thing-security"></a>Wählen Sie auf der Seite mit den Ding-Details die Option **Zertifikate** aus.

1. <a name="update-iot-policy-console-choose-thing-certificate"></a>Wählen Sie auf der Registerkarte **Zertifikate** das aktive Zertifikat der Sache aus.

1. <a name="update-iot-policy-console-choose-certificate-policies"></a>Wählen Sie auf der Seite mit den Zertifikatsdetails **die Option Richtlinien** aus.

1. <a name="update-iot-policy-console-choose-policy"></a>Wählen Sie auf der Registerkarte **Richtlinien** die AWS IoT Richtlinie aus, die Sie überprüfen und aktualisieren möchten. Sie können jeder Richtlinie, die mit dem aktiven Zertifikat des Kerngeräts verknüpft ist, die erforderlichen Berechtigungen hinzufügen.
**Anmerkung**  <a name="quick-installation-iot-policies-note"></a>
Wenn Sie das [AWS IoT Greengrass Core-Softwareinstallationsprogramm zur Bereitstellung von Ressourcen](quick-installation.md) verwendet haben, gibt es zwei AWS IoT Richtlinien. Wir empfehlen, dass Sie die genannte Richtlinie wählen **GreengrassV2IoTThingPolicy**, falls sie existiert. Kerngeräte, die Sie mit dem Schnellinstallationsprogramm erstellen, verwenden standardmäßig diesen Richtliniennamen. Wenn Sie dieser Richtlinie Berechtigungen hinzufügen, gewähren Sie diese Berechtigungen auch anderen Kerngeräten, die diese Richtlinie verwenden.

1. <a name="update-iot-policy-console-edit-policy"></a>Wählen Sie in der Richtlinienübersicht die Option **Aktive Version bearbeiten** aus.

1. Überprüfen Sie die Richtlinie auf die erforderlichen Berechtigungen und fügen Sie alle fehlenden erforderlichen Berechtigungen hinzu.<a name="core-device-iot-policy-client-device-permissions"></a>
   + <a name="core-device-iot-policy-client-device-permissions-putcertificateauthorities"></a>`greengrass:PutCertificateAuthorities`
   + <a name="core-device-iot-policy-client-device-permissions-verifyclientdeviceidentity"></a>`greengrass:VerifyClientDeviceIdentity`
   + <a name="core-device-iot-policy-client-device-permissions-verifyclientdeviceiotcertificateassociation"></a>`greengrass:VerifyClientDeviceIoTCertificateAssociation`
   + <a name="core-device-iot-policy-client-device-permissions-getconnectivityinfo"></a>`greengrass:GetConnectivityInfo`
   + <a name="core-device-iot-policy-client-device-permissions-updateconnectivityinfo"></a>`greengrass:UpdateConnectivityInfo`— (Optional) Diese Berechtigung ist erforderlich, um die [IP-Detektorkomponente](ip-detector-component.md) zu verwenden, die die Netzwerkverbindungsinformationen des Kerngeräts an den AWS IoT Greengrass Cloud-Dienst meldet.
   + <a name="core-device-iot-policy-client-device-permissions-shadows"></a>`iot:GetThingShadow``iot:UpdateThingShadow`, und `iot:DeleteThingShadow` — (Optional) Diese Berechtigungen sind erforderlich, um die [Shadow-Manager-Komponente](shadow-manager-component.md) zum Synchronisieren von Schatten auf Client-Geräten zu verwenden AWS IoT Core. Diese Funktion erfordert [Greengrass Nucleus](greengrass-nucleus-component.md) v2.6.0 oder höher, Shadow Manager v2.2.0 oder höher und [MQTT](mqtt-bridge-component.md) Bridge v2.2.0 oder höher.

1. (Optional) Damit das Core-Gerät Schatten mit synchronisieren kann, fügen Sie der Richtlinie die folgende Anweisung AWS IoT Core hinzu. Wenn Sie mit Shadows auf Client-Geräten interagieren, diese aber nicht synchronisieren möchten AWS IoT Core, überspringen Sie diesen Schritt. Ersetzen Sie *region* und *account-id* durch die Region, die Sie verwenden, und Ihre AWS-Konto Nummer.
   + Diese Beispielanweisung ermöglicht den Zugriff auf die Geräteschatten aller Dinge. Um den bewährten Sicherheitspraktiken zu folgen, können Sie den Zugriff nur auf das Kerngerät und die Client-Geräte beschränken, die Sie mit dem Kerngerät verbinden. Weitere Informationen finden Sie unter [Minimale AWS IoT Richtlinie zur Unterstützung von Client-Geräten](device-auth.md#client-device-support-minimal-iot-policy).

   ```
   {
     "Effect": "Allow",
     "Action": [
       "iot:GetThingShadow",
       "iot:UpdateThingShadow",
       "iot:DeleteThingShadow"
     ],
     "Resource": [
       "arn:aws:iot:region:account-id:thing/*"
     ]
   }
   ```

   Nachdem Sie diese Aussage hinzugefügt haben, könnte das Richtliniendokument dem folgenden Beispiel ähneln.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "iot:Connect",
           "iot:Publish",
           "iot:Subscribe",
           "iot:Receive",
           "greengrass:*"
         ],
         "Resource": "*"
       },
       {
         "Effect": "Allow",
         "Action": [
           "iot:GetThingShadow",
           "iot:UpdateThingShadow",
           "iot:DeleteThingShadow"
         ],
         "Resource": [
           "arn:aws:iot:us-east-1:123456789012:thing/*"
         ]
       }
     ]
   }
   ```

------

1. <a name="update-iot-policy-console-set-as-active-version"></a>Um eine neue Richtlinienversion als aktive Version festzulegen, wählen Sie unter **Status der Richtlinienversion** die Option **Die bearbeitete Version als aktive Version für diese Richtlinie festlegen** aus.

1. <a name="update-iot-policy-console-save-policy"></a>Wählen Sie **Als neue Version speichern** aus.

#### Konfigurieren Sie die AWS IoT Ding-Richtlinie (AWS CLI)
<a name="configure-iot-policy-requirement-cli"></a>

1. <a name="update-iot-policy-cli-list-thing-principals"></a>Listet die Principals für das AWS IoT Ding des Kerngeräts auf. Bei den Ding-Prinzipalen kann es sich um X.509-Gerätezertifikate oder andere Identifikationen handeln. Führen Sie den folgenden Befehl aus und *MyGreengrassCore* ersetzen Sie ihn durch den Namen des Kerngeräts.

   ```
   aws iot list-thing-principals --thing-name MyGreengrassCore
   ```

   Der Vorgang gibt eine Antwort zurück, in der die Ding-Prinzipale des Kerngeräts aufgeführt sind.

   ```
   {
       "principals": [
           "arn:aws:iot:us-west-2:123456789012:cert/certificateId"
       ]
   }
   ```

1. <a name="update-iot-policy-cli-identify-active-certificate"></a>Identifizieren Sie das aktive Zertifikat des Kerngeräts. Führen Sie den folgenden Befehl aus und *certificateId* ersetzen Sie ihn durch die ID jedes Zertifikats aus dem vorherigen Schritt, bis Sie das aktive Zertifikat gefunden haben. Die Zertifikat-ID ist die hexadezimale Zeichenfolge am Ende des Zertifikat-ARN. Das `--query` Argument gibt an, dass nur der Status des Zertifikats ausgegeben werden soll.

   ```
   aws iot describe-certificate --certificate-id certificateId --query 'certificateDescription.status'
   ```

   Die Operation gibt den Status des Zertifikats als Zeichenfolge zurück. Wenn das Zertifikat beispielsweise aktiv ist, wird bei diesem Vorgang eine Ausgabe ausgegeben`"ACTIVE"`.

1. <a name="update-iot-policy-cli-list-certificate-policies"></a>Listet die AWS IoT Richtlinien auf, die mit dem Zertifikat verknüpft sind. Führen Sie den folgenden Befehl aus und ersetzen Sie den Zertifikat-ARN durch den ARN des Zertifikats.

   ```
   aws iot list-principal-policies --principal arn:aws:iot:us-west-2:123456789012:cert/certificateId
   ```

   Der Vorgang gibt eine Antwort zurück, in der die AWS IoT Richtlinien aufgeführt sind, die an das Zertifikat angehängt sind.

   ```
   {
       "policies": [
           {
               "policyName": "GreengrassTESCertificatePolicyMyGreengrassCoreTokenExchangeRoleAlias",
               "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassTESCertificatePolicyMyGreengrassCoreTokenExchangeRoleAlias"
           },
           {
               "policyName": "GreengrassV2IoTThingPolicy",
               "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy"
           }
       ]
   }
   ```

1. <a name="update-iot-policy-cli-choose-policy"></a>Wählen Sie die Richtlinie aus, die Sie anzeigen und aktualisieren möchten.
**Anmerkung**  <a name="quick-installation-iot-policies-note"></a>
Wenn Sie das [AWS IoT Greengrass Core-Softwareinstallationsprogramm zur Bereitstellung von Ressourcen](quick-installation.md) verwendet haben, gelten zwei AWS IoT Richtlinien. Wir empfehlen, dass Sie die genannte Richtlinie wählen **GreengrassV2IoTThingPolicy**, falls sie existiert. Kerngeräte, die Sie mit dem Schnellinstallationsprogramm erstellen, verwenden standardmäßig diesen Richtliniennamen. Wenn Sie dieser Richtlinie Berechtigungen hinzufügen, gewähren Sie diese Berechtigungen auch anderen Kerngeräten, die diese Richtlinie verwenden.

1. <a name="update-iot-policy-cli-get-policy-document"></a>Holen Sie sich das Dokument der Richtlinie. Führen Sie den folgenden Befehl aus und *GreengrassV2IoTThingPolicy* ersetzen Sie ihn durch den Namen der Richtlinie.

   ```
   aws iot get-policy --policy-name GreengrassV2IoTThingPolicy
   ```

   Der Vorgang gibt eine Antwort zurück, die das Dokument der Richtlinie und andere Informationen zur Richtlinie enthält. Das Richtliniendokument ist ein JSON-Objekt, das als Zeichenfolge serialisiert ist. 

   ```
   {
       "policyName": "GreengrassV2IoTThingPolicy",
       "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy",
       "policyDocument": "{\
     \\"Version\\": \\"2012-10-17		 	 	 \\",\
     \\"Statement\\": [\
       {\
         \\"Effect\\": \\"Allow\\",\
         \\"Action\\": [\
                   \\"iot:Connect\\",\
                   \\"iot:Publish\\",\
                   \\"iot:Subscribe\\",\
                   \\"iot:Receive\\",\
                   \\"greengrass:*\\"\
   ],\
         \\"Resource\\": \\"*\\"\
       }\
     ]\
   }",
       "defaultVersionId": "1",
       "creationDate": "2021-02-05T16:03:14.098000-08:00",
       "lastModifiedDate": "2021-02-05T16:03:14.098000-08:00",
       "generationId": "f19144b798534f52c619d44f771a354f1b957dfa2b850625d9f1d0fde530e75f"
   }
   ```

1. <a name="update-iot-policy-cli-create-policy-document-file"></a>Verwenden Sie einen Online-Konverter oder ein anderes Tool, um die Zeichenfolge des Richtliniendokuments in ein JSON-Objekt zu konvertieren, und speichern Sie sie dann in einer Datei mit dem Namen`iot-policy.json`.

   Wenn Sie beispielsweise das [jq-Tool](https://stedolan.github.io/jq/) installiert haben, können Sie den folgenden Befehl ausführen, um das Richtliniendokument abzurufen, es in ein JSON-Objekt zu konvertieren und das Richtliniendokument als JSON-Objekt zu speichern.

   ```
   aws iot get-policy --policy-name GreengrassV2IoTThingPolicy --query 'policyDocument' | jq fromjson >> iot-policy.json
   ```

1. Überprüfen Sie die Richtlinie auf die erforderlichen Berechtigungen und fügen Sie alle fehlenden erforderlichen Berechtigungen hinzu.

   <a name="nano-command-intro-existing-file"></a>Auf einem Linux-basierten System können Sie beispielsweise den folgenden Befehl ausführen, um die Datei mit GNU nano zu öffnen.

   ```
   nano iot-policy.json
   ```<a name="core-device-iot-policy-client-device-permissions"></a>
   + <a name="core-device-iot-policy-client-device-permissions-putcertificateauthorities"></a>`greengrass:PutCertificateAuthorities`
   + <a name="core-device-iot-policy-client-device-permissions-verifyclientdeviceidentity"></a>`greengrass:VerifyClientDeviceIdentity`
   + <a name="core-device-iot-policy-client-device-permissions-verifyclientdeviceiotcertificateassociation"></a>`greengrass:VerifyClientDeviceIoTCertificateAssociation`
   + <a name="core-device-iot-policy-client-device-permissions-getconnectivityinfo"></a>`greengrass:GetConnectivityInfo`
   + <a name="core-device-iot-policy-client-device-permissions-updateconnectivityinfo"></a>`greengrass:UpdateConnectivityInfo`— (Optional) Diese Berechtigung ist erforderlich, um die [IP-Detektorkomponente](ip-detector-component.md) zu verwenden, die die Netzwerkverbindungsinformationen des Kerngeräts an den AWS IoT Greengrass Cloud-Dienst meldet.
   + <a name="core-device-iot-policy-client-device-permissions-shadows"></a>`iot:GetThingShadow``iot:UpdateThingShadow`, und `iot:DeleteThingShadow` — (Optional) Diese Berechtigungen sind erforderlich, um die [Shadow-Manager-Komponente](shadow-manager-component.md) zum Synchronisieren von Schatten auf Client-Geräten zu verwenden AWS IoT Core. Diese Funktion erfordert [Greengrass Nucleus](greengrass-nucleus-component.md) v2.6.0 oder höher, Shadow Manager v2.2.0 oder höher und [MQTT](mqtt-bridge-component.md) Bridge v2.2.0 oder höher.

1. <a name="update-iot-policy-cli-create-policy-version"></a>Speichern Sie die Änderungen als neue Version der Richtlinie. Führen Sie den folgenden Befehl aus und *GreengrassV2IoTThingPolicy* ersetzen Sie ihn durch den Namen der Richtlinie.

   ```
   aws iot create-policy-version --policy-name GreengrassV2IoTThingPolicy --policy-document file://iot-policy.json --set-as-default
   ```

   Der Vorgang gibt eine Antwort zurück, die dem folgenden Beispiel ähnelt, wenn er erfolgreich ist.

   ```
   {
       "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy",
       "policyDocument": "{\
     \\"Version\\": \\"2012-10-17		 	 	 \\",\
     \\"Statement\\": [\
       {\
         \\"Effect\\": \\"Allow\\",\
         \\"Action\\": [\
   \\t\\t\\"iot:Connect\\",\
   \\t\\t\\"iot:Publish\\",\
   \\t\\t\\"iot:Subscribe\\",\
   \\t\\t\\"iot:Receive\\",\
   \\t\\t\\"greengrass:*\\"\
         ],\
         \\"Resource\\": \\"*\\"\
       }\
     ]\
   }",
       "policyVersionId": "2",
       "isDefaultVersion": true
   }
   ```

## Greengrass-Komponenten für die Unterstützung von Client-Geräten
<a name="cloud-discovery-components"></a>

**Wichtig**  <a name="client-device-support-nucleus-requirement"></a>
Auf dem Kerngerät muss [Greengrass Nucleus](greengrass-nucleus-component.md) v2.2.0 oder höher ausgeführt werden, um Client-Geräte zu unterstützen.

Damit Client-Geräte eine Verbindung zu einem Core-Gerät herstellen und mit diesem kommunizieren können, stellen Sie die folgenden Greengrass-Komponenten auf dem Core-Gerät bereit:
+ <a name="client-device-component-overview-client-device-auth"></a>[Authentifizierung auf Client-Geräten](client-device-auth-component.md) (`aws.greengrass.clientdevices.Auth`)

  Stellen Sie die Authentifizierungskomponente für Client-Geräte bereit, um Client-Geräte zu authentifizieren und Aktionen auf Client-Geräten zu autorisieren. Mit dieser Komponente können Ihre Geräte eine AWS IoT Verbindung zu einem Kerngerät herstellen.

  Diese Komponente erfordert eine gewisse Konfiguration, um sie verwenden zu können. Sie müssen Gruppen von Client-Geräten und die Operationen angeben, zu deren Ausführung jede Gruppe berechtigt ist, z. B. Verbindungen herzustellen und über MQTT zu kommunizieren. Weitere Informationen finden Sie unter Konfiguration der [Authentifizierungskomponente für Client-Geräte](client-device-auth-component.md#client-device-auth-component-configuration).
+ <a name="client-device-component-overview-mqtt-broker-moquette"></a>[MQTT 3.1.1-Broker (Moquette)](mqtt-broker-moquette-component.md) (`aws.greengrass.clientdevices.mqtt.Moquette`)

  Stellen Sie die Moquette MQTT-Broker-Komponente bereit, um einen einfachen MQTT-Broker auszuführen. Der Moquette MQTT-Broker ist mit MQTT 3.1.1 kompatibel und bietet lokale Unterstützung für QoS 0, QoS 1, QoS 2, gespeicherte Nachrichten, Lastwill-Nachrichten und persistente Abonnements.

  Sie müssen diese Komponente nicht konfigurieren, um sie verwenden zu können. Sie können jedoch den Port konfigurieren, an dem diese Komponente den MQTT-Broker betreibt. Standardmäßig verwendet es Port 8883.
+ <a name="client-device-component-overview-mqtt-broker-emqx"></a>[MQTT 5-Broker (EMAX)](mqtt-broker-emqx-component.md) (`aws.greengrass.clientdevices.mqtt.EMQX`)
**Anmerkung**  
Um den EMQX MQTT 5-Broker zu verwenden, müssen Sie [Greengrass Nucleus](greengrass-nucleus-component.md) v2.6.0 oder höher und Client Device Auth v2.2.0 oder höher verwenden.

  Stellen Sie die EMQX MQTT-Broker-Komponente bereit, um die Funktionen von MQTT 5.0 bei der Kommunikation zwischen Client-Geräten und dem Core-Gerät zu verwenden. Der EMQX MQTT-Broker ist mit MQTT 5.0 kompatibel und unterstützt Ablaufintervalle für Sitzungen und Nachrichten, Benutzereigenschaften, gemeinsame Abonnements, Themenaliase und mehr.

  Sie müssen diese Komponente nicht konfigurieren, um sie verwenden zu können. Sie können jedoch den Port konfigurieren, an dem diese Komponente den MQTT-Broker betreibt. Standardmäßig verwendet es Port 8883.
+ <a name="client-device-component-overview-mqtt-bridge"></a>[MQTT-Brücke](mqtt-bridge-component.md) (`aws.greengrass.clientdevices.mqtt.Bridge`)

  (Optional) Stellen Sie die MQTT-Bridge-Komponente bereit, um Nachrichten zwischen Client-Geräten (lokales MQTT), lokales Publish/Subscribe und MQTT weiterzuleiten. AWS IoT Core Konfigurieren Sie diese Komponente, um Client-Geräte mit Client-Geräten von Greengrass-Komponenten zu synchronisieren AWS IoT Core und mit diesen zu interagieren.

  Für die Verwendung dieser Komponente ist eine Konfiguration erforderlich. Sie müssen die Themenzuordnungen angeben, an die diese Komponente Nachrichten weiterleitet. Weitere Informationen finden Sie unter Konfiguration der [MQTT-Bridge-Komponente](mqtt-bridge-component.md#mqtt-bridge-component-configuration).
+ <a name="client-device-component-overview-ip-detector"></a>[IP-Detektor](ip-detector-component.md) (`aws.greengrass.clientdevices.IPDetector`)

  (Optional) Stellen Sie die IP-Detektorkomponente bereit, um die MQTT-Broker-Endpunkte des Kerngeräts automatisch an den AWS IoT Greengrass Cloud-Dienst zu melden. Sie können diese Komponente nicht verwenden, wenn Sie eine komplexe Netzwerkkonfiguration haben, z. B. eine, bei der ein Router den MQTT-Broker-Port an das Kerngerät weiterleitet.

  Sie müssen diese Komponente nicht konfigurieren, um sie zu verwenden.
+ <a name="client-device-component-overview-shadow-manager"></a>[Schattenmanager](shadow-manager-component.md) (`aws.greengrass.ShadowManager`)
**Anmerkung**  
Um Client-Geräteschatten zu verwalten, müssen Sie [Greengrass Nucleus](greengrass-nucleus-component.md) v2.6.0 oder höher, Shadow Manager v2.2.0 oder höher und [MQTT](mqtt-bridge-component.md) Bridge v2.2.0 oder höher verwenden.

  (Optional) Stellen Sie die Shadow Manager-Komponente bereit, um Client-Geräteschatten auf dem Kerngerät zu verwalten. Greengrass-Komponenten können Client-Geräteschatten abrufen, aktualisieren und löschen, um mit Client-Geräten zu interagieren. Sie können die Shadow-Manager-Komponente auch so konfigurieren, dass die Schatten von Client-Geräten mit dem AWS IoT Core Cloud-Dienst synchronisiert werden.

  Um diese Komponente mit Client-Geräteshadows zu verwenden, müssen Sie die MQTT-Bridge-Komponente so konfigurieren, dass sie Nachrichten zwischen Client-Geräten und dem Shadow Manager weiterleitet, der lokales Publizieren/Abonnieren verwendet. Andernfalls ist für die Verwendung dieser Komponente keine Konfiguration erforderlich, für die Synchronisierung von Geräteschatten jedoch eine Konfiguration.

**Anmerkung**  <a name="note-deploy-one-mqtt-broker"></a>
Wir empfehlen, nur eine MQTT-Broker-Komponente bereitzustellen. Die Komponenten [MQTT-Bridge](mqtt-bridge-component.md) und [IP-Detektor](ip-detector-component.md) funktionieren jeweils nur mit einer MQTT-Broker-Komponente. Wenn Sie mehrere MQTT-Broker-Komponenten bereitstellen, müssen Sie sie so konfigurieren, dass sie unterschiedliche Ports verwenden.

## Konfigurieren Sie Cloud Discovery (Konsole)
<a name="configure-cloud-discovery-console"></a>

Sie können die AWS IoT Greengrass Konsole verwenden, um Client-Geräte zuzuordnen, zentrale Geräteendpunkte zu verwalten und Komponenten bereitzustellen, um die Unterstützung von Client-Geräten zu aktivieren. Weitere Informationen finden Sie unter [Schritt 2: Aktivieren Sie die Unterstützung für Client-Geräte](client-devices-tutorial.md#enable-client-device-support).

## Cloud Discovery konfigurieren ()AWS CLI
<a name="configure-cloud-discovery-cli"></a>

Sie können das AWS Command Line Interface (AWS CLI) verwenden, um Client-Geräte zuzuordnen, zentrale Geräteendpunkte zu verwalten und Komponenten bereitzustellen, um die Unterstützung von Client-Geräten zu aktivieren. Weitere Informationen finden Sie hier:
+ [Zuordnungen von Client-Geräten verwalten ()AWS CLI](associate-client-devices.md#manage-client-device-associations-cli)
+ [Endpunkte von Kerngeräten verwalten](manage-core-device-endpoints.md)
+ [AWS-bereitgestellte Client-Gerätekomponenten](client-device-components.md)
+ [Erstellen von Bereitstellungen](create-deployments.md)

# Client-Geräte zuordnen
<a name="associate-client-devices"></a>

Um Cloud Discovery zu verwenden, ordnen Sie Client-Geräte einem Core-Gerät zu, sodass sie das Core-Gerät erkennen können. Anschließend können sie die [Greengrass Discovery API](greengrass-discover-api.md) verwenden, um Verbindungsinformationen und Zertifikate für ihre zugehörigen Kerngeräte abzurufen.

Ebenso können Sie Client-Geräte von einem Kerngerät trennen, um zu verhindern, dass sie das Kerngerät erkennen.

**Topics**
+ [Zuordnungen von Client-Geräten verwalten (Konsole)](#manage-client-device-associations-console)
+ [Zuordnungen von Client-Geräten verwalten ()AWS CLI](#manage-client-device-associations-cli)
+ [Client-Gerätezuordnungen (API) verwalten](#manage-client-device-associations-api)

## Zuordnungen von Client-Geräten verwalten (Konsole)
<a name="manage-client-device-associations-console"></a>

Sie können die AWS IoT Greengrass Konsole verwenden, um Client-Gerätezuordnungen anzuzeigen, hinzuzufügen und zu löschen.

**So zeigen Sie Client-Gerätezuordnungen für ein Kerngerät (Konsole) an**

1. <a name="navigate-greengrass-console"></a>Navigieren Sie zur [AWS IoT Greengrass -Konsole](https://console.aws.amazon.com/greengrass).

1. Wählen Sie **Core-Geräte** aus.

1. Wählen Sie das zu verwaltende Kerngerät aus.

1. Wählen Sie auf der Detailseite des Kerngeräts die Registerkarte **Client-Geräte** aus.

1. Im Abschnitt **Zugeordnete Client-Geräte** können Sie sehen, welche Client-Geräte (AWS IoT Dinge) mit dem Core-Gerät verknüpft sind.

**So ordnen Sie Client-Geräte einem Core-Gerät (Konsole) zu**

1. <a name="navigate-greengrass-console"></a>Navigieren Sie zur [AWS IoT Greengrass -Konsole](https://console.aws.amazon.com/greengrass).

1. Wählen Sie **Core-Geräte** aus.

1. Wählen Sie das zu verwaltende Kerngerät aus.

1. Wählen Sie auf der Detailseite des Kerngeräts die Registerkarte **Client-Geräte** aus.

1. Wählen Sie im Abschnitt **Zugeordnete Client-Geräte** die Option **Client-Geräte zuordnen** aus.

1. Gehen **Sie im Modalmodus Client-Geräte mit Kerngerät verknüpfen** für jedes zu verknüpfende Client-Gerät wie folgt vor:

   1. Geben Sie den Namen des Objekts AWS IoT ein, das als Client-Gerät verknüpft werden soll.

   1. Wählen Sie **Hinzufügen** aus.

1. Wählen Sie **Associate** aus.

   Die Client-Geräte, die Sie verknüpft haben, können jetzt die Greengrass Discovery API verwenden, um dieses Kerngerät zu erkennen.

**Um Client-Geräte von einem Kerngerät (Konsole) zu trennen**

1. <a name="navigate-greengrass-console"></a>Navigieren Sie zur [AWS IoT Greengrass -Konsole](https://console.aws.amazon.com/greengrass).

1. Wählen Sie **Core-Geräte** aus.

1. Wählen Sie das zu verwaltende Kerngerät aus.

1. Wählen Sie auf der Detailseite des Kerngeräts die Registerkarte **Client-Geräte** aus.

1. Wählen Sie im Abschnitt **Zugeordnete Client-Geräte** jedes Client-Gerät aus, dessen Zuordnung aufgehoben werden soll.

1. Wählen Sie **Disassociate (Zuordnung aufheben)** aus.

1. Wählen Sie im Bestätigungsmodus die Option **Trennen** aus.

   Die Client-Geräte, deren Verbindung Sie getrennt haben, können die Greengrass Discovery API nicht mehr verwenden, um dieses Kerngerät zu erkennen.

## Zuordnungen von Client-Geräten verwalten ()AWS CLI
<a name="manage-client-device-associations-cli"></a>

Sie können das AWS Command Line Interface (AWS CLI) verwenden, um Client-Gerätezuordnungen für ein Kerngerät zu verwalten.

**Um Client-Gerätezuordnungen für ein Kerngerät anzuzeigen (AWS CLI)**
+ Verwenden Sie den folgenden Befehl: [list-client-devices-associated- with-core-device](https://docs.aws.amazon.com/cli/latest/reference/greengrassv2/list-client-devices-associated-with-core-device.html).

**Um Client-Geräte einem Kerngerät zuzuordnen (AWS CLI)**
+ Verwenden Sie den folgenden Befehl: [batch-associate-client-device- with-core-device](https://docs.aws.amazon.com/cli/latest/reference/greengrassv2/batch-associate-client-device-with-core-device.html).

**Um Client-Geräte von einem Kerngerät zu trennen ()AWS CLI**
+ Verwenden Sie den folgenden Befehl: [batch-disassociate-client-device- from-core-device](https://docs.aws.amazon.com/cli/latest/reference/greengrassv2/batch-disassociate-client-device-from-core-device.html).

## Client-Gerätezuordnungen (API) verwalten
<a name="manage-client-device-associations-api"></a>

Sie können die AWS API verwenden, um Client-Gerätezuordnungen für ein Kerngerät zu verwalten.

**Um Client-Gerätezuordnungen für ein Kerngerät (AWS API) anzuzeigen**
+ Verwenden Sie den folgenden Vorgang: [ListClientDevicesAssociatedWithCoreDevice](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_ListClientDevicesAssociatedWithCoreDevice.html).

**Um Client-Geräte einem Kerngerät (AWS API) zuzuordnen**
+ Verwenden Sie den folgenden Vorgang: [BatchAssociateClientDeviceWithCoreDevice](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_BatchAssociateClientDeviceWithCoreDevice.html).

**Um Client-Geräte von einem Kerngerät (AWS API) zu trennen**
+ Verwenden Sie den folgenden Vorgang: [BatchDisassociateClientDeviceFromCoreDevice](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_BatchDisassociateClientDeviceFromCoreDevice.html).

# Authentifizierung von Clients im Offlinemodus
<a name="offline-authentication"></a>

Mit der *Offline-Authentifizierung* können Sie Ihr AWS IoT Greengrass Core-Gerät so konfigurieren, dass Client-Geräte eine Verbindung zu einem Core-Gerät herstellen können, auch wenn das Core-Gerät nicht mit der Cloud verbunden ist. Wenn Sie die Offline-Authentifizierung verwenden, können Ihre Greengrass-Geräte weiterhin in einer teilweise Offline-Umgebung arbeiten.

Um die Offline-Authentifizierung für ein Client-Gerät mit einer Verbindung zur Cloud zu verwenden, benötigen Sie Folgendes:
+ Ein AWS IoT Greengrass Core-Gerät, auf dem die [Authentifizierung auf Client-Geräten](client-device-auth-component.md) Komponente bereitgestellt ist. Sie müssen Version 2.3.0 oder höher für die Offline-Authentifizierung verwenden.
+ Eine Cloud-Verbindung für das Kerngerät während der ersten Verbindung der Client-Geräte.

## Speichern von Kundenanmeldedaten
<a name="offline-auth-store-credentials"></a>

Wenn ein Client-Gerät zum ersten Mal eine Verbindung zu einem Core-Gerät herstellt, ruft das Core-Gerät den AWS IoT Greengrass Dienst auf. Wenn Greengrass aufgerufen wird, validiert es die Registrierung des Client-Geräts als eine AWS IoT Sache. Es bestätigt auch, dass das Gerät über ein gültiges Zertifikat verfügt. Das Kerngerät speichert diese Informationen dann lokal.

Wenn das Gerät das nächste Mal eine Verbindung herstellt, versucht das Greengrass-Core-Gerät, das Client-Gerät mit dem AWS IoT Greengrass Dienst zu validieren. Wenn keine Verbindung hergestellt werden kann AWS IoT Greengrass, verwendet das Kerngerät seine lokal gespeicherten Geräteinformationen, um das Client-Gerät zu validieren.

Sie können die Dauer konfigurieren, für die das Greengrass-Core-Gerät Anmeldeinformationen speichert. [Sie können das Timeout von einer Minute bis 2.147.483.647 Minuten festlegen, indem Sie die `clientDeviceTrustDurationMinutes` Konfigurationsoption in der Konfiguration der Authentifizierungskomponente für das Client-Gerät festlegen.](https://docs.aws.amazon.com//greengrass/v2/developerguide/client-device-auth-component.html#client-device-auth-component-configuration) Die Standardeinstellung ist eine Minute, wodurch die Offline-Authentifizierung effektiv ausgeschaltet wird. Wenn Sie dieses Timeout festlegen, empfehlen wir Ihnen, Ihre Sicherheitsanforderungen zu berücksichtigen. Sie sollten auch berücksichtigen, wie lange Sie erwarten, dass die Kerngeräte laufen, wenn sie nicht mit der Cloud verbunden sind.

Das Kerngerät aktualisiert seinen Anmeldeinformationsspeicher dreimal:

1. Wenn ein Gerät zum ersten Mal eine Verbindung zum Kerngerät herstellt.

1. Wenn das Kerngerät mit der Cloud verbunden ist, wenn ein Client-Gerät erneut eine Verbindung zum Kerngerät herstellt.

1. Wenn das Kerngerät mit der Cloud verbunden ist, einmal täglich, um den gesamten Anmeldeinformationsspeicher zu aktualisieren.

Wenn das Greengrass-Core-Gerät seinen Anmeldeinformationsspeicher aktualisiert, verwendet es den Vorgang. [ ListClientDevicesAssociatedWithCoreDevice](https://docs.aws.amazon.com//greengrass/v2/APIReference/API_ListClientDevicesAssociatedWithCoreDevice.html) Greengrass aktualisiert nur die Geräte, die durch diesen Vorgang zurückgegeben wurden. Informationen zum Zuordnen eines Client-Geräts zu einem Core-Gerät finden Sie unter. [Client-Geräte zuordnen](associate-client-devices.md)

Um den `ListClientDevicesAssociatedWithCoreDevice` Vorgang verwenden zu können, müssen Sie der AWS Identity and Access Management (IAM-) Rolle, die dem ausgeführten Vorgang zugeordnet ist AWS-Konto , die Berechtigung für den Vorgang hinzufügen. AWS IoT Greengrass Weitere Informationen finden Sie unter [Autorisieren Sie Kerngeräte für die Interaktion mit Diensten AWS](device-service-role.md).

# Endpunkte von Kerngeräten verwalten
<a name="manage-core-device-endpoints"></a>

Wenn Sie Cloud Discovery verwenden, speichern Sie MQTT-Broker-Endpunkte für Kerngeräte im Cloud-Dienst. AWS IoT Greengrass Client-Geräte stellen eine Verbindung her AWS IoT Greengrass , um diese Endpunkte und andere Informationen für ihre zugehörigen Kerngeräte abzurufen.

Für jedes Kerngerät können Sie Endpunkte automatisch oder manuell verwalten.
+ **Automatische Verwaltung von Endpunkten mit dem IP-Detektor**

  Sie können die [IP-Detektorkomponente](ip-detector-component.md) einsetzen, um die Endpunkte der Kerngeräte automatisch für Sie zu verwalten, wenn Sie über eine nicht komplexe Netzwerkkonfiguration verfügen, z. B. wenn sich die Client-Geräte im selben Netzwerk wie das Kerngerät befinden. Sie können die IP-Detektorkomponente nicht verwenden, wenn sich das Kerngerät beispielsweise hinter einem Router befindet, der den MQTT-Broker-Port an das Kerngerät weiterleitet.

  Die IP-Detektorkomponente ist auch nützlich, wenn Sie sie in Dinggruppen bereitstellen, da sie die Endpunkte für alle Kerngeräte in der Dinggruppe verwaltet. Weitere Informationen finden Sie unter [Verwenden Sie den IP-Detektor, um Endpunkte automatisch zu verwalten](#use-ip-detector).
+ **Manuelles Verwalten von Endpunkten**

  Wenn Sie die IP-Detektorkomponente nicht verwenden können, müssen Sie die Endpunkte der Kerngeräte manuell verwalten. Sie können diese Endpunkte mit der Konsole oder der API aktualisieren. Weitere Informationen finden Sie unter [Manuelles Verwalten von Endpunkten](#manually-manage-endpoints).

**Topics**
+ [Verwenden Sie den IP-Detektor, um Endpunkte automatisch zu verwalten](#use-ip-detector)
+ [Manuelles Verwalten von Endpunkten](#manually-manage-endpoints)

## Verwenden Sie den IP-Detektor, um Endpunkte automatisch zu verwalten
<a name="use-ip-detector"></a>

Wenn Sie über ein einfaches Netzwerk-Setup verfügen, z. B. wenn sich die Client-Geräte im selben Netzwerk wie das Kerngerät befinden, können Sie die [IP-Detektorkomponente](ip-detector-component.md) einsetzen, um Folgendes zu tun:
+ Überwachen Sie die lokalen Netzwerkverbindungsinformationen des Greengrass Core-Geräts. Zu diesen Informationen gehören die Netzwerkendpunkte des Kerngeräts und der Port, an dem der MQTT-Broker betrieben wird.
+ Melden Sie die Konnektivitätsinformationen des Kerngeräts an den AWS IoT Greengrass Cloud-Dienst.

Die IP-Detektorkomponente überschreibt Endpunkte, die Sie manuell festlegen.

**Wichtig**  
Die AWS IoT Richtlinie des Kerngeräts muss die `greengrass:UpdateConnectivityInfo` Erlaubnis zur Verwendung der IP-Detektorkomponente zulassen. Weitere Informationen erhalten Sie unter [AWS IoT Richtlinien für den Betrieb auf Datenebene](device-auth.md#iot-policies) und [Konfigurieren Sie die AWS IoT Ding-Richtlinie](connect-client-devices.md#configure-iot-policy-requirement).

Sie können einen der folgenden Schritte ausführen, um die IP-Detektorkomponente bereitzustellen:
+ Verwenden **Sie die Seite Discovery konfigurieren** in der Konsole. Weitere Informationen finden Sie unter [Konfigurieren Sie Cloud Discovery (Konsole)](connect-client-devices.md#configure-cloud-discovery-console).
+ Erstellen und überarbeiten Sie Bereitstellungen, um den IP-Detektor einzubeziehen. Sie können die Konsole oder die AWS API verwenden AWS CLI, um Bereitstellungen zu verwalten. Weitere Informationen finden Sie unter [Erstellen von Bereitstellungen](create-deployments.md).

### Stellen Sie die IP-Detektorkomponente (Konsole) bereit
<a name="deploy-ip-detector-console"></a>

1. Wählen Sie im Navigationsmenü der [AWS IoT Greengrass Konsole](https://console.aws.amazon.com/greengrass) die Option **Komponenten** aus.

1. Wählen Sie auf der Seite **Komponenten** die Registerkarte **Öffentliche Komponenten** und wählen Sie dann **aws.greengrass.clientdevices.IPDetector**.

1. Wählen Sie auf der **aws.greengrass.clientdevices.IPDetector** Seite **Bereitstellen** aus.

1. <a name="deploy-component-choose-deployment-step"></a>Wählen **Sie unter Zur Bereitstellung hinzufügen** eine vorhandene Bereitstellung aus, die Sie überarbeiten möchten, oder erstellen Sie eine neue Bereitstellung und klicken Sie dann auf **Weiter**.

1. <a name="deploy-component-choose-target-step"></a>Wenn Sie eine neue Bereitstellung erstellen möchten, wählen Sie das Ziel-Core-Gerät oder die Dinggruppe für die Bereitstellung aus. Wählen Sie auf der Seite „**Ziel angeben**“ unter **Bereitstellungsziel** ein Kerngerät oder eine Dinggruppe aus, und klicken Sie dann auf **Weiter**.

1. Vergewissern **Sie sich auf der Seite „Komponenten auswählen**“, dass die **aws.greengrass.clientdevices.IPDetector**Komponente ausgewählt ist, und klicken Sie auf **Weiter**.

1. Wählen Sie auf der Seite **Komponenten konfigurieren** die Option aus **aws.greengrass.clientdevices.IPDetector**, und gehen Sie dann wie folgt vor:

   1. Wählen Sie **Komponente konfigurieren** aus.

   1. Im aws.greengrass.clientdevices.IPDetector Modal **konfigurieren** können Sie unter **Konfigurationsupdate** unter **Konfiguration zum Zusammenführen** ein Konfigurationsupdate eingeben, um die IP-Detektorkomponente zu konfigurieren. Sie können eine der folgenden Konfigurationsoptionen angeben:
      + `defaultPort`— <a name="ip-detector-component-configuration-default-port-definition"></a>(Optional) Der MQTT-Broker-Port, der gemeldet werden soll, wenn diese Komponente IP-Adressen erkennt. Sie müssen diesen Parameter angeben, wenn Sie den MQTT-Broker so konfigurieren, dass er einen anderen Port als den Standardport 8883 verwendet. 
      + `includeIPv4LoopbackAddrs`— <a name="ip-detector-component-configuration-include-ipv4-loopback-addrs-definition"></a>(Optional) Sie können diese Option aktivieren, um IPv4 Loopback-Adressen zu erkennen und zu melden. Dies sind IP-Adressen, mit denen ein Gerät `localhost` beispielsweise mit sich selbst kommunizieren kann. Verwenden Sie diese Option in Testumgebungen, in denen das Kerngerät und das Client-Gerät auf demselben System ausgeführt werden. 
      + `includeIPv4LinkLocalAddrs`— <a name="ip-detector-component-configuration-include-ipv4-link-local-addrs-definition"></a>(Optional) Sie können diese Option aktivieren, um IPv4 [Link-Local-Adressen](https://en.wikipedia.org/wiki/Link-local_address) zu erkennen und zu melden. Verwenden Sie diese Option, wenn das Netzwerk des Kerngeräts nicht über DHCP (Dynamic Host Configuration Protocol) oder statisch zugewiesene IP-Adressen verfügt. 
      + `includeIPv6LoopbackAddrs`— <a name="ip-detector-component-configuration-include-ipv6-loopback-addrs-definition"></a>(Optional) Sie können diese Option aktivieren, um IPv6 Loopback-Adressen zu erkennen und zu melden. Dies sind IP-Adressen, mit denen ein Gerät `localhost` beispielsweise mit sich selbst kommunizieren kann. Verwenden Sie diese Option in Testumgebungen, in denen das Kerngerät und das Client-Gerät auf demselben System ausgeführt werden. Sie müssen `includeIPv4Addrs` auf `false` und auf einstellen`includeIPv6Addrs`, `true` um diese Option verwenden zu können. Sie benötigen IP Detector v2.2.0 oder höher, um diese Option verwenden zu können.
      + `includeIPv6LinkLocalAddrs`— <a name="ip-detector-component-configuration-include-ipv6-link-local-addrs-definition"></a>(Optional) Sie können diese Option aktivieren, um IPv6 [Link-Local-Adressen](https://en.wikipedia.org/wiki/Link-local_address) zu erkennen und zu melden. Verwenden Sie diese Option, wenn das Netzwerk des Kerngeräts nicht über DHCP (Dynamic Host Configuration Protocol) oder statisch zugewiesene IP-Adressen verfügt. Sie müssen `includeIPv4Addrs` auf `false` und auf einstellen, `includeIPv6Addrs` um diese Option verwenden `true` zu können. Sie benötigen IP Detector v2.2.0 oder höher, um diese Option verwenden zu können.
      + `includeIPv4Addrs`— <a name="ip-detector-component-configuration-include-ipv4-addrs-definition"></a>(Optional) Die Standardeinstellung ist auf true gesetzt. Sie können diese Option aktivieren, um IPv4 Adressen zu veröffentlichen, die auf dem Core-Gerät gefunden wurden. Sie benötigen IP Detector v2.2.0 oder höher, um diese Option verwenden zu können.
      + `includeIPv6Addrs`— <a name="ip-detector-component-configuration-include-ipv6-addrs-definition"></a>(Optional) Sie können diese Option aktivieren, um IPv6 Adressen zu veröffentlichen, die auf dem Core-Gerät gefunden wurden. Stellen Sie `includeIPv4Addrs` auf `false` ein, um diese Option zu verwenden. Sie benötigen IP Detector v2.2.0 oder höher, um diese Option verwenden zu können.

      Das Konfigurationsupdate könnte dem folgenden Beispiel ähneln.

      ```
      {
        "defaultPort": "8883",
        "includeIPv4LoopbackAddrs": false,
        "includeIPv4LinkLocalAddrs": false
      }
      ```

   1. Wählen Sie **Bestätigen**, um das Modal zu schließen, und wählen Sie dann **Weiter**.

1. <a name="deploy-component-configure-advanced-settings-step"></a>Behalten Sie auf der Seite **Erweiterte Einstellungen konfigurieren** die Standardkonfigurationseinstellungen bei und wählen Sie **Weiter**.

1. <a name="deploy-component-review-and-deploy-step"></a>Wählen Sie auf der Seite **Review (Prüfen)** die Option **Deploy (Bereitstellen)** aus.

   Es kann bis zu einer Minute dauern, bis die Bereitstellung abgeschlossen ist.

### Stellen Sie die IP-Detektorkomponente bereit (AWS CLI)
<a name="deploy-ip-detector-cli"></a>

Um die IP-Detektorkomponente bereitzustellen, erstellen Sie ein Bereitstellungsdokument, das das `components` Objekt enthält`aws.greengrass.clientdevices.IPDetector`, und geben Sie das Konfigurationsupdate für die Komponente an. Folgen Sie den Anweisungen unter[Erstellen von Bereitstellungen](create-deployments.md), um eine neue Einrichtung zu erstellen oder eine bestehende Einrichtung zu überarbeiten.

Sie können bei der Erstellung des Bereitstellungsdokuments eine der folgenden Optionen angeben, um die IP-Detektorkomponente zu konfigurieren:
+ `defaultPort`— <a name="ip-detector-component-configuration-default-port-definition"></a>(Optional) Der MQTT-Broker-Port, der gemeldet werden soll, wenn diese Komponente IP-Adressen erkennt. Sie müssen diesen Parameter angeben, wenn Sie den MQTT-Broker so konfigurieren, dass er einen anderen Port als den Standardport 8883 verwendet. 
+ `includeIPv4LoopbackAddrs`— <a name="ip-detector-component-configuration-include-ipv4-loopback-addrs-definition"></a>(Optional) Sie können diese Option aktivieren, um IPv4 Loopback-Adressen zu erkennen und zu melden. Dies sind IP-Adressen, mit denen ein Gerät `localhost` beispielsweise mit sich selbst kommunizieren kann. Verwenden Sie diese Option in Testumgebungen, in denen das Kerngerät und das Client-Gerät auf demselben System ausgeführt werden. 
+ `includeIPv4LinkLocalAddrs`— <a name="ip-detector-component-configuration-include-ipv4-link-local-addrs-definition"></a>(Optional) Sie können diese Option aktivieren, um IPv4 [Link-Local-Adressen](https://en.wikipedia.org/wiki/Link-local_address) zu erkennen und zu melden. Verwenden Sie diese Option, wenn das Netzwerk des Kerngeräts nicht über DHCP (Dynamic Host Configuration Protocol) oder statisch zugewiesene IP-Adressen verfügt. 
+ `includeIPv6LoopbackAddrs`— <a name="ip-detector-component-configuration-include-ipv6-loopback-addrs-definition"></a>(Optional) Sie können diese Option aktivieren, um IPv6 Loopback-Adressen zu erkennen und zu melden. Dies sind IP-Adressen, mit denen ein Gerät `localhost` beispielsweise mit sich selbst kommunizieren kann. Verwenden Sie diese Option in Testumgebungen, in denen das Kerngerät und das Client-Gerät auf demselben System ausgeführt werden. Sie müssen `includeIPv4Addrs` auf `false` und auf einstellen`includeIPv6Addrs`, `true` um diese Option verwenden zu können. Sie benötigen IP Detector v2.2.0 oder höher, um diese Option verwenden zu können.
+ `includeIPv6LinkLocalAddrs`— <a name="ip-detector-component-configuration-include-ipv6-link-local-addrs-definition"></a>(Optional) Sie können diese Option aktivieren, um IPv6 [Link-Local-Adressen](https://en.wikipedia.org/wiki/Link-local_address) zu erkennen und zu melden. Verwenden Sie diese Option, wenn das Netzwerk des Kerngeräts nicht über DHCP (Dynamic Host Configuration Protocol) oder statisch zugewiesene IP-Adressen verfügt. Sie müssen `includeIPv4Addrs` auf `false` und auf einstellen, `includeIPv6Addrs` um diese Option verwenden `true` zu können. Sie benötigen IP Detector v2.2.0 oder höher, um diese Option verwenden zu können.
+ `includeIPv4Addrs`— <a name="ip-detector-component-configuration-include-ipv4-addrs-definition"></a>(Optional) Die Standardeinstellung ist auf true gesetzt. Sie können diese Option aktivieren, um IPv4 Adressen zu veröffentlichen, die auf dem Core-Gerät gefunden wurden. Sie benötigen IP Detector v2.2.0 oder höher, um diese Option verwenden zu können.
+ `includeIPv6Addrs`— <a name="ip-detector-component-configuration-include-ipv6-addrs-definition"></a>(Optional) Sie können diese Option aktivieren, um IPv6 Adressen zu veröffentlichen, die auf dem Core-Gerät gefunden wurden. Stellen Sie `includeIPv4Addrs` auf `false` ein, um diese Option zu verwenden. Sie benötigen IP Detector v2.2.0 oder höher, um diese Option verwenden zu können.

Im folgenden Beispieldokument zur teilweisen Bereitstellung wird angegeben, dass Port 8883 als MQTT-Broker-Port gemeldet werden soll.

```
{
  ...,
  "components": {
    ...,
    "aws.greengrass.clientdevices.IPDetector": {
      "componentVersion": "2.1.1",
      "configurationUpdate": {
        "merge": "{\"defaultPort\":\"8883\",}"
      }
    }
  }
}
```

## Manuelles Verwalten von Endpunkten
<a name="manually-manage-endpoints"></a>

Sie können MQTT-Broker-Endpunkte für Kerngeräte manuell verwalten.

Jeder MQTT-Broker-Endpunkt enthält die folgenden Informationen:

**Endpunkt** () `HostAddress`  
Eine IP-Adresse oder DNS-Adresse, über die Client-Geräte eine Verbindung zu einem MQTT-Broker auf dem Kerngerät herstellen können.

**Port** (`PortNumber`)  
Der Port, an dem der MQTT-Broker auf dem Kerngerät arbeitet.  
Sie können diesen Port in der [Moquette MQTT-Broker-Komponente](mqtt-broker-moquette-component.md) konfigurieren, die standardmäßig Port 8883 verwendet.

**Metadaten ()** `Metadata`  
Zusätzliche Metadaten, die den Client-Geräten zur Verfügung gestellt werden, die eine Verbindung zu diesem Endpunkt herstellen.

**Topics**
+ [Endgeräte verwalten (Konsole)](#manually-manage-endpoints-console)
+ [Endpunkte verwalten ()AWS CLI](#manually-manage-endpoints-cli)
+ [Endpunkte verwalten (API)](#manually-manage-endpoints-api)

### Endgeräte verwalten (Konsole)
<a name="manually-manage-endpoints-console"></a>

Sie können die AWS IoT Greengrass Konsole verwenden, um Endgeräte für ein Kerngerät anzuzeigen, zu aktualisieren und zu entfernen.

**Um Endpunkte für ein Kerngerät (Konsole) zu verwalten**

1. <a name="navigate-greengrass-console"></a>Navigieren Sie zur [AWS IoT Greengrass -Konsole](https://console.aws.amazon.com/greengrass).

1. Wählen Sie **Core-Geräte.**

1. Wählen Sie das zu verwaltende Kerngerät aus.

1. Wählen Sie auf der Detailseite des Kerngeräts die Registerkarte **Client-Geräte** aus.

1. Im Abschnitt **MQTT-Broker-Endpunkte** können Sie die MQTT-Broker-Endpunkte des Kerngeräts sehen. **Wählen Sie Endpunkte verwalten aus.**

1. Fügen **Sie im Modal „Endpunkte verwalten**“ MQTT-Broker-Endpunkte für das Kerngerät hinzu oder entfernen Sie sie.

1. Wählen Sie **Aktualisieren** aus.

### Endpunkte verwalten ()AWS CLI
<a name="manually-manage-endpoints-cli"></a>

Sie können das AWS Command Line Interface (AWS CLI) verwenden, um Endpunkte für ein Kerngerät zu verwalten.

**Anmerkung**  
Da die Unterstützung von Client-Geräten in abwärtskompatibel AWS IoT Greengrass V2 ist AWS IoT Greengrass V1, können Sie AWS IoT Greengrass V1 API-Operationen verwenden AWS IoT Greengrass V2 , um die Endpunkte von Kerngeräten zu verwalten.

**Um Endpunkte für ein Kerngerät abzurufen ()AWS CLI**
+ Verwenden Sie einen der folgenden Befehle:
  + [greengrassv2: get-connectivity-info](https://docs.aws.amazon.com/cli/latest/reference/greengrassv2/get-connectivity-info.html)
  + [grünes Gras: get-connectivity-info](https://docs.aws.amazon.com/cli/latest/reference/greengrass/get-connectivity-info.html)

**Um Endpunkte für ein Kerngerät zu aktualisieren ()AWS CLI**
+ Verwenden Sie einen der folgenden Befehle:
  + [greengrassv2: update-connectivity-info](https://docs.aws.amazon.com/cli/latest/reference/greengrassv2/update-connectivity-info.html)
  + [grünes Gras: update-connectivity-info](https://docs.aws.amazon.com/cli/latest/reference/greengrass/update-connectivity-info.html)

### Endpunkte verwalten (API)
<a name="manually-manage-endpoints-api"></a>

Sie können die AWS API verwenden, um Endpunkte für ein Kerngerät zu verwalten.

**Anmerkung**  
Da die Unterstützung von Client-Geräten in abwärtskompatibel AWS IoT Greengrass V2 ist AWS IoT Greengrass V1, können Sie unsere AWS IoT Greengrass V1 API-Operationen verwenden AWS IoT Greengrass V2 , um die Endpunkte von Kerngeräten zu verwalten.

**Um Endpunkte für ein Kerngerät (API) abzurufen AWS**
+ Verwenden Sie eine der folgenden Operationen:
  + [V2: GetConnectivityInfo](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_GetConnectivityInfo.html)
  + [V1: GetConnectivityInfo](https://docs.aws.amazon.com/greengrass/v1/apireference/getconnectivityinfo-get.html)

**Um Endpunkte für ein Kerngerät (AWS API) zu aktualisieren**
+ Verwenden Sie eine der folgenden Operationen:
  + [V2: UpdateConnectivityInfo](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_UpdateConnectivityInfo.html)
  + [V1: UpdateConnectivityInfo](https://docs.aws.amazon.com/greengrass/v1/apireference/updateconnectivityinfo-put.html)

# Wählen Sie einen MQTT-Broker
<a name="choose-local-mqtt-broker"></a>

AWS IoT Greengrass bietet Optionen, mit denen Sie auswählen können, welcher lokale MQTT-Broker auf Ihren Kerngeräten ausgeführt werden soll. Client-Geräte stellen eine Verbindung mit dem MQTT-Broker her, der auf einem Core-Gerät läuft. Wählen Sie also einen MQTT-Broker, der mit den Client-Geräten kompatibel ist, die Sie verbinden möchten.

**Anmerkung**  <a name="note-deploy-one-mqtt-broker"></a>
Wir empfehlen, dass Sie nur eine MQTT-Broker-Komponente bereitstellen. Die Komponenten [MQTT-Bridge](mqtt-bridge-component.md) und [IP-Detektor](ip-detector-component.md) funktionieren jeweils nur mit einer MQTT-Broker-Komponente. Wenn Sie mehrere MQTT-Broker-Komponenten bereitstellen, müssen Sie sie so konfigurieren, dass sie unterschiedliche Ports verwenden.

Sie können aus den folgenden MQTT-Brokern wählen:
+ **[MQTT 3.1.1 Broker (](mqtt-broker-moquette-component.md)**Moquette) — `aws.greengrass.clientdevices.mqtt.Moquette`

  Wählen Sie diese Option für einen einfachen MQTT-Broker, der dem MQTT 3.1.1-Standard entspricht. Sowohl der AWS IoT Core MQTT-Broker als auch der MQTT 3.1.1-Standard entsprechen, sodass Sie diese Funktionen verwenden können, um eine Anwendung zu erstellen, die MQTT 3.1.1 auf Ihren Geräten und dem verwendet. AWS IoT Device SDK AWS Cloud
+ **[MQTT 5-Broker (EMQX](mqtt-broker-emqx-component.md)**) — `aws.greengrass.clientdevices.mqtt.EMQX`

  Wählen Sie diese Option, um MQTT 5-Funktionen für die Kommunikation zwischen Kerngeräten und Client-Geräten zu verwenden. Diese Komponente verwendet mehr Ressourcen als der Moquette MQTT 3.1.1-Broker und benötigt auf Linux-Kerngeräten Docker.

  MQTT 5 ist abwärtskompatibel mit MQTT 3.1.1, sodass Sie Client-Geräte, die MQTT 3.1.1 verwenden, mit diesem Broker verbinden können. Wenn Sie den Moquette MQTT 3.1.1-Broker ausführen, können Sie ihn durch den EMQX MQTT 5-Broker ersetzen, sodass die Client-Geräte weiterhin eine Verbindung herstellen und wie gewohnt arbeiten können.

  <a name="note-local-mqtt-broker-mqtt-5-features"></a>
+ **Implementieren Sie einen benutzerdefinierten Broker**

  Wählen Sie diese Option, um eine benutzerdefinierte lokale Broker-Komponente für die Kommunikation mit Client-Geräten zu erstellen. Sie können einen benutzerdefinierten lokalen Broker erstellen, der ein anderes Protokoll als MQTT verwendet. AWS IoT Greengrass stellt ein Komponenten-SDK bereit, mit dem Sie Client-Geräte authentifizieren und autorisieren können. Weitere Informationen erhalten Sie unter [Verwenden Sie den AWS IoT Device SDK , um mit dem Greengrass-Kern und anderen Komponenten zu kommunizieren und AWS IoT CoreKommunizieren Sie mit dem Greengrass-Kern, anderen Komponenten und AWS IoT Core](interprocess-communication.md) und [Client-Geräte authentifizieren und autorisieren](ipc-client-device-auth.md).

# Client-Geräte über einen AWS IoT Greengrass MQTT-Broker mit einem Core-Gerät verbinden
<a name="connecting-to-mqtt"></a>

Wenn Sie einen MQTT-Broker auf Ihrem AWS IoT Greengrass Core-Gerät verwenden, verwendet das Gerät eine für das *Gerät einzigartige Zertifizierungsstelle (Core Device Certificate Authority, CA)*, um dem Broker ein Zertifikat auszustellen, das gegenseitige TLS-Verbindungen mit Clients herstellt. 

AWS IoT Greengrass generiert automatisch eine Zertifizierungsstelle für das Kerngerät, oder Sie können Ihre eigene angeben. Die CA für das Kerngerät ist registriert AWS IoT Greengrass , wenn die [Authentifizierung auf Client-Geräten](client-device-auth-component.md) Komponente angeschlossen wird. Die automatisch generierte Zertifizierungsstelle für das Kerngerät ist persistent. Das Gerät verwendet weiterhin dieselbe CA, solange die Authentifizierungskomponente für das Client-Gerät konfiguriert ist.

Wenn der MQTT-Broker gestartet wird, fordert er ein Zertifikat an. Die Authentifizierungskomponente für das Clientgerät stellt unter Verwendung der Zertifizierungsstelle des Kerngeräts ein X.509-Zertifikat aus. Das Zertifikat wird rotiert, wenn der Broker gestartet wird, wenn das Zertifikat abläuft oder wenn sich Verbindungsinformationen wie die IP-Adresse ändern. Weitere Informationen finden Sie unter [Zertifikatsrotation auf dem lokalen MQTT-Broker](device-auth.md#mqtt-certificate-expiration).

Um einen Client mit dem MQTT-Broker zu verbinden, benötigen Sie Folgendes:
+ Das Client-Gerät muss über die AWS IoT Greengrass Core-Geräte-CA verfügen. Sie können diese CA über Cloud Discovery oder durch manuelles Bereitstellen der CA abrufen. Weitere Informationen finden Sie unter [Verwenden Sie Ihre eigene Zertifizierungsstelle](#use-your-own-CA).
+ Der vollqualifizierte Domainname (FQDN) oder die IP-Adresse des Kerngeräts müssen im Brokerzertifikat enthalten sein, das von der Zertifizierungsstelle des Kerngeräts ausgestellt wurde. Sie stellen dies sicher, indem Sie die [IP-Detektor](ip-detector-component.md) Komponente verwenden oder die IP-Adresse manuell konfigurieren. Weitere Informationen finden Sie unter [Endpunkte von Kerngeräten verwalten](manage-core-device-endpoints.md).
+ Die Authentifizierungskomponente für das Client-Gerät muss dem Client-Gerät die Erlaubnis erteilen, eine Verbindung zum Greengrass-Core-Gerät herzustellen. Weitere Informationen finden Sie unter [Authentifizierung auf Client-Geräten](client-device-auth-component.md).

## Verwenden Sie Ihre eigene Zertifizierungsstelle
<a name="use-your-own-CA"></a>

Wenn Ihre Client-Geräte nicht auf die Cloud zugreifen können, um Ihr Kerngerät zu erkennen, können Sie eine *Zertifizierungsstelle (CA) für das Kerngerät* bereitstellen. Ihr Greengrass-Core-Gerät verwendet die Core-Geräte-CA, um Zertifikate für Ihren MQTT-Broker auszustellen. Sobald Sie das Core-Gerät konfiguriert und Ihr Client-Gerät mit seiner CA ausgestattet haben, können Ihre Client-Geräte eine Verbindung zum Endpoint herstellen und den TLS-Handshake mithilfe der zentralen Geräte-CA (selbst bereitgestellte oder automatisch generierte CA) verifizieren.

Um die [Authentifizierung auf Client-Geräten](client-device-auth-component.md) Komponente so zu konfigurieren, dass sie die CA Ihres Kerngeräts verwendet, legen Sie bei der Bereitstellung der Komponente den `certificateAuthority` Konfigurationsparameter fest. Sie müssen bei der Konfiguration die folgenden Details angeben:
+ Der Speicherort eines CA-Zertifikats für das Kerngerät.
+ Der private Schlüssel des CA-Zertifikats für das Kerngerät.
+ (Optional) Die Zertifikatskette zum Stammzertifikat, wenn es sich bei der Zertifizierungsstelle des Kerngeräts um eine Zwischenzertifizierungsstelle handelt.

Wenn Sie eine Zertifizierungsstelle für das Kerngerät angeben, AWS IoT Greengrass registriert diese Zertifizierungsstelle in der Cloud.

Sie können Ihre Zertifikate in einem Hardware-Sicherheitsmodul oder im Dateisystem speichern. Das folgende Beispiel zeigt eine `certificateAuthority` Konfiguration für eine Zwischenzertifizierungsstelle, die mit HSM/TPM gespeichert wird. Beachten Sie, dass die Zertifikatskette nur auf der Festplatte gespeichert werden kann.

```
  "certificateAuthority": {
      "certificateUri": "pkcs11:object=CustomerIntermediateCA;type=cert",
      "privateKeyUri": "pkcs11:object=CustomerIntermediateCA;type=private"
      "certificateChainUri": "file:///home/ec2-user/creds/certificateChain.pem",
    }
```

In diesem Beispiel konfiguriert der `certificateAuthority` Konfigurationsparameter die Authentifizierungskomponente für das Client-Gerät so, dass sie eine Zwischenzertifizierungsstelle aus dem Dateisystem verwendet:

```
  "certificateAuthority": {
      "certificateUri": "file:///home/ec2-user/creds/intermediateCA.pem",
      "privateKeyUri": "file:///home/ec2-user/creds/intermediateCA.privateKey.pem",
      "certificateChainUri": "file:///home/ec2-user/creds/certificateChain.pem",
    }
```

Gehen Sie wie folgt vor, um die Geräte mit Ihrem AWS IoT Greengrass Core-Gerät zu verbinden:

1. Erstellen Sie mithilfe der Stammzertifizierungsstelle Ihrer Organisation eine Zwischenzertifizierungsstelle (CA) für das Greengrass-Core-Gerät. Aus Sicherheitsgründen empfehlen wir Ihnen, eine Zwischenzertifizierungsstelle zu verwenden.

1. Stellen Sie das Zwischenzertifikat, den privaten Schlüssel und die Zertifikatskette für Ihre Stammzertifizierungsstelle auf dem Greengrass-Core-Gerät bereit. Weitere Informationen finden Sie unter [Authentifizierung auf Client-Geräten](client-device-auth-component.md). Die Zwischen-CA wird zur Core-Device-CA für das Greengrass-Core-Gerät, und das Gerät registriert die CA bei AWS IoT Greengrass.

1. Registrieren Sie das Client-Gerät als eine beliebige AWS IoT Sache. Weitere Informationen finden Sie im *AWS IoT Core Entwicklerhandbuch* [unter Ein Ding-Objekt erstellen](https://docs.aws.amazon.com/iot/latest/developerguide/create-iot-resources.html#create-aws-thing). Fügen Sie Ihrem Client-Gerät den privaten Schlüssel, den öffentlichen Schlüssel, das Gerätezertifikat und das Root-CA-Zertifikat hinzu. Wie Sie die Informationen hinzufügen, hängt von Ihrem Gerät und Ihrer Software ab.

Sobald Sie Ihr Gerät konfiguriert haben, können Sie das Zertifikat und den öffentlichen Schlüsselbund verwenden, um eine Verbindung zum Greengrass-Core-Gerät herzustellen. Ihre Software ist dafür verantwortlich, die Endpunkte der Kerngeräte zu finden. Sie können den Endpunkt für das Kerngerät manuell festlegen. Weitere Informationen finden Sie unter [Manuelles Verwalten von Endpunkten](manage-core-device-endpoints.md#manually-manage-endpoints).

# Testen Sie die Kommunikation mit Client-Geräten
<a name="test-client-device-communications"></a>

Client-Geräte können das verwenden, AWS IoT Device SDK um ein Kerngerät zu erkennen, eine Verbindung herzustellen und mit ihm zu kommunizieren. Sie können den Greengrass Discovery Client in verwenden, AWS IoT Device SDK um die [Greengrass Discovery API](greengrass-discover-api.md) zu verwenden, die Informationen über Kerngeräte zurückgibt, mit denen ein Client-Gerät eine Verbindung herstellen kann. Die API-Antwort umfasst MQTT-Broker-Endpunkte für die Verbindung und Zertifikate zur Überprüfung der Identität der einzelnen Kerngeräte. Anschließend kann das Client-Gerät jeden Endpunkt ausprobieren, bis es erfolgreich eine Verbindung zu einem Kerngerät herstellt.

Client-Geräte können nur Kerngeräte erkennen, denen Sie sie zuordnen. Bevor Sie die Kommunikation zwischen einem Client-Gerät und einem Core-Gerät testen, müssen Sie das Client-Gerät dem Core-Gerät zuordnen. Weitere Informationen finden Sie unter [Client-Geräte zuordnen](associate-client-devices.md).

Die Greengrass Discovery API gibt die von Ihnen angegebenen MQTT-Broker-Endpunkte für das Kerngerät zurück. Sie können die [IP-Detektorkomponente](ip-detector-component.md) verwenden, um diese Endpunkte für Sie zu verwalten, oder Sie können sie für jedes Kerngerät manuell verwalten. Weitere Informationen finden Sie unter [Endpunkte von Kerngeräten verwalten](manage-core-device-endpoints.md).

**Anmerkung**  
Um die Greengrass Discovery API verwenden zu können, muss ein Client-Gerät über die `greengrass:Discover` entsprechende Genehmigung verfügen. Weitere Informationen finden Sie unter [Minimale AWS IoT Richtlinie für Client-Geräte](device-auth.md#client-device-minimal-iot-policy).

Das AWS IoT Device SDK ist in mehreren Programmiersprachen verfügbar. Weitere Informationen finden Sie unter [AWS IoT Gerät SDKs](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sdks.html) im *AWS IoT Core Entwicklerhandbuch*.

**Topics**
+ [Kommunikation testen (Python)](#test-client-device-communications-python)
+ [Testen Sie die Kommunikation (C\$1\$1)](#test-client-device-communications-cpp)
+ [Testen Sie die Kommunikation () JavaScript](#test-client-device-communications-javascript)
+ [Testen Sie die Kommunikation (Java)](#test-client-device-communications-java)

## Kommunikation testen (Python)
<a name="test-client-device-communications-python"></a>

In diesem Abschnitt verwenden Sie das Greengrass Discovery-Beispiel in [AWS IoT Device SDK Version 2 für Python](https://github.com/aws/aws-iot-device-sdk-python-v2), um die Kommunikation zwischen einem Client-Gerät und einem Core-Gerät zu testen.

**Wichtig**  
Um AWS IoT Device SDK Version 2 für Python zu verwenden, muss auf einem Gerät Python 3.6 oder höher ausgeführt werden.

**Um die Kommunikation zu testen (AWS IoT Device SDK v2 für Python)**

1. <a name="download-iot-device-sdk-python-v2"></a>Laden Sie die [AWS IoT Device SDK Version v2 für Python](https://github.com/aws/aws-iot-device-sdk-python-v2) herunter und installieren Sie sie auf dem AWS IoT Ding, um eine Verbindung als Client-Gerät herzustellen.

   Gehen Sie auf dem Client-Gerät wie folgt vor:

   1. Klonen Sie das Repository AWS IoT Device SDK v2 for Python, um es herunterzuladen.

      ```
      git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
      ```

   1. Installieren Sie die AWS IoT Device SDK Version v2 für Python.

      ```
      python3 -m pip install --user ./aws-iot-device-sdk-python-v2
      ```

1. <a name="cd-iot-device-sdk-python-v2"></a>Wechseln Sie in den Samples-Ordner in der AWS IoT Device SDK Version v2 für Python.

   ```
   cd aws-iot-device-sdk-python-v2/samples/greengrass
   ```

1. <a name="test-client-device-communications-application-intro"></a>Führen Sie die Greengrass-Discovery-Beispielanwendung aus. Diese Anwendung erwartet Argumente, die den Namen des Dings auf dem Client-Gerät, das zu verwendende MQTT-Thema und die zu verwendende Nachricht sowie die Zertifikate angeben, die die Verbindung authentifizieren und sichern. Im folgenden Beispiel wird eine Hello World-Nachricht an das `clients/MyClientDevice1/hello/world` Thema gesendet.<a name="test-client-device-communications-application-command-replace"></a>
   + *MyClientDevice1*Ersetzen Sie es durch den Dingnamen des Client-Geräts.
   + *\$1/certs/AmazonRootCA1.pem*Ersetzen Sie durch den Pfad zum Amazon-Root-CA-Zertifikat auf dem Client-Gerät.
   + *\$1/certs/device.pem.crt*Ersetzen Sie durch den Pfad zum Gerätezertifikat auf dem Client-Gerät.
   + *\$1/certs/private.pem.key*Ersetzen Sie durch den Pfad zur privaten Schlüsseldatei auf dem Client-Gerät.
   + *us-east-1*Ersetzen Sie durch die AWS Region, in der Ihr Client-Gerät und Ihr Core-Gerät betrieben werden.

   ```
   python3 basic_discovery.py \\
     --thing_name MyClientDevice1 \\
     --topic 'clients/MyClientDevice1/hello/world' \\
     --message 'Hello World!' \\
     --ca_file ~/certs/AmazonRootCA1.pem \\
     --cert ~/certs/device.pem.crt \\
     --key ~/certs/private.pem.key \\
     --region us-east-1 \\
     --verbosity Warn
   ```

   <a name="test-client-device-communications-application-output-intro"></a>Die Discovery-Beispielanwendung sendet die Nachricht zehnmal und trennt die Verbindung. Außerdem abonniert sie dasselbe Thema, in dem sie Nachrichten veröffentlicht. Wenn die Ausgabe anzeigt, dass die Anwendung MQTT-Nachrichten zu diesem Thema empfangen hat, kann das Client-Gerät erfolgreich mit dem Core-Gerät kommunizieren.

   ```
   Performing greengrass discovery...
   awsiot.greengrass_discovery.DiscoverResponse(gg_groups=[awsiot.greengrass_discovery.GGGroup(gg_group_id='greengrassV2-coreDevice-MyGreengrassCore', cores=[awsiot.greengrass_discovery.GGCore(thing_arn='arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore', connectivity=[awsiot.greengrass_discovery.ConnectivityInfo(id='203.0.113.0', host_address='203.0.113.0', metadata='', port=8883)])], certificate_authorities=['-----BEGIN CERTIFICATE-----\
   MIICiT...EXAMPLE=\
   -----END CERTIFICATE-----\
   '])])
   Trying core arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore at host 203.0.113.0 port 8883
   Connected!
   Published topic clients/MyClientDevice1/hello/world: {"message": "Hello World!", "sequence": 0}
   
   Publish received on topic clients/MyClientDevice1/hello/world
   b'{"message": "Hello World!", "sequence": 0}'
   Published topic clients/MyClientDevice1/hello/world: {"message": "Hello World!", "sequence": 1}
   
   Publish received on topic clients/MyClientDevice1/hello/world
   b'{"message": "Hello World!", "sequence": 1}'
   
   ...
   
   Published topic clients/MyClientDevice1/hello/world: {"message": "Hello World!", "sequence": 9}
   
   Publish received on topic clients/MyClientDevice1/hello/world
   b'{"message": "Hello World!", "sequence": 9}'
   ```

   <a name="test-client-device-communications-application-troubleshooting"></a>Wenn die Anwendung stattdessen einen Fehler ausgibt, finden Sie weitere Informationen unter [Behebung von Problemen mit der Greengrass-Erkennung](troubleshooting-client-devices.md#greengrass-discovery-issues).

   <a name="test-client-device-communications-application-view-core-logs"></a>Sie können auch die Greengrass-Protokolle auf dem Kerngerät einsehen, um zu überprüfen, ob das Client-Gerät erfolgreich eine Verbindung herstellt und Nachrichten sendet. Weitere Informationen finden Sie unter [AWS IoT Greengrass Protokolle überwachen](monitor-logs.md).

## Testen Sie die Kommunikation (C\$1\$1)
<a name="test-client-device-communications-cpp"></a>

In diesem Abschnitt verwenden Sie das Greengrass Discovery-Beispiel in [AWS IoT Device SDK Version 2 für C\$1\$1](https://github.com/aws/aws-iot-device-sdk-cpp-v2), um die Kommunikation zwischen einem Client-Gerät und einem Core-Gerät zu testen.

<a name="iot-device-sdk-cpp-v2-build-requirements-intro"></a>Um die AWS IoT Device SDK Version 2 für C\$1\$1 zu erstellen, muss ein Gerät über die folgenden Tools verfügen:<a name="iot-device-sdk-cpp-v2-build-requirements"></a>
+ C\$1\$1 11 oder höher
+ CMake 3.1 oder später
+ Einer der folgenden Compiler:
  + GCC 4.8 oder höher
  + Clang 3.9 oder höher
  + MSVC 2015 oder später

**Um die Kommunikation zu testen (AWS IoT Device SDK v2 für C\$1\$1)**

1. Laden Sie die [AWS IoT Device SDK Version v2 für C\$1\$1](https://github.com/aws/aws-iot-device-sdk-cpp-v2) herunter und erstellen Sie sie zu dem AWS IoT Ding, das Sie als Client-Gerät verbinden möchten.

   Gehen Sie auf dem Client-Gerät wie folgt vor:

   1. Erstellen Sie einen Ordner für den Arbeitsbereich AWS IoT Device SDK v2 für C\$1\$1, und wechseln Sie zu diesem.

      ```
      cd
      mkdir iot-device-sdk-cpp
      cd iot-device-sdk-cpp
      ```

   1. Klonen Sie das Repository AWS IoT Device SDK v2 für C\$1\$1, um es herunterzuladen. Das `--recursive` Flag gibt an, dass Submodule heruntergeladen werden sollen.

      ```
      git clone --recursive https://github.com/aws/aws-iot-device-sdk-cpp-v2.git
      ```

   1. Erstellen Sie einen Ordner für die Build-Ausgabe der AWS IoT Device SDK Version v2 für C\$1\$1 und wechseln Sie zu diesem.

      ```
      mkdir aws-iot-device-sdk-cpp-v2-build
      cd aws-iot-device-sdk-cpp-v2-build
      ```

   1. Erstellen Sie die AWS IoT Device SDK Version v2 für C\$1\$1.

      ```
      cmake -DCMAKE_INSTALL_PREFIX="~/iot-device-sdk-cpp" -DCMAKE_BUILD_TYPE="Release" ../aws-iot-device-sdk-cpp-v2
      cmake --build . --target install
      ```

1. Erstellen Sie die Greengrass Discovery-Beispielanwendung in AWS IoT Device SDK Version 2 für C\$1\$1. Gehen Sie wie folgt vor:

   1. Wechseln Sie in der AWS IoT Device SDK Version v2 für C\$1\$1 zum Greengrass Discovery-Beispielordner.

      ```
      cd ../aws-iot-device-sdk-cpp-v2/samples/greengrass/basic_discovery
      ```

   1. Erstellen Sie einen Ordner für die Greengrass Discovery-Beispiel-Build-Ausgabe und wechseln Sie zu diesem.

      ```
      mkdir build
      cd build
      ```

   1. Erstellen Sie die Greengrass Discovery-Beispielanwendung.

      ```
      cmake -DCMAKE_PREFIX_PATH="~/iot-device-sdk-cpp" -DCMAKE_BUILD_TYPE="Release" ..
      cmake --build . --config "Release"
      ```

1. <a name="test-client-device-communications-application-scanner-intro"></a>Führen Sie die Greengrass-Discovery-Beispielanwendung aus. Diese Anwendung erwartet Argumente, die den Namen der Sache auf dem Client-Gerät, das zu verwendende MQTT-Thema und die Zertifikate angeben, die die Verbindung authentifizieren und sichern. Das folgende Beispiel abonniert das `clients/MyClientDevice1/hello/world` Thema und veröffentlicht eine Nachricht, die Sie in der Befehlszeile zu demselben Thema eingeben.<a name="test-client-device-communications-application-command-replace"></a>
   + *MyClientDevice1*Ersetzen Sie es durch den Ding-Namen des Client-Geräts.
   + *\$1/certs/AmazonRootCA1.pem*Ersetzen Sie durch den Pfad zum Amazon-Root-CA-Zertifikat auf dem Client-Gerät.
   + *\$1/certs/device.pem.crt*Ersetzen Sie durch den Pfad zum Gerätezertifikat auf dem Client-Gerät.
   + *\$1/certs/private.pem.key*Ersetzen Sie durch den Pfad zur privaten Schlüsseldatei auf dem Client-Gerät.
   + *us-east-1*Ersetzen Sie durch die AWS Region, in der Ihr Client-Gerät und Ihr Core-Gerät betrieben werden.

   ```
   ./basic-discovery \
     --thing_name MyClientDevice1 \
     --topic 'clients/MyClientDevice1/hello/world' \
     --ca_file ~/certs/AmazonRootCA1.pem \
     --cert ~/certs/device.pem.crt \
     --key ~/certs/private.pem.key \
     --region us-east-1
   ```

   <a name="test-client-device-communications-application-scanner-output-intro"></a>Die Discovery-Beispielanwendung abonniert das Thema und fordert Sie auf, eine Nachricht zur Veröffentlichung einzugeben. 

   ```
   Connecting to group greengrassV2-coreDevice-MyGreengrassCore with thing arn arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore, using endpoint 203.0.113.0:8883
   Connected to group greengrassV2-coreDevice-MyGreengrassCore, using connection to 203.0.113.0:8883
   Successfully subscribed to clients/MyClientDevice1/hello/world
   Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press enter. Enter 'exit' to exit this program.
   ```

   <a name="test-client-device-communications-application-troubleshooting"></a>Wenn die Anwendung stattdessen einen Fehler ausgibt, finden Sie weitere Informationen unter [Behebung von Problemen mit der Greengrass-Erkennung](troubleshooting-client-devices.md#greengrass-discovery-issues).

1. <a name="test-client-device-communications-application-scanner-input"></a>Geben Sie eine Nachricht ein, z. B. **Hello World\$1**

   ```
   Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press enter. Enter 'exit' to exit this program.
   Hello World!
   ```

   <a name="test-client-device-communications-application-scanner-input-output"></a>Wenn die Ausgabe anzeigt, dass die Anwendung die MQTT-Nachricht zu dem Thema erhalten hat, kann das Client-Gerät erfolgreich mit dem Core-Gerät kommunizieren.

   ```
   Operation on packetId 2 Succeeded
   Publish received on topic clients/MyClientDevice1/hello/world
   Message:
   Hello World!
   ```

   <a name="test-client-device-communications-application-view-core-logs"></a>Sie können auch die Greengrass-Protokolle auf dem Kerngerät einsehen, um zu überprüfen, ob das Client-Gerät erfolgreich eine Verbindung herstellt und Nachrichten sendet. Weitere Informationen finden Sie unter [AWS IoT Greengrass Protokolle überwachen](monitor-logs.md).

## Testen Sie die Kommunikation () JavaScript
<a name="test-client-device-communications-javascript"></a>

In diesem Abschnitt verwenden Sie das Greengrass Discovery-Beispiel in [AWS IoT Device SDK Version](https://github.com/aws/aws-iot-device-sdk-js-v2) 2, JavaScript um die Kommunikation zwischen einem Client-Gerät und einem Core-Gerät zu testen. 

**Wichtig**  
Um AWS IoT Device SDK Version 2 für verwenden zu können JavaScript, muss auf einem Gerät Node v10.0 oder höher ausgeführt werden.

**Um die Kommunikation zu testen (AWS IoT Device SDK v2 für JavaScript)**

1. Laden Sie [AWS IoT Device SDK Version 2 für JavaScript das Gerät](https://github.com/aws/aws-iot-device-sdk-js-v2) herunter und installieren Sie AWS IoT es, um eine Verbindung als Client-Gerät herzustellen.

   Gehen Sie auf dem Client-Gerät wie folgt vor:

   1. Klonen Sie AWS IoT Device SDK die Version 2 für das JavaScript Repository, um sie herunterzuladen.

      ```
      git clone https://github.com/aws/aws-iot-device-sdk-js-v2.git
      ```

   1. Installieren Sie die AWS IoT Device SDK Version v2 für JavaScript.

      ```
      cd aws-iot-device-sdk-js-v2
      npm install
      ```

1. Wechseln Sie in der AWS IoT Device SDK Version 2 für JavaScript zum Greengrass Discovery-Beispielordner.

   ```
   cd samples/node/greengrass/basic_discovery
   ```

1. Installieren Sie die Greengrass Discovery-Beispielanwendung.

   ```
   npm install
   ```

1. <a name="test-client-device-communications-application-intro"></a>Führen Sie die Greengrass-Discovery-Beispielanwendung aus. Diese Anwendung erwartet Argumente, die den Namen des Dings auf dem Client-Gerät, das zu verwendende MQTT-Thema und die zu verwendende Nachricht sowie die Zertifikate angeben, die die Verbindung authentifizieren und sichern. Im folgenden Beispiel wird eine Hello World-Nachricht an das `clients/MyClientDevice1/hello/world` Thema gesendet.<a name="test-client-device-communications-application-command-replace"></a>
   + *MyClientDevice1*Ersetzen Sie es durch den Dingnamen des Client-Geräts.
   + *\$1/certs/AmazonRootCA1.pem*Ersetzen Sie durch den Pfad zum Amazon-Root-CA-Zertifikat auf dem Client-Gerät.
   + *\$1/certs/device.pem.crt*Ersetzen Sie durch den Pfad zum Gerätezertifikat auf dem Client-Gerät.
   + *\$1/certs/private.pem.key*Ersetzen Sie durch den Pfad zur privaten Schlüsseldatei auf dem Client-Gerät.
   + *us-east-1*Ersetzen Sie durch die AWS Region, in der Ihr Client-Gerät und Ihr Core-Gerät betrieben werden.

   ```
   node dist/index.js \
     --thing_name MyClientDevice1 \
     --topic 'clients/MyClientDevice1/hello/world' \
     --message 'Hello World!' \
     --ca_file ~/certs/AmazonRootCA1.pem \
     --cert ~/certs/device.pem.crt \
     --key ~/certs/private.pem.key \
     --region us-east-1 \
     --verbose warn
   ```

   <a name="test-client-device-communications-application-output-intro"></a>Die Discovery-Beispielanwendung sendet die Nachricht zehnmal und trennt die Verbindung. Außerdem abonniert sie dasselbe Thema, in dem sie Nachrichten veröffentlicht. Wenn die Ausgabe anzeigt, dass die Anwendung MQTT-Nachrichten zu diesem Thema empfangen hat, kann das Client-Gerät erfolgreich mit dem Core-Gerät kommunizieren.

   ```
   Discovery Response:
   {"gg_groups":[{"gg_group_id":"greengrassV2-coreDevice-MyGreengrassCore","cores":[{"thing_arn":"arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore","connectivity":[{"id":"203.0.113.0","host_address":"203.0.113.0","port":8883,"metadata":""}]}],"certificate_authorities":["-----BEGIN CERTIFICATE-----\nMIICiT...EXAMPLE=\n-----END CERTIFICATE-----\n"]}]}
   Trying endpoint={"id":"203.0.113.0","host_address":"203.0.113.0","port":8883,"metadata":""}
   [WARN] [2021-06-12T00:46:45Z] [00007f90c0e8d700] [socket] - id=0x7f90b8018710 fd=26: setsockopt() for NO_SIGNAL failed with errno 92. If you are having SIGPIPE signals thrown, you may want to install a signal trap in your application layer.
   Connected to endpoint={"id":"203.0.113.0","host_address":"203.0.113.0","port":8883,"metadata":""}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":1}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":2}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":3}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":4}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":5}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":6}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":7}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":8}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":9}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":10}
   Complete!
   ```

   <a name="test-client-device-communications-application-troubleshooting"></a>Wenn die Anwendung stattdessen einen Fehler ausgibt, finden Sie weitere Informationen unter [Behebung von Problemen mit der Greengrass-Erkennung](troubleshooting-client-devices.md#greengrass-discovery-issues).

   <a name="test-client-device-communications-application-view-core-logs"></a>Sie können auch die Greengrass-Protokolle auf dem Kerngerät einsehen, um zu überprüfen, ob das Client-Gerät erfolgreich eine Verbindung herstellt und Nachrichten sendet. Weitere Informationen finden Sie unter [AWS IoT Greengrass Protokolle überwachen](monitor-logs.md).

## Testen Sie die Kommunikation (Java)
<a name="test-client-device-communications-java"></a>

In diesem Abschnitt verwenden Sie das Greengrass Discovery-Beispiel in [AWS IoT Device SDK Version 2 für Java](https://github.com/aws/aws-iot-device-sdk-java-v2), um die Kommunikation zwischen einem Client-Gerät und einem Core-Gerät zu testen.

**Wichtig**  
Um die AWS IoT Device SDK Version 2 für Java zu erstellen, muss ein Gerät über die folgenden Tools verfügen:  
Java 8 oder höher, mit `JAVA_HOME` Verweis auf den Java-Ordner.
Apache Maven

**Um die Kommunikation zu testen (AWS IoT Device SDK v2 für Java)**

1. Laden Sie die [AWS IoT Device SDK Version v2 für Java](https://github.com/aws/aws-iot-device-sdk-java-v2) herunter und erstellen Sie sie auf AWS IoT dem Gerät, um eine Verbindung als Client-Gerät herzustellen.

   Gehen Sie auf dem Client-Gerät wie folgt vor:

   1. Klonen Sie das Repository AWS IoT Device SDK v2 for Java, um es herunterzuladen.

      ```
      git clone https://github.com/aws/aws-iot-device-sdk-java-v2.git
      ```

   1. Wechseln Sie zum Ordner AWS IoT Device SDK v2 für Java.

   1. Erstellen Sie die AWS IoT Device SDK Version v2 für Java.

      ```
      cd aws-iot-device-sdk-java-v2
      mvn versions:use-latest-versions -Dincludes="software.amazon.awssdk.crt*"
      mvn clean install
      ```

1. <a name="test-client-device-communications-application-scanner-intro"></a>Führen Sie die Greengrass-Discovery-Beispielanwendung aus. Diese Anwendung erwartet Argumente, die den Namen der Sache auf dem Client-Gerät, das zu verwendende MQTT-Thema und die Zertifikate angeben, die die Verbindung authentifizieren und sichern. Das folgende Beispiel abonniert das `clients/MyClientDevice1/hello/world` Thema und veröffentlicht eine Nachricht, die Sie in der Befehlszeile zu demselben Thema eingeben.<a name="test-client-device-communications-application-command-replace"></a>
   + Ersetzen Sie beide Instanzen von *MyClientDevice1* durch den Dingnamen des Client-Geräts.
   + *\$1HOME/certs/AmazonRootCA1.pem*Ersetzen Sie durch den Pfad zum Amazon-Root-CA-Zertifikat auf dem Client-Gerät.
   + *\$1HOME/certs/device.pem.crt*Ersetzen Sie durch den Pfad zum Gerätezertifikat auf dem Client-Gerät.
   + *\$1HOME/certs/private.pem.key*Ersetzen Sie durch den Pfad zur privaten Schlüsseldatei auf dem Client-Gerät.
   + *us-east-1*Ersetzen Sie durch den AWS-Region Ort, an dem Ihr Client-Gerät und Ihr Core-Gerät betrieben werden.

   ```
   DISCOVERY_SAMPLE_ARGS="--thing_name MyClientDevice1 \
     --topic 'clients/MyClientDevice1/hello/world' \
     --ca_file $HOME/certs/AmazonRootCA1.pem \
     --cert $HOME/certs/device.pem.crt \
     --key $HOME/certs/private.pem.key \
     --region us-east-1"
   
   mvn exec:java -pl samples/Greengrass/Discovery \
     -Dexec.mainClass=greengrass.BasicDiscovery \
     -Dexec.args="$DISCOVERY_SAMPLE_ARGS"
   ```

   <a name="test-client-device-communications-application-scanner-output-intro"></a>Die Discovery-Beispielanwendung abonniert das Thema und fordert Sie auf, eine Nachricht zur Veröffentlichung einzugeben. 

   ```
   Connecting to group ID greengrassV2-coreDevice-MyGreengrassCore, with thing arn arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore, using endpoint 203.0.113.0:8883
   Started a clean session
   Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press Enter. Type 'exit' or 'quit' to exit this program:
   ```

   <a name="test-client-device-communications-application-troubleshooting"></a>Wenn die Anwendung stattdessen einen Fehler ausgibt, finden Sie weitere Informationen unter [Behebung von Problemen mit der Greengrass-Erkennung](troubleshooting-client-devices.md#greengrass-discovery-issues).

1. <a name="test-client-device-communications-application-scanner-input"></a>Geben Sie eine Nachricht ein, z. B. **Hello World\$1**

   ```
   Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press Enter. Type 'exit' or 'quit' to exit this program:
   Hello World!
   ```

   <a name="test-client-device-communications-application-scanner-input-output"></a>Wenn die Ausgabe anzeigt, dass die Anwendung die MQTT-Nachricht zu dem Thema erhalten hat, kann das Client-Gerät erfolgreich mit dem Core-Gerät kommunizieren.

   ```
   Message received on topic clients/MyClientDevice1/hello/world: Hello World!
   ```

   <a name="test-client-device-communications-application-view-core-logs"></a>Sie können auch die Greengrass-Protokolle auf dem Kerngerät einsehen, um zu überprüfen, ob das Client-Gerät erfolgreich eine Verbindung herstellt und Nachrichten sendet. Weitere Informationen finden Sie unter [AWS IoT Greengrass Protokolle überwachen](monitor-logs.md).

# Greengrass-Entdeckungs-API RESTful
<a name="greengrass-discover-api"></a>

AWS IoT Greengrass stellt die `Discover` API-Operation bereit, mit der Client-Geräte Greengrass-Core-Geräte identifizieren können, mit denen sie sich verbinden können. Client-Geräte verwenden diesen Datenebenenvorgang, um Informationen abzurufen, die für die Verbindung mit Greengrass-Core-Geräten erforderlich sind, wo Sie sie dem [BatchAssociateClientDeviceWithCoreDevice](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_BatchAssociateClientDeviceWithCoreDevice.html)API-Vorgang zuordnen. Wenn ein Client-Gerät online geht, kann es eine Verbindung zum AWS IoT Greengrass Cloud-Dienst herstellen und mithilfe der Discovery-API Folgendes ermitteln:
+ Die IP-Adresse und der Port für jedes zugehörige Greengrass-Core-Gerät.
+ Das CA-Zertifikat für das Kerngerät, mit dem Client-Geräte das Greengrass-Core-Gerät authentifizieren können.

**Anmerkung**  
Client-Geräte können auch den Discovery-Client im verwenden AWS IoT Device SDK , um Konnektivitätsinformationen für Greengrass-Kerngeräte zu ermitteln. Der Discovery-Client verwendet die Discovery-API. Weitere Informationen finden Sie hier:  
[Testen Sie die Kommunikation mit Client-Geräten](test-client-device-communications.md)
[Greengrass Discovery RESTful API](https://docs.aws.amazon.com/greengrass/v1/developerguide/gg-discover-api.html) im *AWS IoT Greengrass Version 1 Developer Guide*.

Um diesen API-Vorgang zu verwenden, senden Sie HTTP-Anfragen an die Discovery-API auf dem Greengrass-Datenebenen-Endpunkt. Dieser API-Endpunkt hat das folgende Format.

```
https://greengrass-ats.iot.region.amazonaws.com:port/greengrass/discover/thing/thing-name
```

Eine Liste der unterstützten AWS-Regionen und für die AWS IoT Greengrass Discovery-API unterstützten Endpunkte und Endpunkte finden Sie unter [AWS IoT Greengrass V2 Endpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/greengrassv2.html) in der. *Allgemeine AWS-Referenz* Dieser API-Vorgang ist nur auf dem Endpunkt der Greengrass-Datenebene verfügbar. Der Endpunkt der Steuerungsebene, den Sie zur Verwaltung von Komponenten und Bereitstellungen verwenden, unterscheidet sich vom Endpunkt der Datenebene.

**Anmerkung**  
Die Discovery-API ist dieselbe für AWS IoT Greengrass V1 und AWS IoT Greengrass V2. Wenn Sie über Client-Geräte verfügen, die eine Verbindung zu einem AWS IoT Greengrass V1 Core herstellen, können Sie sie mit AWS IoT Greengrass V2 Core-Geräten verbinden, ohne den Code auf den Client-Geräten zu ändern. Weitere Informationen finden Sie unter [Greengrass Discovery RESTful API](https://docs.aws.amazon.com/greengrass/v1/developerguide/gg-discover-api.html) im *AWS IoT Greengrass Version 1 Developer Guide*.

**Topics**
+ [Discovery-Authentifizierung und Autorisierung](#greengrass-discover-auth)
+ [Anforderung](#greengrass-discover-request)
+ [Antwort](#greengrass-discover-response)
+ [Testen Sie die Discovery-API mit cURL](#greengrass-discover-test-request)

## Discovery-Authentifizierung und Autorisierung
<a name="greengrass-discover-auth"></a>

Um die Discovery-API zum Abrufen von Konnektivitätsinformationen zu verwenden, muss ein Client-Gerät die gegenseitige TLS-Authentifizierung mit einem X.509-Client-Zertifikat zur Authentifizierung verwenden. *Weitere Informationen finden Sie unter [X.509-Clientzertifikate im AWS IoT Core Developer](https://docs.aws.amazon.com/iot/latest/developerguide/x509-client-certs.html) Guide.*

Ein Client-Gerät muss außerdem über die Berechtigung verfügen, die `greengrass:Discover` Aktion auszuführen. Mit der folgenden AWS IoT Beispielrichtlinie kann ein AWS IoT Objekt mit `MyClientDevice1` dem Namen selbstständig ausgeführt `Discover` werden.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "greengrass:Discover",
      "Resource": [
        "arn:aws:iot:us-west-2:123456789012:thing/MyClientDevice1"
      ]
    }
  ]
}
```

------

**Wichtig**  
<a name="thing-policy-variable-not-supported"></a>[Ding-Richtlinienvariablen](https://docs.aws.amazon.com/iot/latest/developerguide/thing-policy-variables.html) (`iot:Connection.Thing.*`) werden in AWS IoT Richtlinien für Kerngeräte oder Greengrass-Datenebenenoperationen nicht unterstützt. Stattdessen können Sie einen Platzhalter verwenden, der für mehrere Geräte mit ähnlichen Namen steht. Sie können beispielsweise angeben, ob `MyGreengrassDevice*` ein Treffer gefunden werden soll `MyGreengrassDevice1``MyGreengrassDevice2`, usw. 

Weitere Informationen finden Sie unter [AWS IoT Core Richtlinien](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policies.html) im *AWS IoT Core Entwicklerhandbuch*.

## Anforderung
<a name="greengrass-discover-request"></a>

Die Anfrage enthält die Standard-HTTP-Header und wird an den Greengrass Discovery-Endpunkt gesendet, wie in den folgenden Beispielen gezeigt.

Die Portnummer hängt davon ab, ob das Kerngerät so konfiguriert ist, dass es HTTPS-Verkehr über Port 8443 oder Port 443 sendet. Weitere Informationen finden Sie unter [Verbindungsherstellung auf Port 443 oder über einen Netzwerk-Proxy](configure-greengrass-core-v2.md#configure-alpn-network-proxy).

**Anmerkung**  
In diesen Beispielen wird der Amazon Trust Services (ATS) -Endpunkt verwendet, der mit den empfohlenen ATS-Root-CA-Zertifikaten arbeitet. Endpunkte müssen dem Typ des Stammzertifizierungsstellenzertifikats entsprechen.

Port 8443  

```
HTTP GET https://greengrass-ats.iot.region.amazonaws.com:8443/greengrass/discover/thing/thing-name
```

Port 443  

```
HTTP GET https://greengrass-ats.iot.region.amazonaws.com:443/greengrass/discover/thing/thing-name
```
Clients, die eine Verbindung über Port 443 herstellen, müssen die TLS-Erweiterung [Application Layer Protocol Negotiation (ALPN)](https://tools.ietf.org/html/rfc7301) implementieren und `x-amzn-http-ca` sie als `ProtocolName` in übergeben. `ProtocolNameList` Weitere Informationen finden Sie unter [Protokolle](https://docs.aws.amazon.com/iot/latest/developerguide/protocols.html) im *AWS IoT Entwicklerhandbuch*.

## Antwort
<a name="greengrass-discover-response"></a>

Bei Erfolg enthält der Antwort-Header den HTTP 200-Statuscode und der Antworttext das Discover-Antwortdokument.

**Anmerkung**  
Da die Antwort dieselbe Discovery-API AWS IoT Greengrass V2 verwendet wie AWS IoT Greengrass V1, organisiert sie Informationen nach AWS IoT Greengrass V1 Konzepten wie Greengrass-Gruppen. Die Antwort enthält eine Liste von Greengrass-Gruppen. In befindet AWS IoT Greengrass V2 sich jedes Kerngerät in einer eigenen Gruppe, wobei die Gruppe nur dieses Kerngerät und seine Konnektivitätsinformationen enthält.

### Beispieldokumente für Discovery-Antwort
<a name="greengrass-discover-response-examples"></a>

Das folgende Dokument zeigt die Antwort für ein Client-Gerät, das einem Greengrass-Core-Gerät zugeordnet ist. Das Kerngerät hat einen Endpunkt und ein CA-Zertifikat.

```
{
  "GGGroups": [
    {
      "GGGroupId": "greengrassV2-coreDevice-core-device-01-thing-name",
      "Cores": [
        {
          "thingArn": "core-device-01-thing-arn",
          "Connectivity": [
            {
              "id": "core-device-01-connection-id",
              "hostAddress": "core-device-01-address",
              "portNumber": core-device-01-port,
              "metadata": "core-device-01-description"
            }
          ]
        }
      ],
      "CAs": [
        "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----"
      ]
    }
  ]
}
```

Das folgende Dokument zeigt die Antwort für ein Client-Gerät, das zwei Kerngeräten zugeordnet ist. Die Kerngeräte verfügen über mehrere Endpunkte und mehrere Gruppen-CA-Zertifikate.

```
{
  "GGGroups": [
    {
      "GGGroupId": "greengrassV2-coreDevice-core-device-01-thing-name",
      "Cores": [
        {
          "thingArn": "core-device-01-thing-arn",
          "Connectivity": [
            {
              "id": "core-device-01-connection-id",
              "hostAddress": "core-device-01-address",
              "portNumber": core-device-01-port,
              "metadata": "core-device-01-connection-1-description"
            },
            {
              "id": "core-device-01-connection-id-2",
              "hostAddress": "core-device-01-address-2",
              "portNumber": core-device-01-port-2,
              "metadata": "core-device-01-connection-2-description"
            }
          ]
        }
      ],
      "CAs": [
        "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----",
        "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----",
        "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----"
      ]
    },
    {
      "GGGroupId": "greengrassV2-coreDevice-core-device-02-thing-name",
      "Cores": [
        {
          "thingArn":"core-device-02-thing-arn",
          "Connectivity" : [
            {
              "id": "core-device-02-connection-id",
              "hostAddress": "core-device-02-address",
              "portNumber": core-device-02-port,
              "metadata": "core-device-02-connection-1-description"
            }
          ]
        }
      ],
      "CAs": [
        "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----",
        "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----",
        "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----"
      ]
    }
  ]
}
```

## Testen Sie die Discovery-API mit cURL
<a name="greengrass-discover-test-request"></a>

Wenn Sie die Discovery-API `cURL` installiert haben, können Sie sie testen. Das folgende Beispiel spezifiziert die Zertifikate eines Client-Geräts zur Authentifizierung einer Anfrage an den Greengrass Discovery API-Endpunkt.

```
curl -i \
  --cert 1a23bc4d56.cert.pem \
  --key 1a23bc4d56.private.key \
  https://greengrass-ats.iot.us-west-2.amazonaws.com:8443/greengrass/discover/thing/MyClientDevice1
```

**Anmerkung**  
Das `-i` Argument gibt an, dass HTTP-Antwort-Header ausgegeben werden sollen. Sie können diese Option verwenden, um Fehler zu identifizieren.

Wenn die Anfrage erfolgreich ist, gibt dieser Befehl eine Antwort aus, die dem folgenden Beispiel ähnelt.

```
{
  "GGGroups": [
    {
      "GGGroupId": "greengrassV2-coreDevice-MyGreengrassCore",
      "Cores": [
        {
          "thingArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore",
          "Connectivity": [
            {
              "Id": "AUTOIP_192.168.1.4_1",
              "HostAddress": "192.168.1.5",
              "PortNumber": 8883,
              "Metadata": ""
            }
          ]
        }
      ],
      "CAs": [
        "-----BEGIN CERTIFICATE-----\ncert-contents\n-----END CERTIFICATE-----\n"
      ]
    }
  ]
}
```

Wenn der Befehl einen Fehler ausgibt, finden Sie weitere Informationen unter [Behebung von Problemen mit der Greengrass-Erkennung](troubleshooting-client-devices.md#greengrass-discovery-issues).