

Hinweis zum Ende des Supports: Am 7. Oktober 2026 AWS wird der Support für eingestellt. AWS IoT Greengrass Version 1 Nach dem 7. Oktober 2026 können Sie nicht mehr auf die Ressourcen zugreifen. AWS IoT Greengrass V1 Weitere Informationen finden Sie unter [Migrieren von AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html).

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.

# Datenströme in die AWS Cloud (CLI) exportieren
<a name="stream-manager-cli"></a>

In diesem Tutorial erfahren Sie, wie Sie mit AWS CLI dem eine AWS IoT Greengrass Gruppe mit aktiviertem Stream-Manager konfigurieren und bereitstellen. Die Gruppe enthält eine benutzerdefinierte Lambda-Funktion, die in einen Stream im Stream-Manager schreibt, der dann automatisch in den exportiert wird. AWS Cloud

Stream Manager macht die Aufnahme, Verarbeitung und den Export von Datenströmen mit hohem Volumen effizienter und zuverlässiger. In diesem Tutorial erstellen Sie eine `TransferStream` Lambda-Funktion, die IoT-Daten verbraucht. Die Lambda-Funktion verwendet das AWS IoT Greengrass Core SDK, um einen Stream im Stream Manager zu erstellen und dann in ihn zu lesen und zu schreiben. Stream Manager exportiert den Stream dann nach Kinesis Data Streams. Im folgenden Diagramm wird dieser Workflow veranschaulicht.

![\[Diagramm des Stream-Management-Workflows.\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/images/stream-manager-scenario.png)


Der Schwerpunkt dieses Tutorials liegt darauf, zu zeigen, wie benutzerdefinierte Lambda-Funktionen das `StreamManagerClient` Objekt im AWS IoT Greengrass Core SDK verwenden, um mit dem Stream Manager zu interagieren. Der Einfachheit halber generiert die Python-Lambda-Funktion, die Sie für dieses Tutorial erstellen, simulierte Gerätedaten.

Wenn Sie die AWS IoT Greengrass API verwenden, die die Greengrass-Befehle in der enthält AWS CLI, um eine Gruppe zu erstellen, ist der Stream-Manager standardmäßig deaktiviert. Um den Stream Manager auf Ihrem Core zu aktivieren, [erstellen Sie eine Funktionsdefinitionsversion](#stream-manager-cli-create-function-definition), die die `GGStreamManager` Lambda-Systemfunktion enthält, und eine Gruppenversion, die auf die neue Funktionsdefinitionsversion verweist. Anschließend stellen Sie die Gruppe bereit.

## Voraussetzungen
<a name="stream-manager-cli-prerequisites"></a>

Zum Durchführen dieses Tutorials benötigen Sie Folgendes:<a name="stream-manager-howto-prereqs"></a>
+ Eine Greengrass-Gruppe und ein Greengrass-Kern (v1.10 oder höher). Informationen zum Erstellen einer Greengrass-Gruppe und eines Greengrass-Kerns finden Sie unter[Erste Schritte mit AWS IoT Greengrass](gg-gs.md). Das Tutorial „Erste Schritte“ enthält auch Schritte zur Installation der AWS IoT Greengrass Core-Software.
**Anmerkung**  <a name="stream-manager-not-supported-openwrt"></a>
<a name="stream-manager-not-supported-openwrt-para"></a>Stream Manager wird auf OpenWrt Distributionen nicht unterstützt.
+ Die Java 8-Laufzeitumgebung (JDK 8) muss auf dem Core-Gerät installiert sein.<a name="install-java8-runtime-general"></a>
  + Führen Sie für Debian-basierte Distributionen (einschließlich Raspbian) oder Ubuntu-basierte Distributionen den folgenden Befehl aus:

    ```
    sudo apt install openjdk-8-jdk
    ```
  + Führen Sie für Red Hat-basierte Distributionen (einschließlich Amazon Linux) den folgenden Befehl aus:

    ```
    sudo yum install java-1.8.0-openjdk
    ```

    Weitere Informationen finden Sie unter [How to download and install prebuilt OpenJDK packages](https://openjdk.java.net/install/) in der OpenJDK-Dokumentation.
+ AWS IoT Greengrass Core SDK für Python v1.5.0 oder höher. Um es `StreamManagerClient` im AWS IoT Greengrass Core SDK für Python zu verwenden, müssen Sie:
  + Installieren Sie Python 3.7 oder höher auf dem Core-Gerät.
  + Nehmen Sie das SDK und seine Abhängigkeiten in Ihr Lambda-Funktionsbereitstellungspaket auf. Anweisungen finden Sie in diesem Tutorial.
**Tipp**  
Sie können `StreamManagerClient` mit Java oder NodeJS verwenden. Beispielcode finden Sie unter [AWS IoT Greengrass Core SDK for Java](https://github.com/aws/aws-greengrass-core-sdk-java/blob/master/samples/StreamManagerKinesis/src/main/java/com/amazonaws/greengrass/examples/StreamManagerKinesis.java) und [AWS IoT Greengrass Core SDK für Node.js](https://github.com/aws/aws-greengrass-core-sdk-js/blob/master/greengrassExamples/StreamManagerKinesis/index.js) GitHub.
+ Ein Zielstream mit dem Namen, der in Amazon Kinesis Data Streams in derselben AWS-Region Greengrass-Gruppe **MyKinesisStream** erstellt wurde. Weitere Informationen finden Sie unter [Create a Stream](https://docs.aws.amazon.com/streams/latest/dev/fundamental-stream.html#create-stream) im *Amazon Kinesis Developer Guide*.
**Anmerkung**  
In diesem Tutorial exportiert Stream Manager Daten in Kinesis Data Streams, was zu Gebühren für Sie AWS-Konto führt. Preisinformationen finden Sie unter Preise für [Kinesis Data Streams](https://aws.amazon.com/kinesis/data-streams/pricing/).  
Um Kosten zu vermeiden, können Sie dieses Lernprogramm ausführen, ohne einen Kinesis-Datenstream zu erstellen. In diesem Fall überprüfen Sie die Protokolle, um festzustellen, dass der Stream-Manager versucht hat, den Stream nach Kinesis Data Streams zu exportieren.
+ Dem wurde eine IAM-Richtlinie hinzugefügt[Greengrass-Gruppenrolle.](group-role.md), die die `kinesis:PutRecords` Aktion für den Zieldatenstream ermöglicht, wie im folgenden Beispiel gezeigt:

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "kinesis:PutRecords"
              ],
              "Resource": [
              "arn:aws:kinesis:us-east-1:123456789012:stream/MyKinesisStream"
              ]
          }
      ]
  }
  ```

------<a name="aws-cli-howto-prereqs"></a>
+ Das AWS CLI ist auf Ihrem Computer installiert und konfiguriert. Weitere Informationen finden Sie [unter Installation AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) und [Konfiguration von AWS CLI im AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) *Benutzerhandbuch*.

   

  Die Beispielbefehle in diesem Tutorial sind für Linux und andere Unix-basierte Systeme geschrieben. Wenn Sie Windows verwenden, finden Sie unter [Angeben von Parameterwerten für die AWS Befehlszeilenschnittstelle](https://docs.aws.amazon.com/cli/latest/userguide/cli-using-param.html) weitere Informationen zu Unterschieden in der Syntax.

  Wenn der Befehl eine JSON-Zeichenkette enthält, zeigt das Tutorial ein Beispiel, das das JSON auf einer einzigen Zeile hat. Auf einigen Systemen ist es möglicherweise effizienter, Befehle in diesem Format zu bearbeiten und auszuführen.

 

Das Tutorial enthält die folgenden allgemeinen Schritte:

1. [Erstellen Sie ein Bereitstellungspaket für Lambda-Funktionen](#stream-manager-cli-create-deployment-package)

1. [Erstellen einer Lambda-Funktion](#stream-manager-cli-create-function)

1. [Erstellen einer Funktionsdefinition und -version](#stream-manager-cli-create-function-definition)

1. [Erstellen einer Logger-Definition und -Version](#stream-manager-cli-create-logger-definition)

1. [Abrufen des ARN der Core-Definitionsversion](#stream-manager-cli-get-core-definition-version-arn)

1. [Erstellen einer Gruppenversion](#stream-manager-cli-create-group-version)

1. [Eine Bereitstellung auswählen](#stream-manager-cli-create-deployment)

1. [Testen der Anwendung](#stream-manager-cli-test-application)

Für dieses Tutorial benötigen Sie ungefähr 30 Minuten.

## Schritt 1: Erstellen Sie ein Lambda-Funktionsbereitstellungspaket
<a name="stream-manager-cli-create-deployment-package"></a>

In diesem Schritt erstellen Sie ein Paket zur Bereitstellung von Lambda-Funktionen, das Python-Funktionscode und Abhängigkeiten enthält. Sie laden dieses Paket später hoch, wenn Sie die Lambda-Funktion in AWS Lambda erstellen. Die Lambda-Funktion verwendet das AWS IoT Greengrass Core SDK, um lokale Streams zu erstellen und mit ihnen zu interagieren.

**Anmerkung**  
 Ihre benutzerdefinierten Lambda-Funktionen müssen das [AWS IoT Greengrass Core SDK](lambda-functions.md#lambda-sdks-core) verwenden, um mit dem Stream Manager zu interagieren. Weitere Informationen zu den Anforderungen für den Greengrass Stream-Manager finden Sie im Artikel über die [Voraussetzungen für Greengrass Stream-Manager](stream-manager.md#stream-manager-requirements). 

1.  Laden Sie das [AWS IoT Greengrass Core SDK für Python](lambda-functions.md#lambda-sdks-core) v1.5.0 oder höher herunter.

1. <a name="unzip-ggc-sdk"></a>Entpacken Sie das heruntergeladene Paket, um das SDK zu erhalten. Das SDK ist der `greengrasssdk`-Ordner.

1. <a name="install-python-sdk-dependencies-stream-manager"></a>Installieren Sie Paketabhängigkeiten, die mit dem SDK in Ihr Lambda-Funktionsbereitstellungspaket aufgenommen werden sollen.<a name="python-sdk-dependencies-stream-manager"></a>

   1. Navigieren Sie zum SDK-Verzeichnis, das die `requirements.txt`-Datei enthält. Diese Datei listet die Abhängigkeiten auf.

   1. Installieren Sie die SDK-Abhängigkeiten. Führen Sie beispielsweise den folgenden `pip`-Befehl aus, um sie im aktuellen Verzeichnis zu installieren:

      ```
      pip install --target . -r requirements.txt
      ```

1. Speichern Sie die folgende Pythoncode-Funktion in einer lokalen Datei namens `transfer_stream.py`.
**Tipp**  
 Beispielcode, der Java und NodeJS verwendet, finden Sie im [AWS IoT Greengrass Core SDK for Java](https://github.com/aws/aws-greengrass-core-sdk-java/blob/master/samples/StreamManagerKinesis/src/main/java/com/amazonaws/greengrass/examples/StreamManagerKinesis.java) und [AWS IoT Greengrass Core SDK for Node.js](https://github.com/aws/aws-greengrass-core-sdk-js/blob/master/greengrassExamples/StreamManagerKinesis/index.js) unter. GitHub

   ```
   import asyncio
   import logging
   import random
   import time
   
   from greengrasssdk.stream_manager import (
       ExportDefinition,
       KinesisConfig,
       MessageStreamDefinition,
       ReadMessagesOptions,
       ResourceNotFoundException,
       StrategyOnFull,
       StreamManagerClient,
   )
   
   
   # This example creates a local stream named "SomeStream".
   # It starts writing data into that stream and then stream manager automatically exports  
   # the data to a customer-created Kinesis data stream named "MyKinesisStream". 
   # This example runs forever until the program is stopped.
   
   # The size of the local stream on disk will not exceed the default (which is 256 MB).
   # Any data appended after the stream reaches the size limit continues to be appended, and
   # stream manager deletes the oldest data until the total stream size is back under 256 MB.
   # The Kinesis data stream in the cloud has no such bound, so all the data from this script is
   # uploaded to Kinesis and you will be charged for that usage.
   
   
   def main(logger):
       try:
           stream_name = "SomeStream"
           kinesis_stream_name = "MyKinesisStream"
   
           # Create a client for the StreamManager
           client = StreamManagerClient()
   
           # Try deleting the stream (if it exists) so that we have a fresh start
           try:
               client.delete_message_stream(stream_name=stream_name)
           except ResourceNotFoundException:
               pass
   
           exports = ExportDefinition(
               kinesis=[KinesisConfig(identifier="KinesisExport" + stream_name, kinesis_stream_name=kinesis_stream_name)]
           )
           client.create_message_stream(
               MessageStreamDefinition(
                   name=stream_name, strategy_on_full=StrategyOnFull.OverwriteOldestData, export_definition=exports
               )
           )
   
           # Append two messages and print their sequence numbers
           logger.info(
               "Successfully appended message to stream with sequence number %d",
               client.append_message(stream_name, "ABCDEFGHIJKLMNO".encode("utf-8")),
           )
           logger.info(
               "Successfully appended message to stream with sequence number %d",
               client.append_message(stream_name, "PQRSTUVWXYZ".encode("utf-8")),
           )
   
           # Try reading the two messages we just appended and print them out
           logger.info(
               "Successfully read 2 messages: %s",
               client.read_messages(stream_name, ReadMessagesOptions(min_message_count=2, read_timeout_millis=1000)),
           )
   
           logger.info("Now going to start writing random integers between 0 and 1000 to the stream")
           # Now start putting in random data between 0 and 1000 to emulate device sensor input
           while True:
               logger.debug("Appending new random integer to stream")
               client.append_message(stream_name, random.randint(0, 1000).to_bytes(length=4, signed=True, byteorder="big"))
               time.sleep(1)
   
       except asyncio.TimeoutError:
           logger.exception("Timed out while executing")
       except Exception:
           logger.exception("Exception while running")
   
   
   def function_handler(event, context):
       return
   
   
   logging.basicConfig(level=logging.INFO)
   # Start up this sample code
   main(logger=logging.getLogger())
   ```

1. Packen Sie die folgenden Elemente in einer ZIP-Datei mit dem Namen `transfer_stream_python.zip`. Dies ist Ihr Lambda-Funktionsbereitstellungspaket.
   + **transfer\$1stream.py**. App-Logik.
   + **greengrasssdk**. Erforderliche Bibliothek für Python Greengrass Lambda-Funktionen, die MQTT-Nachrichten veröffentlichen.

     [Stream Manager-Operationen](work-with-streams.md) sind in Version 1.5.0 oder höher des AWS IoT Greengrass Core SDK für Python verfügbar.
   + Die Abhängigkeiten, die Sie für das AWS IoT Greengrass Core SDK für Python installiert haben (z. B. die `cbor2` Verzeichnisse).

   Wenn Sie die `zip`-Datei erstellen, schließen Sie nur diese Elemente ein, nicht den enthaltenen Ordner.

## Schritt 2: Erstellen einer Lambda-Funktion
<a name="stream-manager-cli-create-function"></a>

1. <a name="cli-create-empty-lambda-role"></a>Erstellen Sie eine IAM-Rolle, damit Sie den Rollen-ARN bei der Erstellung der Funktion übergeben können.

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

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

------
#### [ JSON Single-line ]

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

------
**Anmerkung**  
AWS IoT Greengrass verwendet diese Rolle nicht, da die Berechtigungen für Ihre Greengrass Lambda-Funktionen in der Greengrass-Gruppenrolle angegeben sind. Für dieses Tutorial erstellen Sie eine leere Rolle.

1. <a name="cli-copy-lambda-role-arn"></a>Kopieren Sie die `Arn` aus der Ausgabe.

1. Verwenden Sie die AWS Lambda API, um die Funktion zu erstellen. `TransferStream` Der folgende Befehl geht davon aus, dass sich die Zip-Datei im aktuellen Verzeichnis befindet.
   + Ersetzen Sie *role-arn* durch den `Arn`, den Sie kopiert haben.

   ```
   aws lambda create-function \
   --function-name TransferStream \
   --zip-file fileb://transfer_stream_python.zip \
   --role role-arn \
   --handler transfer_stream.function_handler \
   --runtime python3.7
   ```

1. Veröffentlichen einer Version der Funktion.

   ```
   aws lambda publish-version --function-name TransferStream --description 'First version'
   ```

1. Erstellen Sie einen Alias für die veröffentlichte Version.

   Greengrass-Gruppen können eine Lambda-Funktion nach Alias (empfohlen) oder nach Version referenzieren. Die Verwendung eines Alias erleichtert die Verwaltung von Codeaktualisierungen, da Sie Ihre Abonnementtabelle oder Gruppendefinition nicht ändern müssen, wenn der Funktionscode aktualisiert wird. Stattdessen verweisen Sie einfach mit dem Alias auf die neue Funktionsversion.

   ```
   aws lambda create-alias --function-name TransferStream --name GG_TransferStream --function-version 1
   ```
**Anmerkung**  
AWS IoT Greengrass unterstützt keine Lambda-Aliase für **\$1LATEST-Versionen**.

1. Kopieren Sie die `AliasArn` aus der Ausgabe. Sie verwenden diesen Wert, wenn Sie die Funktion für konfigurieren. AWS IoT Greengrass

Jetzt sind Sie bereit, die Funktion für zu konfigurieren AWS IoT Greengrass.

## Schritt 3: Erstellen einer Funktionsdefinition und -version
<a name="stream-manager-cli-create-function-definition"></a>

In diesem Schritt wird eine Funktionsdefinitionsversion erstellt, die auf die `GGStreamManager` Lambda-Funktion des Systems und Ihre benutzerdefinierte `TransferStream` Lambda-Funktion verweist. Um den Stream Manager zu aktivieren, wenn Sie die AWS IoT Greengrass API verwenden, muss Ihre Funktionsdefinitionsversion die Funktion enthalten. `GGStreamManager`

1. Erstellen Sie eine Funktionsdefinition mit einer ersten Version, die die System- und benutzerdefinierten Lambda-Funktionen enthält.

   Die folgende Definitionsversion aktiviert den Stream-Manager mit [Standardparametereinstellungen](configure-stream-manager.md). Um benutzerdefinierte Einstellungen zu konfigurieren, müssen Sie Umgebungsvariablen für die entsprechenden Stream-Manager-Parameter definieren. Ein Beispiel finden Sie unter[Um den Stream Manager (CLI) zu aktivieren, zu deaktivieren oder zu konfigurieren](configure-stream-manager.md#enable-stream-manager-cli). AWS IoT Greengrass verwendet Standardeinstellungen für Parameter, die weggelassen wurden. `MemorySize`sollte mindestens sein`128000`. `Pinned`muss auf eingestellt sein`true`.
**Anmerkung**  
<a name="long-lived-lambda"></a>Eine *langlebige* (oder *fixierte*) Lambda-Funktion wird nach dem Start automatisch AWS IoT Greengrass gestartet und läuft in einem eigenen Container weiter. Dies steht im Gegensatz zu einer *On-Demand-Lambda-Funktion*, die startet, wenn sie aufgerufen wird, und stoppt, wenn keine Aufgaben mehr zur Ausführung übrig sind. Weitere Informationen finden Sie unter [Lebenszykluskonfiguration für Greengrass Lambda-Funktionen](lambda-functions.md#lambda-lifecycle).
   + *arbitrary-function-id*Ersetzen Sie es durch einen Namen für die Funktion, z. B. **stream-manager**
   + *alias-arn*Ersetzen Sie es durch den`AliasArn`, den Sie kopiert haben, als Sie den Alias für die `TransferStream` Lambda-Funktion erstellt haben.

    

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

   ```
   aws greengrass create-function-definition --name MyGreengrassFunctions --initial-version '{
       "Functions": [
           {
               "Id": "arbitrary-function-id",
               "FunctionArn": "arn:aws:lambda:::function:GGStreamManager:1", 
               "FunctionConfiguration": {
                   "MemorySize": 128000,
                   "Pinned": true,
                   "Timeout": 3
               }
           },
           {
               "Id": "TransferStreamFunction",
               "FunctionArn": "alias-arn",
               "FunctionConfiguration": {
                   "Executable": "transfer_stream.function_handler",
                   "MemorySize": 16000,
                   "Pinned": true,
                   "Timeout": 5
               }
           }
       ]
   }'
   ```

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

   ```
   aws greengrass create-function-definition \
   --name MyGreengrassFunctions \
   --initial-version '{"Functions": [{"Id": "arbitrary-function-id","FunctionArn": "arn:aws:lambda:::function:GGStreamManager:1", "FunctionConfiguration": {"Environment": {"Variables":{"STREAM_MANAGER_STORE_ROOT_DIR": "/data","STREAM_MANAGER_SERVER_PORT": "1234","STREAM_MANAGER_EXPORTER_MAX_BANDWIDTH": "20000"}},"MemorySize": 128000,"Pinned": true,"Timeout": 3}},{"Id": "TransferStreamFunction", "FunctionArn": "alias-arn", "FunctionConfiguration": {"Executable": "transfer_stream.function_handler", "MemorySize": 16000,"Pinned": true,"Timeout": 5}}]}'
   ```

------
**Anmerkung**  
`Timeout` ist für die Funktionsdefinitionsversion erforderlich, wird vom `GGStreamManager` jedoch nicht verwendet. Weitere Informationen zu `Timeout` und anderen Einstellungen auf Gruppenebene finden Sie unter. [Steuerung der Ausführung von Greengrass Lambda-Funktionen mithilfe einer gruppenspezifischen Konfiguration](lambda-group-config.md)

1. Kopieren Sie die `LatestVersionArn` aus der Ausgabe. Mit diesem Wert fügen Sie die Version der Funktionsdefinition der Gruppenversion hinzu, die Sie im Core bereitstellen.

## Schritt 4: Erstellen einer Logger-Definition und -Version
<a name="stream-manager-cli-create-logger-definition"></a>

Konfigurieren Sie die Einstellungen für die Protokollierung der Gruppe. In diesem Tutorial konfigurieren Sie AWS IoT Greengrass Systemkomponenten, benutzerdefinierte Lambda-Funktionen und Konnektoren, um Protokolle in das Dateisystem des Kerngeräts zu schreiben. Sie können Protokolle verwenden, um Probleme zu beheben, die auftreten können. Weitere Informationen finden Sie unter [Überwachung mit AWS IoT Greengrass Protokollen](greengrass-logs-overview.md).

1. <a name="create-logger-definition"></a>Erstellen Sie eine Logger-Definition, die eine Erstversion enthält.

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

   ```
   aws greengrass create-logger-definition --name "LoggingConfigs" --initial-version '{
       "Loggers": [
           {
               "Id": "1",
               "Component": "GreengrassSystem",
               "Level": "INFO",
               "Space": 10240,
               "Type": "FileSystem"
           },
           {
               "Id": "2",
               "Component": "Lambda",
               "Level": "INFO",
               "Space": 10240,
               "Type": "FileSystem"
           }
       ]
   }'
   ```

------
#### [ JSON Single-line ]

   ```
   aws greengrass create-logger-definition \
       --name "LoggingConfigs" \
       --initial-version '{"Loggers":[{"Id":"1","Component":"GreengrassSystem","Level":"INFO","Space":10240,"Type":"FileSystem"},{"Id":"2","Component":"Lambda","Level":"INFO","Space":10240,"Type":"FileSystem"}]}'
   ```

------

1. <a name="copy-logger-definition-version-id"></a>Kopieren Sie den `LatestVersionArn` der Logger-Definition aus der Ausgabe. Mit diesem Wert fügen Sie die Version der Logger-Definition der Gruppenversion hinzu, die Sie im Core bereitstellen.

## Schritt 5: Abrufen des ARN der Core-Definitionsversion
<a name="stream-manager-cli-get-core-definition-version-arn"></a>

Rufen Sie den ARN der Core-Definitionsversion ab, die Sie Ihrer neuen Gruppenversion hinzufügen möchten. Um eine Gruppenversion bereitzustellen, muss sie auf eine Core-Definitionsversion verweisen, die genau einen Core enthält.

1. <a name="get-group-id-latestversion"></a>Rufen Sie IDs die Greengrass-Zielgruppe und die Gruppenversion ab. Bei diesem Verfahren wird davon ausgegangen, dass es sich um die neueste Gruppen- und Gruppenversion handelt. Die folgende Abfrage gibt die zuletzt erstellte Gruppe zurück.

   ```
   aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"
   ```

   Sie können auch nach Namen abfragen. Gruppennamen müssen nicht eindeutig sein, sodass mehrere Gruppen zurückgegeben werden können.

   ```
   aws greengrass list-groups --query "Groups[?Name=='MyGroup']"
   ```
**Anmerkung**  
<a name="find-group-ids-console"></a>Sie finden diese Werte auch in der AWS IoT Konsole. Die Gruppen-ID wird auf der Seite **Einstellungen** der Gruppe angezeigt. Die Gruppenversion IDs wird auf der Registerkarte **Bereitstellungen** der Gruppe angezeigt.

1. <a name="copy-target-group-id"></a>Kopieren Sie die `Id` der Zielgruppe aus der Ausgabe. Sie verwenden sie, um die Core-Definitionsversion zu erhalten, und wenn Sie die Gruppe bereitstellen.

1. <a name="copy-latest-group-version-id"></a>Kopieren Sie die `LatestVersion` aus der Ausgabe, d. h. die ID der letzten Version, die der Gruppe hinzugefügt wurde. Damit erhalten Sie die Core-Definitionsversion.

1. Abrufen des ARN der Core-Definitionsversion:

   1. Abrufen der Gruppenversion.
      + *group-id*Ersetzen Sie es durch `Id` das, was Sie für die Gruppe kopiert haben.
      + *group-version-id*Ersetzen Sie es durch `LatestVersion` das, was Sie für die Gruppe kopiert haben.

      ```
      aws greengrass get-group-version \
      --group-id group-id \
      --group-version-id group-version-id
      ```

   1. Kopieren Sie die `CoreDefinitionVersionArn` aus der Ausgabe. Mit diesem Wert fügen Sie die Core-Definitionsversion der Gruppenversion hinzu, die Sie im Core bereitstellen.

## Schritt 6: Erstellen einer Gruppenversion
<a name="stream-manager-cli-create-group-version"></a>

Jetzt können Sie eine Gruppenversion erstellen, die die Entitäten enthält, die Sie bereitstellen möchten. Dazu legen Sie eine Gruppenversion an, die auf die Zielversion jedes Komponententyps verweist. In diesem Lernprogramm schließen Sie eine Core-Definitionsversion, eine Funktionsdefinitionsversion und eine Logger-Definitionsversion ein.

1. Erstellen einer Gruppenversion
   + *group-id*Ersetzen Sie es durch `Id` das, was Sie für die Gruppe kopiert haben.
   + *core-definition-version-arn*Ersetzen Sie es durch `CoreDefinitionVersionArn` das, was Sie für die Version der Kerndefinition kopiert haben.
   + *function-definition-version-arn*Ersetzen Sie es durch `LatestVersionArn` das, was Sie für Ihre neue Version der Funktionsdefinition kopiert haben.
   + *logger-definition-version-arn*Ersetzen Sie es durch `LatestVersionArn` das, was Sie für Ihre neue Logger-Definitionsversion kopiert haben.

   ```
   aws greengrass create-group-version \
   --group-id group-id \
   --core-definition-version-arn core-definition-version-arn \
   --function-definition-version-arn function-definition-version-arn \
   --logger-definition-version-arn logger-definition-version-arn
   ```

1. <a name="copy-group-version-id"></a>Kopieren Sie die `Version` aus der Ausgabe. Dies ist die ID der neuen Gruppenversion.

## Schritt 7: Erstellen einer Bereitstellung
<a name="stream-manager-cli-create-deployment"></a>

Stellen Sie die Gruppe auf dem Core-Gerät bereit.

1. <a name="shared-deploy-group-checkggc"></a>Stellen Sie sicher, dass der AWS IoT Greengrass Core läuft. Führen Sie im Raspberry Pi-Terminal die folgenden Befehle aus, falls nötig.

   1. So prüfen Sie, ob der Daemon ausgeführt wird:

      ```
      ps aux | grep -E 'greengrass.*daemon'
      ```

      Wenn die Ausgabe einen `root`-Eintrag für `/greengrass/ggc/packages/ggc-version/bin/daemon` enthält, dann wird der Daemon ausgeführt.
**Anmerkung**  
Die Version im Pfad hängt von der AWS IoT Greengrass Core-Softwareversion ab, die auf Ihrem Core-Gerät installiert ist.

   1. Um den Daemon zu starten:

      ```
      cd /greengrass/ggc/core/
      sudo ./greengrassd start
      ```

1. <a name="create-deployment"></a>Erstellen einer -Bereitstellung.
   + Ersetze es *group-id* durch `Id` das, was du für die Gruppe kopiert hast.
   + *group-version-id*Ersetzen Sie es durch `Version` das, was Sie für die neue Gruppenversion kopiert haben.

   ```
   aws greengrass create-deployment \
   --deployment-type NewDeployment \
   --group-id group-id \
   --group-version-id group-version-id
   ```

1. <a name="copy-deployment-id"></a>Kopieren Sie die `DeploymentId` aus der Ausgabe.

1. <a name="get-deployment-status"></a>Abrufen des Bereitstellungsstatus.
   + *group-id*Ersetzen Sie es durch `Id` das, was Sie für die Gruppe kopiert haben.
   + *deployment-id*Ersetzen Sie es durch `DeploymentId` das, was Sie für die Bereitstellung kopiert haben.

   ```
   aws greengrass get-deployment-status \
   --group-id group-id \
   --deployment-id deployment-id
   ```

   Wenn der Status lautet`Success`, war die Bereitstellung erfolgreich. Hilfe zur Problembehebung finden Sie unter [Problembehebung AWS IoT Greengrass](gg-troubleshooting.md).

## Schritt 8: Testen der Anwendung
<a name="stream-manager-cli-test-application"></a>

Die `TransferStream` Lambda-Funktion generiert simulierte Gerätedaten. Sie schreibt Daten in einen Stream, den der Stream-Manager in den Kinesis-Zieldatenstream exportiert.

1. <a name="stream-manager-howto-test-open-kinesis-console"></a>Wählen Sie in der Amazon Kinesis Kinesis-Konsole unter **Kinesis-Datenstreams** die Option. **MyKinesisStream**
**Anmerkung**  
Wenn Sie das Lernprogramm ohne Kinesis-Zieldatenstream ausgeführt haben, [suchen Sie in der Protokolldatei](#stream-manager-cli-logs) nach dem Stream-Manager (`GGStreamManager`). Wenn `export stream MyKinesisStream doesn't exist` in einer Fehlermeldung enthalten ist, ist der Test erfolgreich. Dieser Fehler bedeutet, dass der Service versucht hat, in den Stream zu exportieren, der Stream jedoch nicht existiert.

1. <a name="stream-manager-howto-view-put-records"></a>**Wählen Sie auf der **MyKinesisStream**Seite Monitoring aus.** Wenn der Test erfolgreich ist, sollten Sie die Daten in den **Put Records (Datensätze übergeben)**-Diagrammen sehen. Je nach Verbindung kann es eine Minute dauern, bis die Daten angezeigt werden.
**Wichtig**  
Löschen Sie nach Abschluss des Tests den Kinesis-Datenstream, um zusätzliche Kosten zu vermeiden.  
Oder führen Sie die folgenden Befehle aus, um den Greengrass-Daemon zu stoppen. Dadurch wird verhindert, dass der Core Nachrichten sendet, bis Sie bereit sind, den Test fortzusetzen.  

   ```
   cd /greengrass/ggc/core/
   sudo ./greengrassd stop
   ```

1. Entfernen Sie die **TransferStream**Lambda-Funktion aus dem Kern.

   1. Folgen Sie [Schritt 6: Erstellen einer Gruppenversion](#stream-manager-cli-create-group-version), um eine neue Gruppenversion zu erstellen. Entfernen Sie jedoch die `--function-definition-version-arn`-Option im `create-group-version`-Befehl. Oder erstellen Sie eine Funktionsdefinitionsversion, die die **TransferStream**Lambda-Funktion nicht enthält.
**Anmerkung**  
Indem Sie die `GGStreamManager` Lambda-Funktion des Systems in der bereitgestellten Gruppenversion weglassen, deaktivieren Sie die Streamverwaltung auf dem Core.

   1. Folgen Sie [Schritt 7: Erstellen einer Bereitstellung](#stream-manager-cli-create-deployment), um die neue Gruppenversion bereitzustellen.

Um Protokollierungsinformationen anzuzeigen oder Probleme mit Streams zu beheben, suchen Sie in den Protokollen nach den Funktionen `TransferStream` und `GGStreamManager`. Sie müssen über `root` Berechtigungen zum Lesen von AWS IoT Greengrass Protokollen im Dateisystem verfügen.
+ `TransferStream` schreibt Protokolleinträge in `greengrass-root/ggc/var/log/user/region/account-id/TransferStream.log`.
+ `GGStreamManager` schreibt Protokolleinträge in `greengrass-root/ggc/var/log/system/GGStreamManager.log`.

Wenn Sie weitere Informationen zur Problembehandlung benötigen, können Sie die `Lambda`-Protokollierungsebene auf `DEBUG` festlegen und dann eine neue Gruppenversion erstellen und bereitstellen.

## Weitere Informationen finden Sie auch unter
<a name="stream-manager-cli-see-also"></a>
+ [Datenströme auf dem AWS IoT Greengrass Core verwalten](stream-manager.md)
+ [Wird verwendet StreamManagerClient , um mit Streams zu arbeiten](work-with-streams.md)
+ [Konfigurationen für unterstützte AWS Cloud Ziele exportieren](stream-export-configurations.md)
+ [AWS IoT Greengrass Streammanager konfigurieren](configure-stream-manager.md)
+ [Datenströme in die AWS Cloud (Konsole) exportieren](stream-manager-console.md)
+ <a name="see-also-iam-cli"></a>[AWS Identity and Access Management (IAM) -Befehle](https://docs.aws.amazon.com/cli/latest/reference/iam) in der *AWS CLI Befehlsreferenz*
+ <a name="see-also-lambda-cli"></a>[AWS Lambda Befehle](https://docs.aws.amazon.com/cli/latest/reference/lambda) in der *AWS CLI Befehlsreferenz*
+ <a name="see-also-gg-cli"></a>[AWS IoT Greengrass Befehle](https://docs.aws.amazon.com/cli/latest/reference/greengrass/index.html) in der *AWS CLI Befehlsreferenz*