Exportieren von Daten-Streams inAWS Cloud(CLI) - AWS IoT Greengrass

AWS IoT Greengrass Version 1 trat am 30. Juni 2023 in die erweiterte Lebensphase ein. Weitere Informationen finden Sie in der AWS IoT Greengrass V1 Wartungsrichtlinie. Nach diesem Datum AWS IoT Greengrass V1 werden keine Updates mehr veröffentlicht, die Funktionen, Verbesserungen, Bugfixes oder Sicherheitspatches bieten. Geräte, die auf laufen, werden AWS IoT Greengrass V1 nicht gestört und funktionieren weiterhin und stellen eine Verbindung zur Cloud her. Wir empfehlen Ihnen dringend, zu migrieren AWS IoT Greengrass Version 2, da dies wichtige neue Funktionen und Unterstützung für zusätzliche Plattformen bietet.

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.

Exportieren von Daten-Streams inAWS Cloud(CLI)

Dieses Tutorial zeigt, wie Sie dasAWS CLIzur Konfiguration und Bereitstellung einerAWS IoT GreengrassGruppe mit aktiviertem Stream-Manager. Die Gruppe enthält eine benutzerdefinierte Lambda-Funktion, die in einen Stream im Stream-Managers schreibt, der dann automatisch in denAWS Cloudaus.

Der Stream-Manager macht das Aufnehmen, Verarbeiten und Exportieren von Datenstreams mit hohem Volumen effizienter und zuverlässiger. In diesem Tutorial erstellen Sie einenTransferStreamLambda-Funktion, die IoT-Daten verbraucht. Die Lambda-Funktion verwendet denAWS IoT GreengrassCore SDK, um einen Stream im Stream-Managers zu erstellen und ihn dann zu lesen und darin zu schreiben. Der Stream-Manager exportiert dann den Stream in Kinesis Data Streams. Im folgenden Diagramm wird dieser Workflow veranschaulicht.

Diagramm des Stream-Management-Workflows.

Der Fokus dieses Lernprogramms ist es zu zeigen, wie benutzerdefinierte Lambda—FunktionenStreamManagerClient-Objekt imAWS IoT GreengrassCore-SDK zur Interaktion mit dem Stream-Manager. Der Einfachheit halber generiert die Python Lambda-Funktion, die Sie für dieses Lernprogramm erstellen.

Wenn Sie dasAWS IoT GreengrassAPI, die die Greengrass-Befehle in derAWS CLI, um eine Gruppe zu erstellen, ist der Stream-Managers standardmäßig deaktiviert. Um den Stream-Manager auf Ihrem Core zu aktivieren, müssen SieErstellen einer -Funktionsdefinitionsversiondas beinhaltet das SystemGGStreamManagerLambda-Funktion und eine Gruppenversion, die auf die neue Funktionsdefinitionsversion verweist. Anschließend stellen Sie die Gruppe bereit.

Voraussetzungen

Zum Durchführen dieses Tutorials benötigen Sie Folgendes:

  • Eine Greengrass-Gruppe und ein Greengrass Core (v1.10 oder höher). Weitere Informationen wie Sie eine Greengrass-Gruppe und Greengrass Core erstellen finden Sie unterErste Schritte mit AWS IoT Greengrassaus. Das Tutorial „Erste Schritte“ enthält auch die Schritte zur Installation der AWS IoT Greengrass-Core Software.

    Anmerkung

    Der Stream-Manager wird auf nicht unterstützt OpenWrt -Verteilungen.

  • Die Java 8-Laufzeitumgebung (JDK 8) muss auf dem Core-Gerät installiert sein.

    • 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 in der OpenJDK-Dokumentation.

  • AWS IoT GreengrassCore SDK for Python v1.5.0 oder höher. Um zu verwendenStreamManagerClientimAWS IoT GreengrassCore SDK für Python müssen Sie:

    • Python 3.7 oder höher installieren. Python 3.7 oder höher installieren.

    • 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 unterAWS IoT GreengrassCore-SDK SDK for JavaundAWS IoT GreengrassCore-SDK for Node.jsauf GitHubaus.

  • Ein Zielstream mit dem NamenMyKinesisStreamerstellt in Amazon Kinesis Data Streams im gleichenAWS-Regionals Ihre Greengrassgrassgrass-Gruppe. Weitere Informationen finden Sie unterErstellen eines -StreamsimEntwicklerhandbuch für Amazon Kinesisaus.

    Anmerkung

    In diesem Lernprogramm exportiert der Stream-Managers Daten in Kinesis Streams, was zu GebührenAWS-Kontoaus. Weitere Informationen zu -Preisen erhalten Sie unterKinesis Data Streams Streams-Preiseaus.

    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 zu sehen, dass der Stream-Managers versucht hat, den Stream in Kinesis Data Streams zu exportieren.

  • Eine IAM-Richtlinie wurde zurGreengrass-Gruppenrolle.das erlaubtkinesis:PutRecordsAktion auf dem Zieldaten-Stream, wie im folgenden Beispiel gezeigt:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:PutRecords" ], "Resource": [ "arn:aws:kinesis:region:account-id:stream/MyKinesisStream" ] } ] }
  • Die AWS CLI ist auf Ihrem Computer installiert und konfiguriert. Weitere Informationen finden Sie unterInstallieren vonAWS Command Line InterfaceundKonfigurieren vonAWS CLIimAWS Command Line Interface-Benutzerhandbuchaus.

     

    Die Beispielbefehle in diesem Tutorial sind für Linux und andere Unix-basierte Systeme geschrieben. Wenn Sie Windows verwenden, lesen Sie Folgendes:Angeben von Parameterwerten für dieAWS-Befehlszeilenschnittstellefinden Sie weitere Informationen über Unterschiede 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:

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

Schritt 1: Erstellen eines Bereitstellungspakets für Lambda

In diesem Schritt erstellen Sie ein Bereitstellungspaket, das Python—Funktionscode und Abhängigkeiten enthält. Sie laden dieses Paket später hoch, sobald Sie dasLambda-Funktion inAWS Lambdaaus. Die Lambda-Funktion verwendet denAWS IoT GreengrassCore--SDK zum Erstellen und Interagieren mit lokalen Stream-Managers.

Anmerkung

Ihre benutzerdefinierten Lambda-Funktionen müssen dieAWS IoT GreengrassCore-SDKum 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.

  1. Herunterladen desAWS IoT GreengrassCore-SDK für Pythonv1.5.0 oder höher.

  2. Entpacken Sie das heruntergeladene Paket, um das SDK zu erhalten. Das SDK ist der greengrasssdk-Ordner.

  3. Python installieren Sie Paketabhängigkeiten, die mit dem SDK in Ihr Bereitstellungspaket der Lambda-Funktion

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

    2. 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
  4. Speichern Sie die folgende Pythoncode-Funktion in einer lokalen Datei namens transfer_stream.py.

    Tipp

    Beispielcode, der Java und NodeJS verwendet, finden Sie imAWS IoT GreengrassCore-SDK SDK for JavaundAWS IoT GreengrassCore-SDK for Node.jsauf GitHubaus.

    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())
  5. Packen Sie die folgenden Elemente in einer ZIP-Datei mit dem Namen transfer_stream_python.zip. Dies ist das Bereitstellungspaket Ihrer Lambda-Funktion.

    • transfer_stream.py. App-Logik.

    • greengrasssdk. Erforderliche Bibliothek für Python Greengrass Lambda—Funktionen, die MQTT-Nachrichten veröffentlichen.

      Stream-Manager-Betriebsind in Version 1.5.0 oder höherAWS IoT GreengrassCore-SDK für Python.

    • Die Abhängigkeiten, die Sie für dasAWS IoT GreengrassCore SDK for Python (z. B. dascbor2-Verzeichnisse).

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

Schritt 2: Erstellen einer Lambda-Funktion

  1. Erstellen Sie eine IAM-Rolle, damit Sie beim Anlegen der -Funktion den Rollen-ARN ü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 Greengrassverwendet diese -Rolle nicht, da Berechtigungen für Ihre Greengrass-Lambda—Funktionen in der Greengrass-Gruppenrolle angegeben sind. Für dieses Tutorial erstellen Sie eine leere Rolle.

  2. Kopieren Sie die Arn aus der Ausgabe.

  3. Verwenden Sie die AWS Lambda-API, um die TransferStream-Funktion zu erstellen. Der folgende Befehl geht davon aus, dass sich die Zip-Datei im aktuellen Verzeichnis befindet.

    • Ersetzen Sie role-arn durch den kopierten Arn.

    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
  4. Veröffentlichen einer Version der Funktion.

    aws lambda publish-version --function-name TransferStream --description 'First version'
  5. Erstellen Sie einen Alias für die veröffentlichte Version.

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

    aws lambda create-alias --function-name TransferStream --name GG_TransferStream --function-version 1
    Anmerkung

    AWS IoT Greengrassunterstützt keine Lambda-Aliase für$LAEST-Versionen.

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

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

Schritt 3: Erstellen einer Funktionsdefinition und -version

Dieser Schritt erstellt eine Funktionsdefinitionsversion, die auf das System verweist.GGStreamManagerLambda-Funktion und Ihre benutzerdefinierteTransferStreamLambda-Funktion. Um den Stream-Manager zu aktivieren, wenn Sie denAWS IoT GreengrassAPI muss Ihre Funktionsdefinitionsversion dieGGStreamManagerFunktion.

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

    Die folgende Definitionsversionparameter-Einstellungenaus. Um benutzerdefinierte Einstellungen zu konfigurieren, müssen Sie Umgebungsvariablen für entsprechende Stream-Managers. Ein Beispiel finden Sie unterSo aktivieren, deaktivieren oder konfigurieren Sie den Stream-Manager (CLI)aus.AWS IoT Greengrassverwendet Standardeinstellungen.MemorySizesollte mindestens erforderlich sein128000aus.Pinnedmuss auf festgelegt seintrueaus.

    Anmerkung

    EINvon langlebigen(oderfestgeheftet) Lambda-Funktion startet automatisch danachAWS IoT Greengrass-Container. Dies steht im Gegensatz zu einemauf AnforderungLambda-Funktion, die nach einem Aufruf startet und beendet wird, sobald keine weiteren Aufgaben auszuführen sind. Weitere Informationen finden Sie unter Lebenszykluskonfiguration für Greengrass-Lambda-Funktionen.

    • Ersetzenarbitrary-function-idmit einem Namen für die Funktion, z. B.stream-manageraus.

    • ErsetzenAlias-arnmit demAliasArndie Sie beim Erstellen des AliasTransferStreamLambda-Funktion.

     

    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 zuTimeoutund andere Einstellungen auf Gruppenebene finden Sie unterSteuern der Ausführung von Greengrass-Lambda-Funktionen mithilfe einer gruppenspezifischen Konfigurationaus.

  2. 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

Konfigurieren Sie die Einstellungen für die Protokollierung der Gruppe. In diesem Tutorial konfigurieren SieAWS IoT Greengrass-Systemkomponenten, benutzerdefinierte Lambda—Funktionen und Konnektoren, die Protokolle in das Dateisystem des Core-Geräts schreiben. Sie können Protokolle verwenden, um Probleme zu beheben, die auftreten können. Weitere Informationen finden Sie unter Überwachen mit AWS IoT Greengrass-Protokollen.

  1. 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"}]}'
  2. 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

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. Rufen Sie die IDs der Greengrass-Zielgruppen und die Gruppenversion ab. Dieses Verfahren setzt voraus, dass es sich um die neueste Gruppe 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

    Sie finden diese Werte auch inAWS IoTconsole. Die Gruppen-ID wird auf der Seite Einstellungen der Gruppe angezeigt. Gruppenversions-IDs werden auf demBereitstellungenRegisterkarte.

  2. Kopieren Sie die Id der Zielgruppe aus der Ausgabe. Sie verwenden sie, um die Core-Definitionsversion zu erhalten, und wenn Sie die Gruppe bereitstellen.

  3. 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.

  4. Abrufen des ARN der Core-Definitionsversion:

    1. Abrufen der Gruppenversion.

      • Ersetzen Sie group-id durch die kopierte Id für die Gruppe.

      • Ersetzengroup-version-idmit demLatestVersiondie du für die Gruppe kopiert hast.

      aws greengrass get-group-version \ --group-id group-id \ --group-version-id group-version-id
    2. 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

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

    • Ersetzen Sie group-id durch die kopierte Id für die Gruppe.

    • Ersetzencore-definition-version-arnmit demCoreDefinitionVersionArndie Sie für die Core-Definitionsversion kopiert haben.

    • Ersetzenfunction-definition-version-arnmit demLatestVersionArndie Sie für die neue Funktionsdefinitionsversion kopiert haben.

    • Ersetzenlogger-definition-version-arnmit demLatestVersionArndie Sie für die 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
  2. Kopieren Sie die Version aus der Ausgabe. Dies ist die ID der neuen Gruppenversion.

Schritt 7: Eine Bereitstellung auswählen

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

  1. Stellen Sie sicher, dass dieAWS IoT Greengrasscore 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 in dem Pfad hängt von der AWS IoT Greengrass-Core-Softwareversion ab, die auf Ihrem Core-Gerät installiert ist.

    2. So starten Sie den Daemon:

      cd /greengrass/ggc/core/ sudo ./greengrassd start
  2. Erstellen einer Bereitstellung.

    • Ersetzen Sie group-id durch die kopierte Id für die Gruppe.

    • Ersetzengroup-version-idmit demVersiondie 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
  3. Kopieren Sie die DeploymentId aus der Ausgabe.

  4. Abrufen des Bereitstellungsstatus.

    • Ersetzen Sie group-id durch die kopierte Id für die Gruppe.

    • Ersetzen Sie deployment-id durch die DeploymentId, die Sie für die Bereitstellung kopiert haben.

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

    Wenn der Status lautetSuccesswar die Bereitstellung erfolgreich. Hilfe zur Problembehebung finden Sie unter Fehlerbehebung für AWS IoT Greengrass.

Schritt 8: Testen der Anwendung

DieTransferStreamDie Lambda-Funktion erzeugt simulierte Gerätedaten. Sie schreibt Daten in einen Stream, den der Stream-Manager in den Kinesis-Zieldatenstream exportiert.

  1. In der Amazon Kinesis Kinesis-Konsole unterKinesis Data Streams, wählenMyKinesisStreamaus.

    Anmerkung

    Wenn Sie das Lernprogramm ohne Kinesis-Zieldatenstream ausgeführt haben, suchen Sie in der Protokolldatei 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.

  2. Auf derMyKinesisStream-Seite, wählen SieÜberwachungaus. 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
  3. Entfernen Sie dasTransferStreamLambda-Funktion aus dem Kern.

    1. Folgen Sie Schritt 6: Erstellen einer Gruppenversion, um eine neue Gruppenversion zu erstellen. Entfernen Sie jedoch die --function-definition-version-arn-Option im create-group-version-Befehl. Sie können auch eine Funktionsdefinitionsversion erstellen, dieTransferStreamLambda-Funktion.

      Anmerkung

      Durch das Weglassen des SystemsGGStreamManagerLambda—Funktion aus der bereitgestellten Gruppenversion, deaktivieren Sie die Stream-Managers.

    2. Folgen Sie Schritt 7: Eine Bereitstellung auswählen, 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