Testez des fonctions Lambda à longue durée de vie - 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.

Testez des fonctions Lambda à longue durée de vie

Une fonction Lambda de longue durée démarre automatiquement lorsque AWS IoT Greengrass le noyau 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 consulter le code dans la AWS Lambda console ou dans le SDK AWS IoT Greengrass Core pour Python sur GitHub.

Au cours de cette étape, vous créez des abonnements qui autorisent la fonction Lambda et AWS IoT l'échange de messages MQTT. Ensuite, vous déployez le groupe et testez la fonction.

  1. Sur la page de configuration du groupe, choisissez Abonnements, puis sélectionnez Ajouter.

  2. Sous Type de source, choisissez la fonction Lambda, puis HelloWorldGreengrass_ _Counter.

  3. Sous Type de cible, choisissez Service, puis IoT Cloud.

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

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

    Cet abonnement unique va dans un seul sens : de la fonction Greengrass_HelloWorld_Counter Lambda à. AWS IoT Pour invoquer (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. Cet abonnement permet à la fonction Lambda de recevoir des messages de. AWS IoT Vous utilisez cet abonnement lorsque vous envoyez un message depuis la AWS IoT console qui appelle la fonction.

    • Pour la source, choisissez Service, puis IoT Cloud.

    • Pour la cible, choisissez la fonction Lambda, puis HelloWorldGreengrass_ _Counter.

    • 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 daemon Greengrass est en cours d'exécution, comme décrit dans. Déploiement des configurations cloud sur un appareil Core

  8. Sur la page de configuration du groupe, choisissez Deploy.

  9. Une fois le déploiement terminé, revenez à la page d'accueil de la AWS IoT console et choisissez Test.

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

    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é la fonction Greengrass_HelloWorld_Counter Lambda pour qu'elle soit invoquée lorsqu'elle reçoit un message MQTT sur le sujet. hello/world/counter/trigger

    L'abonnement Greengrass_ HelloWorld _Counter to IoT Cloud permet à la fonction d'envoyer des messages AWS IoT sur le sujet. hello/world/counter L'abonnement IoT Cloud to Greengrass_ HelloWorld _Counter permet d'envoyer des messages AWS IoT à la fonction sur le sujet. hello/world/counter/trigger

  12. Pour tester le cycle de vie à long terme, appelez la fonction Lambda en publiant un message dans le sujet. hello/world/counter/trigger Vous pouvez utiliser le message par défaut.

    Message Hello from AWS IoT console envoyé par défaut hello/world/counter/trigger avec le bouton Publier dans le sujet surligné.
    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 depuis le SDK AWS IoT Greengrass principal pour Python sur 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'invocations est indiqué dans les messages envoyés par la fonction Lambda. Comme le gestionnaire de fonctions inclut un cycle de veille de 20 secondes (time.sleep(20)), le déclenchement répété du gestionnaire met en file d'attente les réponses provenant du noyau. AWS IoT Greengrass

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