

# Hinzufügen eines Ziels zu Ihrem Sidewalk-Endgerät
<a name="iot-sidewalk-qsg-destination"></a>

Verwenden Sie AWS IoT-Regeln, um die Daten und Gerätenachrichten zu verarbeiten und an andere Services weiterzuleiten. Sie können auch Regeln definieren, um die vom Gerät empfangenen Binärnachrichten zu verarbeiten und die Nachrichten in andere Formate zu konvertieren, wodurch sie für andere Services einfacher zu verwenden sind. Ziele verknüpfen Ihre Sidewalk-Endgeräte mit der Regel, die die Gerätedaten verarbeitet, um sie an andere AWS-Service zu senden.

## Erstellen und Verwenden eines Ziels
<a name="iot-sidewalk-destination-how"></a>

1. Erstellen Sie eine AWS IoT-Regel und eine IAM-Rolle für das Ziel. Die AWS IoT-Regel legt die Regeln fest, nach denen die Daten des Geräts verarbeitet und zur Verwendung durch andere AWS-Service und Ihre Anwendungen weitergeleitet werden. Die IAM-Rolle gewährt Zugriff auf die Regel.

1. Erstellen Sie mithilfe der `CreateDestination`-API-Operation ein Ziel für Ihre Sidewalk-Geräte. Geben Sie den Zielnamen, den Regelnamen, den Rollennamen und optionale Parameter an. Die API gibt eine eindeutige Kennung für das Ziel zurück, das Sie beim Hinzufügen Ihres Endgerät zu AWS IoT Core für Amazon Sidewalk angeben können.

Im Folgenden wird gezeigt, wie Sie ein Ziel sowie eine AWS IoT-Regel und eine IAM-Rolle für das Ziel erstellen.

**Topics**
+ [Erstellen und Verwenden eines Ziels](#iot-sidewalk-destination-how)
+ [Hinzufügen eines Ziels für Ihr Sidewalk-Gerät](iot-sidewalk-destination-create.md)
+ [Erstellen einer IAM-Rolle und einer IoT-Regel für Ihr Ziel](sidewalk-destination-rule-role.md)

# Hinzufügen eines Ziels für Ihr Sidewalk-Gerät
<a name="iot-sidewalk-destination-create"></a>

Sie können Ihrem Konto für AWS IoT Core für Amazon Sidewalk entweder über den [Ziele-Hub](https://console.aws.amazon.com/iot/home#/wireless/destinations) oder über `CreateDestination` ein Ziel hinzufügen. Geben Sie bei der Erstellung Ihres Ziels Folgendes an:
+ Ein eindeutiger Name für das Ziel, den Sie für Ihr Sidewalk-Endgerät verwenden.
**Anmerkung**  
Wenn Sie Ihr Gerät bereits mit einem Zielnamen hinzugefügt haben, müssen Sie diesen Namen bei der Erstellung Ihres Ziels verwenden. Weitere Informationen finden Sie unter [Schritt 2: Hinzufügen Ihres Sidewalk-Geräts](iot-sidewalk-add-device.md#iot-sidewalk-device-create). 
+ Der Name der AWS IoT-Regel, die die Gerätedaten verarbeitet, und das Thema, zu dem Nachrichten veröffentlicht werden.
+ Die IAM-Rolle, die den Gerätedaten den Zugriff auf die Regel gewährt.

In den folgenden Abschnitten wird beschrieben, wie Sie eine AWS IoT-Regel und eine IAM-Rolle für Ihr Ziel erstellen.

## Erstellen eines Ziels (Konsole)
<a name="iot-sidewalk-destination-create-console"></a>

Wechseln Sie zum [Ziele-Hub](https://console.aws.amazon.com/iot/home#/wireless/destinations) und wählen Sie **Ziel hinzufügen**, um mit der AWS IoT-Konsole ein Ziel zu erstellen.

![\[alt text not found\]](http://docs.aws.amazon.com/de_de/iot-wireless/latest/developerguide/images/iot-sidewalk-add-destination.PNG)


Geben Sie beim Erstellen eines Ziels die folgenden Felder an und wählen Sie dann **Ziel hinzufügen**, um die Daten eines Geräts zu verarbeiten.
+ 

**Zieldetails**  
Geben Sie einen **Zielnamen** und eine optionale Beschreibung für Ihr Ziel ein.
+ 

**Regelname**  
Die AWS IoT-Regel, die so konfiguriert ist, dass sie von Ihrem Gerät gesendete Nachrichten auswertet und die Gerätedaten verarbeitet. Der Regelname wird Ihrem Ziel zugeordnet. Das Ziel erfordert, dass die Regel die empfangenen Nachrichten verarbeitet. Sie können wählen, ob die Nachrichten verarbeitet werden sollen, indem Sie entweder eine AWS IoT-Regel aufrufen oder sie im AWS IoT Message Broker veröffentlichen.
  + Wenn Sie **Regelname eingeben** wählen, geben Sie einen Namen ein, und wählen Sie dann **Kopieren**, um den Regelnamen zu kopieren, den Sie bei der Erstellung der AWS IoT-Regel eingeben. Sie können entweder **Regel erstellen** wählen, um die Regel jetzt zu erstellen, oder zum [Regeln](https://console.aws.amazon.com/iot/home#/create/rule)-Hub der AWS IoT-Konsole navigieren und eine Regel mit diesem Namen erstellen.

    Sie können auch eine Regel eingeben und mit der Einstellung **Erweitert** einen Themennamen angeben. Der Themenname wird beim Aufrufen der Regel angegeben und der Zugriff erfolgt mithilfe des `topic`-Ausdrucks innerhalb der Regel. Weitere Informationen über AWS IoT-Regeln finden Sie unter [AWS IoT-Regeln](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html).
  + Wenn Sie **Im AWS IoT Message Broker veröffentlichen** wählen, geben Sie einen Themennamen ein. Sie können dann den Namen des MQTT-Themas kopieren und mehrere Abonnenten können dieses Thema abonnieren, um Nachrichten zu erhalten, die zu diesem Thema veröffentlicht wurden. Weitere Informationen finden Sie unter [MQTT-Themen](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html).

  Weitere Informationen zu AWS IoT-Regeln für Ziele finden Sie unter [Erstellen von Regeln zur Verarbeitung von LoRaWAN-Gerätenachrichten](https://docs.aws.amazon.com/iot/latest/developerguide/connect-iot-lorawan-destination-rules.html).
+ 

**Rollenname**  
Die IAM-Rolle, die den Daten des Geräts Zugriff auf die in **Regelname** angegebene Regel gewährt. Sie können in der Konsole eine neue Servicerolle erstellen, oder eine bestehende wählen. Wenn Sie eine neue Servicerolle erstellen, können Sie entweder einen Rollennamen eingeben (z. B. **SidewalkDestinationRole**) oder das Feld leer lassen, AWS IoT Core für LoRaWAN um einen neuen Rollennamen zu generieren. AWS IoT Core für LoRaWAN erstellt anschließend automatisch die IAM-Rolle mit den entsprechenden Berechtigungen in Ihrem Namen.

## Erstellen eines Ziels (CLI)
<a name="iot-sidewalk-destination-create-cli"></a>

Verwenden Sie die [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateDestination.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateDestination.html)-API-Operation oder den [https://docs.aws.amazon.com/cli/latest/reference/create-destination.html](https://docs.aws.amazon.com/cli/latest/reference/create-destination.html)-CLI-Befehl, um ein Ziel zu erstellen. Mit dem folgenden Befehl wird beispielsweise ein Ziel für Ihr Sidewalk-Endgerät erstellt.

```
aws iotwireless create-destination --name SidewalkDestination \
    --expression-type RuleName --expression SidewalkRule \
    --role-arn arn:aws:iam::123456789012:role/SidewalkRole
```

Wenn Sie diesen Befehl ausführen, gibt er die Zieldetails mitsamt des Amazon-Ressourcennamens (ARN)) und des Zielnamens aus.

```
{
    "Arn": "arn:aws:iotwireless:us-east-1:123456789012:Destination/SidewalkDestination",
    "Name": "SidewalkDestination"
}
```

Weitere Informationen zum Erstellen eines Ziels finden Sie unter [Erstellen von Regeln zur Verarbeitung von LoRaWAN-Gerätenachrichten](https://docs.aws.amazon.com/iot/latest/developerguide/connect-iot-lorawan-destination-rules.html).

# Erstellen einer IAM-Rolle und einer IoT-Regel für Ihr Ziel
<a name="sidewalk-destination-rule-role"></a>

AWS IoT-Regeln senden Gerätenachrichten an andere Services. AWS IoT-Regeln können auch die von einem Sidewalk-Endgerät empfangenen Binärnachrichten verarbeiten, damit sie von anderen Services verwendet werden können. AWS IoT Core für Amazon Sidewalk-Ziele verknüpfen ein WLAN-Gerät mit der Regel, die die Nachrichtendaten des Geräts verarbeitet, um sie an andere Services zu senden. Die Regel wird auf die Daten des Geräts angewendet, sobald sie von AWS IoT Core für Amazon Sidewalk empfangen werden. Für Geräte, die ihre Daten an denselben Service senden, können Sie ein Ziel erstellen, das von allen Geräten gemeinsam genutzt werden kann. Sie müssen auch eine IAM-Rolle erstellen, die die Berechtigung zum Senden von Daten an die Regel erteilt.

## Erstellen einer IAM-Rolle für Ihr Ziel
<a name="iot-sidewalk-destination-role"></a>

Erstellen Sie eine IAM-Rolle, die AWS IoT Core für Amazon Sidewalk die Berechtigung zum Senden von Daten an die AWS IoT-Regel erteilt. Verwenden Sie die [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html)-API-Operation oder den [https://docs.aws.amazon.com/cli/latest/reference/iam/create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role)-CLI-Befehl, um die Rolle zu erstellen. Sie können die Rolle *`SidewalkRole`* nennen.

```
aws iam create-role --role-name SidewalkRole \ 
    --assume-role-policy-document '{"Version": "2012-10-17","Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}'
```

Sie können die Vertrauensrichtlinie für die Rolle auch mithilfe einer JSON-Datei definieren.

```
aws iam create-role --role-name SidewalkRole \ 
    --assume-role-policy-document file://trust-policy.json
```

Im Folgenden werden die Inhalte der JSON-Datei gezeigt.

**Inhalt von trust-policy.json**

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

## Erstellen einer Regel für Ihr Ziel
<a name="iot-sidewalk-destination-rule"></a>

Verwenden Sie die AWS IoT Core-API-Operation [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateTopicRule.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateTopicRule.html) oder den AWS CLI-Befehl [https://docs.aws.amazon.com/cli/latest/reference/iot/create-topic-rule.html](https://docs.aws.amazon.com/cli/latest/reference/iot/create-topic-rule.html), um eine Rolle zu erstellen. Die Themenregel wird von Ihrem Ziel verwendet, um die von Ihrem Sidewalk-Endgerät empfangenen Daten an andere AWS-Services weiterzuleiten. Sie können beispielsweise eine Regelaktion erstellen, die eine Nachricht an eine Lambda-Funktion sendet. Sie können die Lambda-Funktion so definieren, dass sie die Anwendungsdaten von Ihrem Gerät empfängt und base64 verwendet, um die Nutzlastdaten zu dekodieren, sodass sie von anderen Anwendungen verwendet werden können.

In den folgenden Schritten wird gezeigt, wie Sie die Lambda-Funktion und anschließend eine Themenregel erstellen, die eine Nachricht an diese Funktion sendet.

1. 

**Erstellen einer Ausführungsrolle und einer Richtlinie**

   Erstellen Sie die IAM-Rolle, die Ihrer Funktion Zugriff auf AWS-Ressourcen gewährt. Sie können die Vertrauensrichtlinie für die Rolle auch mithilfe einer JSON-Datei definieren.

   ```
   aws iam create-role --role-name lambda-ex \ 
       --assume-role-policy-document file://lambda-trust-policy.json
   ```

   Im Folgenden werden die Inhalte der JSON-Datei gezeigt.

   **Inhalt von lambda-trust-policy.json**

   ```
   {
     "Version": "2012-10-17",
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "lambda.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

1. 

**Erstellen und testen der Lambda-Funktion**

   Führen Sie die folgenden Schritte aus, um eine AWS Lambda-Funktion zu erstellen, die die base64-Nutzlastdaten dekodiert.

   1. Schreiben Sie den Code für die Dekodierung der Nutzlastdaten. Sie können beispielsweise den folgenden Python-Beispielcode verwenden. Geben Sie einen Namen für das Skript an, z. B. *`base64_decode.py`*.

      **Inhalt von base64\$1decode.py**

      ```
      // -----------------------------------------------------------
      // ----- Python script to decode incoming binary payload -----
      // -----------------------------------------------------------
      import json
      import base64
      
      def lambda_handler(event, context):
      
          message = json.dumps(event)
          print (message)
      
          payload_data = base64.b64decode(event["PayloadData"])
          print(payload_data)
          print(int(payload_data,16))
      ```

   1. Erstellen Sie ein Bereitstellungspaket als Zip-Datei, die die Python-Datei enthält, und nennen Sie sie `base64_decode.zip`. Verwenden Sie die `CreateFunction`-API oder den `create-function`-CLI-Befehl, um eine Lambda-Funktion für den Beispielcode *`base64_decode.py`* zu erstellen.

   1. 

      ```
      aws lambda create-function --function-name my-function \
      --zip-file fileb://base64_decode.zip --handler index.handler \ 
      --runtime python3.9 --role arn:aws:iam::123456789012:role/lambda-ex
      ```

      Die Ausgabe sollte folgendermaßen aussehen. Bei der Erstellung der Themenregel verwenden Sie den Wert des Amazon-Ressourcennamens (ARN) aus der Ausgabe `FunctionArn`.

      ```
      {
          "FunctionName": "my-function",
          "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:my-function",
          "Runtime": "python3.9",
          "Role": "arn:aws:iam::123456789012:role/lambda-ex",
          "Handler": "index.handler",
          "CodeSha256": "FpFMvUhayLkOoVBpNuNiIVML/tuGv2iJQ7t0yWVTU8c=",
          "Version": "$LATEST",
          "TracingConfig": {
              "Mode": "PassThrough"
          },
          "RevisionId": "88ebe1e1-bfdf-4dc3-84de-3017268fa1ff",
          ...
      }
      ```

   1. Verwenden Sie die `--log-type`-Option mit dem `invoke`-Befehl, um Protokolle für einen Aufruf über die Befehlszeile abzurufen. Die Antwort enthält das Feld LogResult, das bis zu 4 KB base64-verschlüsselte Protokolle aus dem Aufruf enthält. 

      ```
      aws lambda invoke --function-name my-function out --log-type Tail
      ```

      Sie erhalten die Antwort mit einem `StatusCode` von 200. Weitere Informationen zur Erstellung und Verwendung von Lambda-Funktionen aus AWS CLI finden Sie unter [Erstellen einer Lambda-Funktion mit der AWS CLI](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-awscli.html).

1. Erstellen einer Themenregel

   Verwenden Sie die `CreateTopicRule`-API oder den `create-topic-rule`-CLI-Befehl, um eine Themenregel zu erstellen, die eine Nachricht an diese Lambda-Funktion sendet. Sie können auch eine zweite Regelaktion hinzufügen, die zu einem AWS IoT-Thema erneut veröffentlicht wird. Nennen Sie diese Themenregel `Sidewalkrule`.

   ```
   aws iot create-topic-rule --rule-name Sidewalkrule \ 
       --topic-rule-payload file://myrule.json
   ```

   Sie können die `myrule.json`-Datei verwenden, um weitere Details zur Regel anzugeben. Die folgende JSON-Datei zeigt, wie Sie in einem AWS IoT-Thema erneut veröffentlichen und eine Nachricht an eine Lambda-Funktion senden.

   ```
   {
       "sql": "SELECT * ",
       "actions": [
          {
               // You obtained this functionArn when creating the Lambda function using the 
               // create-function command.
               "lambda": {
                   "functionArn": "arn:aws:lambda:us-east-1:123456789012:function:my-function"
                }
           },
           {
               // This topic can be used to observe messages exchanged between the device and 
               // AWS IoT Core for Amazon Sidewalk after the device is connected.
                "republish": {
                    "roleArn": "arn:aws:iam::123456789012:role/service-role/SidewalkRepublishRole",
                    "topic": "project/sensor/observed"
                }
           }
       ],
   }
   ```