Exportation de flux de données vers leAWS Cloud(CLI) - AWS IoT Greengrass

AWS IoT Greengrass Version 1 est entré dans la phase de durée de vie prolongée le 30 juin 2023. Pour plus d'informations, consultez la politique de AWS IoT Greengrass V1 maintenance. Après cette date, AWS IoT Greengrass V1 ne publiera pas de mises à jour fournissant des fonctionnalités, des améliorations, des corrections de bogues ou des correctifs de sécurité. Les appareils qui fonctionnent AWS IoT Greengrass V1 sous tension ne seront pas perturbés et continueront à fonctionner et à se connecter au cloud. Nous vous recommandons vivement de migrer vers AWS IoT Greengrass Version 2, qui ajoute de nouvelles fonctionnalités importantes et prend en charge des plateformes supplémentaires.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exportation de flux de données vers leAWS Cloud(CLI)

Ce didacticiel vous montre comment utiliser leAWS CLIpour configurer et déployer unAWS IoT Greengrassgroupe avec le gestionnaire de flux activé. Le groupe contient une fonction Lambda définie par l'utilisateur qui écrit dans un flux du gestionnaire de flux, ce flux étant ensuite exporté automatiquement vers le groupe deAWS Cloud.

Le gestionnaire de flux facilite et fiabilise l'ingestion, le traitement et l'exportation de flux de données volumineux plus efficaces et plus fiables. Dans ce didacticiel, vous créez uneTransferStreamUne fonction Lambda qui consomme des données IoT. La fonction Lambda utilise la fonctionAWS IoT GreengrassInstaller le kit principal pour créer un flux dans le gestionnaire de flux, puis lire et écrire dans ce flux. Le gestionnaire de flux exporte ensuite le flux vers Kinesis Data Streams. Le schéma suivant illustre ce flux de travail.

Diagramme du flux de travail de gestion des flux.

L'objectif de ce didacticiel est de montrer comment les fonctions Lambda définies par l'utilisateur utilisent leStreamManagerClientdans leAWS IoT GreengrassKit SDK pour interagir avec le gestionnaire de flux. Par souci de simplicité, la fonction Python Lambda dans le cadre de ce didacticiel génère des données d'appareil simulées pour ce didacticiel.

Lorsque vous utilisez leAWS IoT Greengrass, qui inclut les commandes Greengrass dans leAWS CLI, pour créer un groupe, le gestionnaire de flux est désactivé par défaut. Pour activer Stream Manager sur votre cœur, vouscréer une version de définition de fonctionqui inclut le systèmeGGStreamManagerFonction Lambda et une version de groupe qui fait référence à la nouvelle version de définition de fonction. Vous déployez ensuite le groupe.

Prérequis

Pour suivre ce didacticiel, vous devez disposer des éléments suivants :

  • Un groupe Greengrass et un service principal Greengrass (version). Pour plus d'informations sur la création d'un groupe et un service principal Greengrass, consultez pour plus d'informationsCommencer avec AWS IoT Greengrass. Le didacticiel Mise en route comprend également les étapes d'installation du logiciel AWS IoT Greengrass Core.

    Note

    Gestionnaire de flux n'est pas pris en charge sur OpenWrt Distributions.

  • L'environnement d'exécution Java 8 (JDK 8) installé sur l'appareil principal (noyau).

    • Pour les distributions basées sur Debian (y compris Raspbian) ou Ubuntu, exécutez la commande suivante :

      sudo apt install openjdk-8-jdk
    • Pour les distributions basées sur Red Hat (y compris Amazon Linux), exécutez la commande suivante :

      sudo yum install java-1.8.0-openjdk

      Pour de plus amples informations, veuillez consulter How to download and install prebuilt OpenJDK packages sur le site web OpenJDK.

  • AWS IoT GreengrassKit SDK pour Python v1.5.0 ou version ultérieure. Pour utiliserStreamManagerClientdans leAWS IoT GreengrassSDK principal pour Python, vous devez :

    • Installer Python Installer Python sur Installer Python ou

    • Incluez le SDK et ses dépendances dans votre package de déploiement de fonctions Lambda. Des instructions sont fournies dans ce didacticiel.

    Astuce

    Vous pouvez utiliser StreamManagerClient avec Java ou NodeJS. Pour obtenir un exemple de code, consultez leAWS IoT GreengrassKit SDK for JavaetAWS IoT GreengrassKit SDK pour Node.jssur GitHub.

  • Un flux de destination nomméMyKinesisStreamcréé dans Amazon Amazon Kinesis Data Streams dans le mêmeRégion AWSen tant que groupe Greengrass. Pour de plus amples informations, veuillez consulterCréer un fluxdans leAmazon Kinesis Developer Guide.

    Note

    Dans ce didacticiel, le gestionnaire de flux exporte les données vers Kinesis Data Streams, ce qui entraîne des frais sur votreCompte AWS. Pour plus d'informations sur la tarification, consultez leTarification Kinesis Data Streams.

    Pour éviter des frais, vous pouvez exécuter ce didacticiel sans créer de flux de données Kinesis. Dans ce cas, vous consultez les journaux pour voir si le gestionnaire de flux a tenté d'exporter le flux vers Kinesis Data Streams.

  • Une stratégie IAM ajoutée à laRôle de groupe Greengrassqui permet aukinesis:PutRecordsaction sur le flux de données cible, comme illustré dans l'exemple suivant :

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:PutRecords" ], "Resource": [ "arn:aws:kinesis:region:account-id:stream/MyKinesisStream" ] } ] }
  • L'AWS CLI installée et configurée sur votre ordinateur. Pour de plus amples informations, veuillez consulterInstallation deAWS Command Line InterfaceetConfiguration deAWS CLIdans leAWS Command Line InterfaceGuide de l'utilisateur.

     

    Les exemples de commandes de ce didacticiel sont écrits pour Linux et d'autres systèmes Unix. Si vous utilisez Windows, consultezSpécification des valeurs des paramètres pour l'AWSInterface de ligne de commandepour plus d'informations sur les différences de syntaxe.

    Si la commande contient une chaîne JSON, le didacticiel fournit un exemple qui possède le fichier JSON sur une seule ligne. Sur certains systèmes, il peut être plus efficace de modifier et exécuter des commandes à l'aide de ce format.

 

Le didacticiel contient les étapes détaillées suivantes :

Le didacticiel devrait prendre environ 30 minutes.

Étape 1 : Créer un package de déploiement de fonction Lambda

Dans cette étape, vous créez un package de déploiement de fonction Lambda qui contient le code de fonction Python et les dépendances. Vous téléchargez ce package ultérieurement lorsque vous créez lefonction Lambda dansAWS Lambda. La fonction Lambda utilise la fonctionAWS IoT GreengrassInstaller le kit principal pour créer des flux locaux et interagir avec ces derniers.

Note

Vos fonctions Lambda définies par l'utilisateur doivent utiliser leAWS IoT GreengrassKit SDK Corepour interagir avec le gestionnaire de flux. Pour de plus amples informations sur les conditions requises pour le gestionnaire de flux Greengrass, veuillez consulter les conditions requises pour le gestionnaire de flux Greengrass.

  1. Télécharger leAWS IoT GreengrassKit SDK pour Pythonv1.5.0 ou version ultérieure.

  2. Décompressez le package téléchargé pour obtenir le kit SDK. Le kit SDK est représenté par le dossier greengrasssdk.

  3. Installer Installer Installer les dépendances de package Installer les dépendances de package à inclure dans le kit de déploiement de votre fonction Lambda.

    1. Accédez au répertoire SDK qui contient le fichier requirements.txt. Ce fichier répertorie les dépendances.

    2. Installez les dépendances du kit SDK. Par exemple, exécutez la commande pip suivante pour les installer dans le répertoire en cours :

      pip install --target . -r requirements.txt
  4. Enregistrez la fonction de code Python suivante dans un fichier local nommé transfer_stream.py.

    Astuce

    Pour obtenir un exemple de code qui utilise Java et NodeJS, consultez leAWS IoT GreengrassKit SDK for JavaetAWS IoT GreengrassKit SDK pour Node.jssur 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())
  5. Compressez les éléments suivants dans un fichier nommé transfer_stream_python.zip. Il s'agit du package de déploiement de votre fonction Lambda.

    • transfer_stream.py. Logique d'application.

    • greengrasssdk. Installer la bibliothèque requise pour toutes les fonctions Python Greengrass Lambda qui publient des messages MQTT.

      Opérations du gestionnaire de fluxsont disponibles dans la version 1.5.0 ou ultérieure duAWS IoT GreengrassKit SDK pour Python.

    • Les dépendances que vous avez installées pour leAWS IoT GreengrassKit SDK pour Python (par exemple, lecbor2annuaires).

    Lorsque vous créez le fichier zip, incluez uniquement ces éléments, et non le dossier conteneur.

Étape 2 : Création d'une fonction Lambda

  1. Créez un rôle IAM afin de pouvoir transmettre l'ARN du rôle lorsque vous créez un rôle IAM pour vous permettre de transmettre l'ARN du rôle

    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"}]}'
    Note

    AWS IoT Greengrassn'utilise pas ce rôle car les autorisations pour vos fonctions Greengrass Lambda sont spécifiées dans le rôle de groupe Greengrass n'utilise pas ce rôle de groupe. Dans le cadre de ce didacticiel, vous créez un rôle vide.

  2. Copiez la Arn à partir de la sortie.

  3. Utilisez l'API AWS Lambda pour créer la fonction TransferStream. La commande suivante suppose que le fichier ZIP se trouve dans le répertoire actuel.

    • Remplacez role-arn par l'Arn que vous avez copié.

    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. Publiez une version de la fonction.

    aws lambda publish-version --function-name TransferStream --description 'First version'
  5. Créez un alias pour la version publiée.

    Les groupes Greengrass peuvent référencer une fonction Lambda par alias (recommandé) ou par version. L'utilisation d'un alias facilite la gestion des mises à jour de code, car vous n'avez pas besoin de changer votre table d'abonnement ou la définition de groupe lorsque le code de fonction est mis à jour. À la place, il vous suffit de pointer l'alias vers la nouvelle version de fonction.

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

    AWS IoT Greengrassne prend pas en charge les alias Lambda pour$LATESTversions.

  6. Copiez la AliasArn à partir de la sortie. Vous utilisez cette valeur lorsque vous configurez la fonction pour AWS IoT Greengrass.

Maintenant, vous êtes prêt à configurer la fonction pour AWS IoT Greengrass.

Étape 3 : Créer une version et une définition de fonction

Cette étape crée une version de définition de fonction qui fait référence au système.GGStreamManagerFonction Lambda et fonction définie par l'utilisateurTransferStreamfonction Lambda. Pour activer le gestionnaire de flux lorsque vous utilisez leAWS IoT Greengrass, la version de votre définition de fonction doit inclure leGGStreamManager.

  1. Créez une définition de fonction avec une version initiale qui contient les fonctions système et les fonctions Lambda définies par l'utilisateur.

    La version de définition suivante active le gestionnaire de flux avec leréglages des paramètres. Pour configurer des paramètres personnalisés, vous devez définir des variables d'environnement pour les paramètres du gestionnaire de flux correspondants. Pour obtenir un exemple, veuillez consulter .Pour activer, désactiver ou configurer le gestionnaire de flux (interface de ligne de commande).AWS IoT Greengrassutilise les paramètres par défaut pour tous les paramètres qui sont omis.MemorySizedoit être au moins128000.Pinneddoit être défini surtrue.

    Note

    UNlongue durée(ouépinglé) La fonction Lambda démarre automatiquement aprèsAWS IoT Greengrassdémarre et continue à fonctionner dans son propre conteneur. Cela contraste avec unsur demandeFonction Lambda, qui démarre quand elle est appelée et qui s'arrête lorsqu'il n'y a plus de tâches à exécuter. Pour plus d'informations, consultez Configuration du cycle de vie pour les fonctions Greengrass Lambda.

    • Remplacezarbitrary-function-idavec un nom pour la fonction, tel questream-manager.

    • Remplacezalias ARNavec leAliasArnque vous avez copié lorsque vous avez créé l'alias de l'TransferStreamfonction Lambda.

     

    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}}]}'
    Note

    Timeout est requis par la version de définition de fonction, mais GGStreamManager ne l'utilise pas. Pour plus d'informations surTimeoutet d'autres paramètres au niveau du groupe, voirContrôle de l'exécution des fonctions Greengrass Lambda à l'aide d'une configuration spécifique au groupe.

  2. Copiez la LatestVersionArn à partir de la sortie. Vous utilisez cette valeur pour ajouter la version de définition de fonction à la version de groupe que vous déployez pour le noyau.

Étape 4 : Créer une définition et une version de l'enregistreur

Configurez les paramètres de journalisation du groupe. Dans le cadre de ce didacticiel, vous configurezAWS IoT Greengrassles composants système, les fonctions Lambda définies par l'utilisateur et les connecteurs pour écrire des journaux dans le système de fichiers de l'appareil principal (noyau). Vous pouvez utiliser les journaux pour résoudre les problèmes que vous rencontrez. Pour plus d'informations, consultez Surveillance avec les journaux AWS IoT Greengrass.

  1. Créez une définition d'enregistreur qui inclut une version initiale.

    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. Copiez l'élément LatestVersionArn de la définition de l'enregistreur à partir de la sortie. Vous utilisez cette valeur pour ajouter la version de la définition de l'enregistreur à la version de groupe que vous déployez sur le noyau.

Étape 5 : Obtenir l'ARN de votre version de définition du noyau

Obtenez l'ARN de la version de définition du noyau pour ensuite l'ajouter à votre nouvelle version de groupe. Pour que vous puissiez déployer une version de groupe, cette dernière doit référencer une version de définition du noyau contenant exactement un noyau.

  1. Obtenez les ID du groupe et de la version de groupe Greengrass cible. Cette procédure suppose qu'il s'agit du dernier groupe et de la dernière version de groupe les plus récents La requête suivante renvoie le groupe créé le plus récemment.

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

    Vous pouvez également procéder à une interrogation par nom. Les noms de groupe ne devant pas nécessairement être uniques, plusieurs groupes peuvent être renvoyés.

    aws greengrass list-groups --query "Groups[?Name=='MyGroup']"
    Note

    Vous pouvez également trouver ces valeurs dans leAWS IoTconsole L'ID du groupe s'affiche sur la page Paramètres du groupe. Les ID de version de groupe sont affichés dans leDéploiementsOnglet.

  2. Copiez l'Id du groupe cible à partir de la sortie. Vous utilisez cela pour obtenir la version de définition du noyau et lorsque vous déployez le groupe.

  3. Copiez l'élément LatestVersion à partir de la sortie (ID de la dernière version ajoutée au groupe). Vous utilisez cela pour obtenir la version de la définition du noyau.

  4. Obtenir l'ARN de la version de la définition du noyau :

    1. Obtenez la version de groupe.

      • Remplacez group-id par l'Id que vous avez copié pour le groupe.

      • Remplacezgroup-version-idavec leLatestVersionque vous avez copiés pour le groupe.

      aws greengrass get-group-version \ --group-id group-id \ --group-version-id group-version-id
    2. Copiez la CoreDefinitionVersionArn à partir de la sortie. Vous utilisez cette valeur pour ajouter la version de définition du noyau à la version de groupe que vous déployez sur le noyau.

Étape 6 : Créer une version de groupe

Maintenant, vous êtes prêt à créer une version de groupe contenant tous les éléments que vous souhaitez déployer. Pour ce faire, vous devez créer une version de groupe qui fait référence à la version cible de chaque type de composant. Pour ce didacticiel, vous incluez une version de définition du noyau, une version de définition de fonction et une version de définition de l'enregistreur.

  1. Créer une version de groupe.

    • Remplacez group-id par l'Id que vous avez copié pour le groupe.

    • Remplacezcore-definition-version-arnavec leCoreDefinitionVersionArnque vous avez copié pour la version de définition du noyau.

    • Remplacezfunction-definition-version-arnavec leLatestVersionArnque vous avez copié pour votre nouvelle version de définition de fonction.

    • Remplacezlogger-definition-version-arnavec leLatestVersionArnque vous avez copié pour votre nouvelle version de définition de l'enregistreur.

    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. Copiez la Version à partir de la sortie. Il s'agit de l'ID de la nouvelle version de groupe.

Étape 7 : Créer un déploiement

Déployer le groupe sur l'appareil principal (noyau)

  1. Vérifiez que leAWS IoT Greengrasscore est en cours d'exécution. Dans la fenêtre de terminal de votre Raspberry Pi, exécutez les commandes suivantes, si nécessaire.

    1. Pour vérifier si le démon est en cours d'exécution :

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

      Si la sortie contient une entrée root pour /greengrass/ggc/packages/ggc-version/bin/daemon, le démon est en cours d'exécution.

      Note

      La version du chemin d'accès dépend de la version du logiciel AWS IoT Greengrass Core installée sur votre appareil principal.

    2. Pour démarrer le démon :

      cd /greengrass/ggc/core/ sudo ./greengrassd start
  2. Créer un déploiement.

    • Remplacez group-id par l'Id que vous avez copié pour le groupe.

    • Remplacezgroup-version-idavec leVersionque vous avez copié pour la nouvelle version du groupe.

    aws greengrass create-deployment \ --deployment-type NewDeployment \ --group-id group-id \ --group-version-id group-version-id
  3. Copiez la DeploymentId à partir de la sortie.

  4. Obtenir le statut du déploiement.

    • Remplacez group-id par l'Id que vous avez copié pour le groupe.

    • Remplacez deployment-id par l'DeploymentId que vous avez copié pour le déploiement.

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

    Si le statut estSuccess, le déploiement a réussi. Pour bénéficier d'une aide à la résolution des problèmes, consultez Résolution des problèmes de AWS IoT Greengrass.

Étape 8 : Tester l'application

LeTransferStreamLa fonction Lambda génère des données d'appareil simulées. Elle écrit des données dans un flux que le gestionnaire de flux exporte vers le flux de données Kinesis cible.

  1. Dans la console Amazon Kinesis, sousKinesis data flux de données, choisissezMyKinesisStream.

    Note

    Si vous avez exécuté le didacticiel sans flux de données Kinesis cible, recherchez dans le fichier journal le gestionnaire de flux (GGStreamManager). S'il contient export stream MyKinesisStream doesn't exist dans un message d'erreur, le test est réussi. Cette erreur signifie que le service a essayé d'effectuer une exportation vers le flux mais que le flux n'existe pas.

  2. Dans la pageMyKinesisStreampage, choisissezSurveillance. Si le test réussit, vous devriez voir des données dans les graphiques PutRecords . Selon votre connexion, l'affichage des données peut prendre une minute.

    Important

    Lorsque vous avez terminé le test, supprimez le flux de données Kinesis pour éviter d'entraîner des frais supplémentaires.

    Vous pouvez aussi exécuter la commande suivante pour arrêter le démon Greengrass. Cela empêche le noyau d'envoyer des messages jusqu'à ce que vous soyez prêt à continuer le test.

    cd /greengrass/ggc/core/ sudo ./greengrassd stop
  3. Supprimez leTransferStreamUne fonction Lambda depuis le cœur.

    1. Suivez l'Étape 6 : Créer une version de groupe pour créer une nouvelle version de groupe, mais supprimez l'option --function-definition-version-arn dans la commande create-group-version. Vous pouvez également créer une version de définition de fonction qui n'inclut pas leTransferStreamfonction Lambda.

      Note

      En omettant le systèmeGGStreamManagerInstaller la fonction Lambda à partir de la version du groupe déployé, vous désactivez la gestion de flux sur le noyau.

    2. Suivez l'Étape 7 : Créer un déploiement pour déployer la nouvelle version du groupe.

Pour afficher les informations de journalisation ou résoudre les problèmes liés aux flux, recherchez les fonctions GGStreamManager et TransferStream dans les journaux. Vous devez disposer d'autorisations root pour pouvoir lire les journaux AWS IoT Greengrass sur le système de fichiers.

  • TransferStream écrit les entrées de journal dans greengrass-root/ggc/var/log/user/region/account-id/TransferStream.log.

  • GGStreamManager écrit les entrées de journal dans greengrass-root/ggc/var/log/system/GGStreamManager.log.

Si vous avez besoin de plus d'informations de dépannage, vous pouvez définir le niveau de journalisation Lambda sur DEBUG, puis créer et déployer une nouvelle version de groupe.

Consulter aussi