Test des fonctions Lambda longue durée - 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.

Test des fonctions Lambda longue durée

UNlongue duréeLa fonction Lambda démarre automatiquement lorsqueAWS IoT GreengrassCore démarre et s'exécute dans un seul conteneur (ou sandbox). Les variables et la logique de prétraitement définies à l'extérieur du gestionnaire de fonctions sont conservées pour chaque appel du gestionnaire de fonctions. Plusieurs appels du gestionnaire de fonctions sont placés en file d'attente jusqu'à ce que les appels antérieurs aient été exécutés.

Le code greengrassHelloWorldCounter.py utilisé dans ce module définit une variable my_counter en dehors du gestionnaire de fonctions.

Note

Vous pouvez afficher le code dans laAWS Lambdaou dans laAWS IoT GreengrassSDK de Core pour Pythonsur GitHub.

Au cours de cette étape, vous créez des abonnements qui permettent à la fonction LambdaAWS IoTpour échanger des messages MQTT. Ensuite, vous déployez le groupe et testez la fonction.

  1. Sur la page de configuration de groupe, choisissezSubscriptions, puisAddition.

  2. UnderType de source, choisissezFonction Lambda, puisHerbe verte_HelloWorld_Compteur.

  3. UnderTarget type (Type de cible), choisissezService, choisissezCloud IoT.

  4. Pour Filtre de rubrique, tapez hello/world/counter.

  5. Choisissez Create subscription (Créer un abonnement).

    L'abonnement unique va dans une seule direction : à partir duGreengrass_HelloWorld_Counterfonction Lambda pourAWS IoT. Pour appeler (ou déclencher) cette fonction Lambda depuis le cloud, vous devez créer un abonnement dans le sens inverse.

  6. Suivez les étapes 1 à 5 pour ajouter un autre abonnement utilisant les valeurs suivantes. L'abonnement autorise la fonction Lambda à recevoir des messages d'AWS IoT. Vous utilisez cet abonnement lorsque vous envoyez un message à partir duAWS IoTconsole qui appelle la fonction.

    • Pour la source, choisissezService, puisCloud IoT.

    • Pour la cible, choisissezFonction Lambda, puisHerbe verte_HelloWorld_Compteur.

    • Pour le filtre de rubriques, tapez hello/world/counter/trigger.

    L'extension /trigger est utilisée dans ce filtre de rubriques, car vous avez créé deux abonnements et vous ne souhaitez pas qu'ils interfèrent l'un avec l'autre.

  7. Assurez-vous que le démon Greengrass est en cours d'exécution comme décrit dansDéploiement des configurations cloud sur un appareil Core.

  8. Sur la page de configuration de groupe, choisissezDéploiement.

  9. Une fois que votre déploiement est terminé, revenez à laAWS IoTpage d'accueil de la console et choisissezTest.

  10. Configurez les champs suivants :

    • Pour Rubrique d'abonnement, entrez hello/world/counter.

    • Pour Qualité de service, choisissez 0.

    • Pour Affichage de la charge utile MQTT, choisissez Afficher les charges utiles sous forme de chaînes (plus de précision).

  11. Choisissez Subscribe.

    Contrairement à la Partie 1 de ce module, vous ne devriez pas voir de messages après vous être abonné à hello/world/counter. En effet, le code greengrassHelloWorldCounter.py qui publie dans la rubrique hello/world/counter est à l'intérieur du gestionnaire de fonctions, qui s'exécute uniquement lorsque la fonction est appelée.

    Dans ce module, vous avez configuréGreengrass_HelloWorld_Counterfonction Lambda à appeler lorsqu'elle reçoit un message MQTT sur lahello/world/counter/triggerrubrique.

    LeHerbe verte_HelloWorld_CompteurpourCloud IoTL'abonnement autorise la fonction à d'envoyer des messages àAWS IoTsur lehello/world/counterrubrique. LeCloud IoTpourHerbe verte_HelloWorld_Compteurl'abonnement permetAWS IoTpour envoyer des messages à la fonction sur lahello/world/counter/triggerrubrique.

  12. Pour tester le cycle de vie longue durée de vie, appelez la fonction Lambda en publiant un message dans lahello/world/counter/triggerrubrique. Vous pouvez utiliser le message par défaut.

    Par défaut Hello fromAWS IoTMessage de console envoyé à hello/world/counter/trigger avec le bouton Publish to topic (Publier dans la rubrique).
    Note

    La fonction Greengrass_HelloWorld_Counter ignore le contenu des messages reçus. La fonction exécute simplement le code figurant dans function_handler, qui envoie un message à la rubrique hello/world/counter. Vous pouvez consulter ce code à partir duAWS IoT GreengrassSDK de Core pour Pythonsur GitHub.

Chaque fois qu'un message est publié dans la rubrique hello/world/counter/trigger, la variable my_counter est incrémentée. Ce nombre d'appels est indiqué dans les messages envoyés à partir de la fonction Lambda. Comme le gestionnaire de la fonction inclut un cycle de veille de 20 secondes (time.sleep(20)), le déclenchement répété du gestionnaire place les réponses en file d'attente depuis leAWS IoT GreengrassCœur.

Capture d'écran illustrant l'incrémentation du nombre d'appels de 1, 2 et 3.