Configuration de l'accès aux ressources locales à l'aide de l'AWS Management Console - 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.

Configuration de l'accès aux ressources locales à l'aide de l'AWS Management Console

Cette fonction est disponible uniquement pourAWS IoT GreengrassCore v1.3 et versions ultérieures.

Vous pouvez configurer des fonctions Lambda pour accéder de façon sécurisée aux ressources locales sur l'appareil Greengrass principal hôte. Les ressources locales font référence aux bus et périphériques qui se trouvent physiquement sur l'hôte, ou aux volumes du système de fichiers sur le système d'exploitation hôte. Pour en savoir plus, notamment les exigences et contraintes, consultez Accédez à des ressources locales avec des fonctions et des connecteurs Lambda.

Ce didacticiel explique comment utiliserAWS Management Consolepour configurer l'accès aux ressources locales qui sont présentes sur unAWS IoT Greengrassappareil noyau. Il contient les étapes détaillées suivantes :

Pour obtenir un didacticiel qui utilise AWS Command Line Interface, consultez Comment configurer l'accès aux ressources locales à l'aide de l'interface de ligne de AWS commande.

Prérequis

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

  • Un groupe Greengrass et un appareil principal (noyau) Greengrass (version 1.3 ou ultérieure). Pour savoir comment créer un groupe ou un service principal Greengrass, consultez Commencer avec AWS IoT Greengrass.

  • Répertoires suivants créés sur l'appareil Greengrass principal :

    • /src/LRAtest

    • /dest/LRAtest

    Le propriétaire du groupe de ces répertoires doit disposer d'un accès en lecture et en écriture aux répertoires. Par exemple, pour accorder l'accès, vous pouvez utiliser la commande suivante :

    sudo chmod 0775 /src/LRAtest

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

Au cours de cette étape, vous créez le package de déploiement d'une fonction Lambda, qui est un fichier ZIP contenant le code et les dépendances de la fonction. Vous téléchargez également le kit SDK d'AWS IoT Greengrass Core à inclure dans le package en tant que dépendance.

  1. Sur votre ordinateur, copiez le script Python suivant dans un fichier local nommé lraTest.py. Il s'agit de la logique d'application pour la fonction Lambda.

    # Demonstrates a simple use case of local resource access. # This Lambda function writes a file test to a volume mounted inside # the Lambda environment under destLRAtest. Then it reads the file and # publishes the content to the AWS IoT LRAtest topic. import sys import greengrasssdk import platform import os import logging # Setup logging to stdout logger = logging.getLogger(__name__) logging.basicConfig(stream=sys.stdout, level=logging.DEBUG) # Create a Greengrass Core SDK client. client = greengrasssdk.client('iot-data') volumePath = '/dest/LRAtest' def function_handler(event, context): try: client.publish(topic='LRA/test', payload='Sent from AWS IoT Greengrass Core.') volumeInfo = os.stat(volumePath) client.publish(topic='LRA/test', payload=str(volumeInfo)) with open(volumePath + '/test', 'a') as output: output.write('Successfully write to a file.') with open(volumePath + '/test', 'r') as myfile: data = myfile.read() client.publish(topic='LRA/test', payload=data) except Exception as e: logger.error('Failed to publish message: ' + repr(e)) return
  2. À partir de laAWS IoT GreengrassKit SDK Corepage de téléchargement, téléchargez leAWS IoT GreengrassSDK Core pour Python sur votre ordinateur.

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

  4. Compressez les éléments suivants dans un fichier nommé lraTestLambda.zip :

    • lraTest.py. Logique d'application.

    • greengrasssdk. Bibliothèque requise pour toutes les fonctions Lambda Python.

    LelraTestLambda.zipest le package de déploiement de votre fonction Lambda. Vous êtes maintenant prêt à créer une fonction Lambda et à télécharger le package de déploiement.

Étape 2 : Créer et publier une fonction Lambda

Au cours de cette étape, vous utilisez lesAWS Lambdapour créer une fonction Lambda et pour la configurer afin qu'elle utilise votre package de déploiement. Vous publiez ensuite une version de fonction et créez un alias.

Créez d'abord la fonction Lambda.

  1. Dans AWS Management Console, choisissez Services et ouvrez la console AWS Lambda.

  2. ChoisissezFonctions.

  3. ChoisissezCréation de fonctionpuis choisissezCréer à partir de zéro.

  4. Dans la section Informations de base, spécifiez les valeurs suivantes :

    1. Sous Nom de la fonction, saisissez TestLRA.

    2. Pour Runtime, sélectionnez Python 3.7.

    3. PourAutorisations, conservez le paramètre par défaut. Cela crée un rôle d'exécution qui accorde des autorisations Lambda de base. Ce rôle n'est pas utilisé parAWS IoT Greengrass.

  5. Sélectionnez Create function (Créer une fonction).

    Page Créer une fonction avec l'option Créer la fonction mise en évidence.

     

  6. Chargez le package de déploiement de votre fonction Lambda et enregistrez le gestionnaire.

    1. Dans la pageCodeonglet, sousCode source, choisissezChargement à partir de. Dans le menu déroulant, choisissezfichier .zip.

      Le menu déroulant Charger depuis avec le fichier .zip en surbrillance.
    2. ChoisissezCharger, puis choisissez votrelraTestLambda.zippackage de déploiement. Ensuite, choisissez Enregistrer.

    3. Dans la pageCodepour la fonction, sousParamètres d'exécution, choisissezModifier, puis entrez les valeurs suivantes.

      • Pour Runtime, sélectionnez Python 3.7.

      • Pour Handler, entrez lraTest.function_handler.

    4. Choisissez Save (Enregistrer).

      Note

      LeTestsur leAWS Lambdane fonctionne pas avec cette fonction. LeAWS IoT GreengrassLe SDK principal ne contient pas de modules nécessaires pour exécuter vos fonctions Greengrass Lambda indépendamment dans leAWS Lambdaconsole Ces modules (par exemple,greengrass_common) sont fournis aux fonctions après leur déploiement dans votre cœur Greengrass.

    Publiez ensuite la première version de votre fonction Lambda. Puis, créez un alias pour la version.

    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 votre définition de groupe lorsque le code de fonction est mis à jour. Au lieu de cela, il vous suffit de pointer l'alias vers la nouvelle version de fonction.

  7. Dans Actions, choisissez Publier une nouvelle version.

  8. Dans Description de la version, saisissez First version, puis choisissez Publish.

  9. Sur la page de configuration TestLRA: 1, dans le menu Actions, choisissez Create alias (Créer un alias).

  10. Dans la pageCréer un aliaspage, pourNom, saisisseztest. Pour Version, entrez 1.

    Note

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

  11. Sélectionnez Create (Créer).

    Page Créer un alias avec l'option Créer mise en évidence.

    Vous pouvez désormais ajouter la fonction Lambda à votre groupe Greengrass.

Étape 3 : Ajouter la fonction Lambda au groupe Greengrass

Au cours de cette étape, vous ajoutez la fonction à votre groupe et configurez le cycle de vie de la fonction.

Ajoutez d'abord la fonction Lambda à votre groupe Greengrass.

  1. DansAWS IoTVolet de navigation de la consoleGérer, DéveloppezAppareils Greengrass, puis choisissezGroups (V1).

  2. Choisissez le groupe Greengrass auquel vous souhaitez ajouter la fonction Lambda.

  3. Sur la page de configuration de groupe, choisissez leFonctions LambdaOnglet.

  4. UNDERFonctions Lambdasection, choisissezAddition.

  5. Dans la pageFonction Lambda, choisissez l'Fonction Lambda. Sélectionnez TestLRA.

  6. Cliquez sur l'ongletVersion de la fonction Lambda.

  7. DansConfiguration de fonction Lambdasection, sélectionnezUtilisateur et groupe du systèmeetConteneurisation de fonction Lambda.

     

    Configurez ensuite le cycle de vie de la fonction Lambda.

  8. Pour Timeout (Délai), sélectionnez 30 secondes.

    Important

    Les fonctions Lambda qui utilisent des ressources locales (comme décrit dans cette procédure) doivent s'exécuter dans un conteneur Greengrass. Sinon, le déploiement échoue si vous essayez de déployer la fonction. Pour plus d'informations, consultez Conteneurisation.

  9. Au bas de la page, choisissezFonction Lambda.

Étape 4 : Ajouter une ressource locale au groupe Greengrass

Au cours de cette étape, vous ajoutez une ressource de volume locale au groupe Greengrass et accordez à la fonction un accès en lecture et en écriture à la ressource. Une ressource locale a une portée au niveau du groupe. Vous pouvez accorder des autorisations pour n'importe quelle fonction Lambda dans le groupe pour accéder à la ressource.

  1. Sur la page de configuration de groupe, choisissez leRessourcesOnglet.

  2. SousDes ressources localessection, choisissezAddition.

  3. Dans la pageAjouter une ressource locale, utilisez les valeurs suivantes.

    1. Sous Resource Name (Nom de la ressource), entrez testDirectory.

    2. Pour Type de ressource, choisissez Volume.

    3. PourChemin de l'appareil local, saisissez/src/LRAtest. (Ce chemin doit exister sur le système d'exploitation hôte.)

      Le chemin de périphérique local est le chemin absolu local de la ressource sur le système de fichiers de l'appareil principal. Cet emplacement est en dehors du conteneur dans lequel la fonction s'exécute. Le chemin ne peut pas commencer par /sys.

    4. Pour Destination path (Chemin d'accès de destination), entrez /dest/LRAtest. (Ce chemin doit exister sur le système d'exploitation hôte.)

      Le chemin de destination est le chemin absolu de la ressource dans l'espace de noms Lambda. Cet emplacement est dans le conteneur dans lequel la fonction s'exécute.

    5. UNDERPropriétaire du groupe système et autorisation d'accès aux fichiers, sélectionnezAjouter automatiquement les autorisations de système de fichiers du groupe de système qui possède la ressource.

      LePropriétaire du groupe système et autorisation d'accès aux fichiersvous permet d'accorder au processus Lambda des autorisations supplémentaires d'accès aux fichiers au processus Lambda. Pour plus d'informations, consultez Autorisation d'accès fichier pour le propriétaire du groupe.

  4. Choisissez Add resource (Ajouter ressource). La page Resources contient la nouvelle ressource testDirectory.

Étape 5 : Ajouter des abonnements au groupe Greengrass

Au cours de cette étape, vous ajoutez deux abonnements au groupe Greengrass. Ces abonnements permettent une communication bidirectionnelle entre la fonction Lambda etAWS IoT.

Créez d'abord un abonnement pour la fonction Lambda afin d'envoyer des messages àAWS IoT.

  1. Sur la page de configuration de groupe, choisissez leSubscriptionsOnglet.

  2. Choisissez Add (Ajouter).

  3. Dans la pageCréer un abonnement, configurez la source et la cible comme suit :

    1. PourType de source, choisissezFonction Lambda, puis choisissezTestLRA.

    2. PourTarget type (Type de cible), choisissezService, puis choisissezCloud IoT.

    3. PourFiltre de rubriques, saisissezLRA/test, puis choisissezCréer un abonnement.

  4. La page Abonnements affiche le nouvel abonnement.

     

    Configurez ensuite un abonnement qui appelle la fonction depuis AWS IoT.

  5. Sur la page Abonnements, choisissez Ajouter un abonnement.

  6. Sur la page Sélectionnez la source et la cible, configurez la source et la cible comme suit :

    1. PourType de source, choisissezFonction Lambda, puis choisissezCloud IoT.

    2. PourTarget type (Type de cible), choisissezService, puis choisissezTestLRA.

    3. Sélectionnez Suivant.

  7. Dans la page Filtrer vos données avec une rubrique, dans Filtre de rubrique, saisissez invoke/LRAFunction, puis choisissez Suivant.

  8. Choisissez Finish (Terminer). La page Abonnements affiche les deux abonnements.

Étape 6 : Déploiement de l'AWS IoT Greengrassgroupe

Au cours de cette étape, vous déployez la version actuelle de la définition de groupe.

  1. Assurez-vous que lesAWS 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/1.11.6/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. Sur la page de configuration de groupe, choisissezDéploiement.

    Note

    Le déploiement échoue si vous exécutez votre fonction Lambda sans conteneurisation et essayez d'accéder aux ressources locales attachées.

  3. Si vous y êtes invité, sur leFonction Lambdaonglet, sousFonctions Lambda du système, sélectionnezDétecteur IP, puisModifier, puisDétecter automatiquement.

    Les appareils peuvent ainsi acquérir automatiquement des informations de connectivité pour le noyau, telles que l'adresse IP, le DNS et le numéro de port. La détection automatique est recommandée, mais AWS IoT Greengrass prend également en charge les points de terminaison spécifiés manuellement. Vous êtes uniquement invité à indiquer la méthode de découverte lors du déploiement initial du groupe.

    Note

    Si vous y êtes invité, autorisez la création duRôle de service Greengrasset associez-le à votreCompte AWSdans l'actuelRégion AWS. Ce rôle permetAWS IoT Greengrasspour accéder à vos ressources dansAWSServices .

    La page Déploiements indique l'horodatage, l'ID de version et l'état du déploiement. Une fois cette procédure exécutée, le statut du déploiement estTerminé.

    Pour bénéficier d'une aide à la résolution des problèmes, consultez Résolution des problèmes de AWS IoT Greengrass.

Tester l'accès aux ressources locales

À présent, vous pouvez vérifier si l'accès aux ressources locales est correctement configuré. Pour effectuer le test, abonnez-vous à la rubrique LRA/test et publiez n'importe quel message dans la rubrique invoke/LRAFunction. Le test réussit si la fonction Lambda envoie la charge utile attendue àAWS IoT.

  1. À partir de laAWS IoTmenu de navigation de la console, sousTest, choisissezClient de test MQTT.

  2. UNDERS'abonner à une rubrique, pourFiltre de rubriques, saisissezLRA/test.

  3. UNDERInformations supplémentaires, pourAffichage de la charge utile MQTT, sélectionnezAffichage des charges utiles sous forme de chaînes.

  4. Choisissez Subscribe. Votre fonction Lambda publie dans la rubrique LRA/test.

    Page Abonnements avec l'option S'abonner à la rubrique mise en évidence.
  5. UNDERPublier dans une rubrique, dans leNom de la rubriqueentrerinvoke/LRAFunction, puis choisissezPublierpour appeler votre fonction Lambda. Le test réussit si la page affiche les trois charges utiles de messages de la fonction.

    Page Abonnements avec la rubrique invoke/LRAFunction et l'option Publier dans la rubrique mises en évidence, et résultats du test avec les données de message.

Le fichier de test créé par la fonction Lambda se trouve dans le/src/LRAtestrépertoire sur l'appareil principal Greengrass. Bien que la fonction Lambda écrit dans un fichier dans le/dest/LRAtest, ce fichier est visible dans l'espace de noms Lambda uniquement. Vous ne pouvez pas le voir dans un espace de noms Linux régulier. Toute modification du chemin de destination est néanmoins pris en compte dans le chemin source sur le système de fichiers.

Pour bénéficier d'une aide à la résolution des problèmes, consultez Résolution des problèmes de AWS IoT Greengrass.