

Avis de fin de support : le 7 octobre 2026, AWS le support de. AWS IoT Greengrass Version 1 Après le 7 octobre 2026, vous ne pourrez plus accéder aux AWS IoT Greengrass V1 ressources. Pour plus d'informations, rendez-vous sur [Migrer depuis AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html).

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.

# Module 3 (partie 2) : Fonctions Lambda sur AWS IoT Greengrass
<a name="module3-II"></a>

Ce module explore les différences entre les fonctions Lambda à la demande et les fonctions Lambda de longue durée exécutées sur le AWS IoT Greengrass cœur.

Avant de commencer, exécutez le script de [configuration de l'appareil Greengrass](quick-start.md) ou assurez-vous d’avoir effectué le [module 1](module1.md), le[module 2](module2.md) et le [module 3 (partie 1)](module3-I.md).

Ce module dure environ 30 minutes.

**Topics**
+ [Création et empaquetage de la fonction Lambda](package.md)
+ [Configurer des fonctions Lambda de longue durée pour AWS IoT Greengrass](long-lived.md)
+ [Testez des fonctions Lambda à longue durée de vie](long-testing.md)
+ [Testez les fonctions Lambda à la demande](on-demand.md)

# Création et empaquetage de la fonction Lambda
<a name="package"></a>

Au cours de cette étape, vous :
+ Créez un package de déploiement de fonctions Lambda contenant le code de la fonction et les dépendances.
+ Utilisez la console Lambda pour créer une fonction Lambda et télécharger le package de déploiement.
+ Publiez une version de la fonction Lambda et créez un alias pointant vers cette version.

 

1. Sur votre ordinateur, accédez au SDK AWS IoT Greengrass Core pour Python que vous avez téléchargé et extrait [Création et empaquetage d'une fonction Lambda](create-lambda.md) dans le module 3-1.

   La fonction Lambda de ce module utilise :
   + Le fichier `greengrassHelloWorldCounter.py` dans `examples\HelloWorldCounter`. Il s'agit du code de votre fonction Lambda.
   + Le dossier `greengrasssdk`. Il s'agit du kit SDK.

1. Créez un package de déploiement de fonctions Lambda :

   1. Copiez le dossier `greengrasssdk` dans le dossier `HelloWorldCounter` qui contient `greengrassHelloWorldCounter.py`.

   1. Enregistrez `greengrassHelloWorldCounter.py` et le dossier `greengrasssdk` dans un fichier `zip` nommé `hello_world_counter_python_lambda.zip`. Le fichier `py` et le dossier du `greengrasssdk` doivent être à la racine du répertoire.  
![\[Capture d'écran montrant le contenu zippé du fichier hello_word_counter_python_lambda.zip.\]](http://docs.aws.amazon.com/fr_fr/greengrass/v1/developerguide/images/gg-get-started-046.png)

      Pour les systèmes UNIX (y compris le terminal Mac) pour lesquels `zip` est installé, vous pouvez utiliser la commande suivante pour compresser le fichier et le dossier :

      ```
      zip -r hello_world_counter_python_lambda.zip greengrasssdk greengrassHelloWorldCounter.py
      ```

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

1. Ouvrez la console Lambda et choisissez **Create** function.

1. Choisissez **Créer à partir de zéro**.

1. Nommez votre fonction **Greengrass\$1HelloWorld\$1Counter** et définissez les champs restants comme suit :
   + Pour **Runtime**, sélectionnez **Python 3.7**.
   + Pour **les autorisations**, 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é par AWS IoT Greengrass. Vous pouvez également réutiliser le rôle que vous avez créé dans le module 3-1.

   Sélectionnez **Create function** (Créer une fonction).  
![\[La section « Informations de base » avec le champ « Nom de la fonction » défini sur « Greengrass_ HelloWorld _Counter » et le champ « Runtime » défini sur « Python 3.7 ».\]](http://docs.aws.amazon.com/fr_fr/greengrass/v1/developerguide/images/gg-get-started-023-3.png)

1. Téléchargez le package de déploiement de votre fonction Lambda.

   1. <a name="lambda-console-upload"></a>Dans l'onglet **Code**, sous **Source du code**, choisissez **Télécharger depuis**. Dans le menu déroulant, sélectionnez le **fichier .zip.**  
![\[La liste déroulante Upload from avec le fichier .zip surligné.\]](http://docs.aws.amazon.com/fr_fr/greengrass/v1/developerguide/images/lra-console/upload-deployment-package.png)

   1. Choisissez **Upload**, puis choisissez votre package `hello_world_counter_python_lambda.zip` de déploiement. Ensuite, choisissez **Enregistrer**. 

   1. <a name="lambda-console-runtime-settings-para"></a>Dans l'onglet **Code** de la fonction, sous **Paramètres d'exécution**, choisissez **Modifier**, puis entrez les valeurs suivantes.
      + Pour **Runtime**, sélectionnez **Python 3.7**.
      + Pour **Handler (Gestionnaire)**, entrez **greengrassHelloWorldCounter.function\$1handler**.

   1. <a name="lambda-console-save-config"></a>Choisissez **Save** (Enregistrer).
**Note**  
Le bouton **Test** de la AWS Lambda console ne fonctionne pas avec cette fonction. Le SDK AWS IoT Greengrass principal ne contient pas les modules nécessaires pour exécuter vos fonctions Greengrass Lambda de manière indépendante dans la console. AWS Lambda Ces modules (par exemple`greengrass_common`) sont fournis aux fonctions après leur déploiement sur votre noyau Greengrass.

1. Publiez la première version de la fonction.

   1. Dans le menu **Actions** en haut de la page, choisissez **Publier une nouvelle version**. Pour **Description de la version**, saisissez **First version**.

   1. Choisissez **Publish**.

1. Créez un alias pour la version de la fonction.

   1. Dans le menu **Actions** en haut de la page, choisissez **Créer un alias**.  
![\[Capture d'écran du menu Actions défini sur Créer un alias.\]](http://docs.aws.amazon.com/fr_fr/greengrass/v1/developerguide/images/gg-get-started-028.png)

   1. Pour **Nom**, saisissez **GG\$1HW\$1Counter**.

   1. Pour **Version**, choisissez **1**.

   1. Choisissez **Save** (Enregistrer).  
![\[Créez une capture d'écran d'alias avec le champ Nom défini sur GG_HW_Counter et le champ Version défini sur 1.\]](http://docs.aws.amazon.com/fr_fr/greengrass/v1/developerguide/images/gg-get-started-048.png)

   Les alias créent une entité unique pour votre fonction Lambda à laquelle les appareils Greengrass peuvent s'abonner. Ainsi, vous n'avez pas à mettre à jour les abonnements avec les nouveaux numéros de version de la fonction Lambda chaque fois que la fonction est modifiée.

# Configurer des fonctions Lambda de longue durée pour AWS IoT Greengrass
<a name="long-lived"></a>

Vous êtes maintenant prêt à configurer votre fonction Lambda pour. AWS IoT Greengrass

1. <a name="console-gg-groups"></a>Dans le volet de navigation de la AWS IoT console, sous **Gérer**, développez les **appareils Greengrass**, puis choisissez **Groups (V1)**.

1. Sous **Groupes Greengrass**, choisissez le groupe que vous avez créé dans le [module](module2.md) 2.

1. **Sur la page de configuration du groupe, choisissez l'onglet **Fonctions Lambda**, puis sous Mes **fonctions Lambda**, choisissez Ajouter.**

1. Pour la **fonction Lambda**, choisissez **HelloWorldGreengrass\$1** \$1Counter.

1. Pour la **version de la fonction Lambda**, choisissez l'alias de la version que vous avez publiée.

1. Pour **Timeout (secondes)**, entrez**25**. Cette fonction Lambda est mise en veille pendant 20 secondes avant chaque appel.

1. Pour **Épinglé**, choisissez **True**.

1. Conservez les valeurs par défaut pour tous les autres champs et choisissez **Ajouter une fonction Lambda**.

# Testez des fonctions Lambda à longue durée de vie
<a name="long-testing"></a>

Une fonction Lambda de *[longue durée](lambda-functions.md#lambda-lifecycle)* 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](https://github.com/aws/aws-greengrass-core-sdk-python/blob/master/examples/HelloWorldCounter/greengrassHelloWorldCounter.py) 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**.

1. Sous **Type de source**, choisissez la **fonction Lambda**, puis **HelloWorldGreengrass\$1** \$1Counter.

1. Sous **Type de cible**, choisissez **Service**, puis **IoT Cloud**.

1. Pour **Filtre de rubrique**, tapez **hello/world/counter**.

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

1. 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\$1** \$1Counter.
   + 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.

1. 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](configs-core.md)

1. <a name="console-actions-deploy"></a>Sur la page de configuration du groupe, choisissez **Deploy**.

1. <a name="console-test-after-deploy"></a>Une fois le déploiement terminé, revenez à la page d'accueil de la AWS IoT console et choisissez **Test**.

1. 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)**.

1. Choisissez **Souscrire**.

   Contrairement à la [Partie 1](module3-I.md) 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\$1 HelloWorld \$1Counter to** **IoT Cloud** permet à la fonction d'envoyer des messages AWS IoT sur le sujet. `hello/world/counter` L'abonnement **IoT Cloud** to **Greengrass\$1 HelloWorld \$1Counter** permet d'envoyer des messages AWS IoT à la fonction sur le sujet. `hello/world/counter/trigger`

1. 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é.\]](http://docs.aws.amazon.com/fr_fr/greengrass/v1/developerguide/images/gg-get-started-057.png)
**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](https://github.com/aws/aws-greengrass-core-sdk-python/blob/master/examples/HelloWorldCounter/greengrassHelloWorldCounter.py) 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.\]](http://docs.aws.amazon.com/fr_fr/greengrass/v1/developerguide/images/gg-get-started-058.png)


# Testez les fonctions Lambda à la demande
<a name="on-demand"></a>

Les fonctionnalités d'une fonction Lambda à la *[demande](lambda-functions.md#lambda-lifecycle)* sont similaires à celles d'une fonction basée sur le cloud AWS Lambda . Plusieurs appels d'une fonction Lambda à la demande peuvent être exécutés en parallèle. Un appel de la fonction Lambda crée un conteneur distinct pour traiter les appels ou réutilise un conteneur existant, si les ressources le permettent. Les variables ou le prétraitement définis en dehors du gestionnaire de fonctions ne sont pas conservés quand des conteneurs sont créés.

1. Sur la page de configuration du groupe, choisissez l'onglet **Fonctions Lambda**.

1. Sous les **fonctions My Lambda, sélectionnez** le **Greengrass\$1HelloWorld\$1Counter**Fonction Lambda.

1. Dans la page **Greengrass\$1HelloWorld\$1Counter**page de détails, choisissez **Modifier**.

1. Pour **Épinglé**, choisissez **False**, puis **Enregistrer**.

1. <a name="console-actions-deploy"></a>Sur la page de configuration du groupe, choisissez **Deploy**.

1. <a name="console-test-after-deploy"></a>Une fois le déploiement terminé, revenez à la page d'accueil de la AWS IoT console et choisissez **Test**.

1. 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)**.  
![\[Capture d'écran de la page Abonnements.\]](http://docs.aws.amazon.com/fr_fr/greengrass/v1/developerguide/images/gg-get-started-056.png)

1. Choisissez **Souscrire**.
**Note**  
Vous ne devriez pas voir de message après vous être abonné.

1. Pour tester le cycle de vie à la demande, appelez la fonction en publiant un message dans la rubrique `hello/world/counter/trigger`. Vous pouvez utiliser le message par défaut.

   1. Choisissez **Publier** trois fois rapidement, dans les cinq secondes suivant chaque pression sur le bouton.  
![\[Capture d'écran du bouton Publier dans la rubrique, sur lequel vous devez cliquer rapidement trois fois de suite.\]](http://docs.aws.amazon.com/fr_fr/greengrass/v1/developerguide/images/gg-get-started-063.png)

      Chaque publication appelle le gestionnaire de fonctions et crée un conteneur pour chaque appel. Le nombre d'appels n'est pas incrémenté pour les trois fois que vous avez déclenché la fonction, car chaque fonction Lambda à la demande possède son propre conteneur/bac à sable.  
![\[Capture d'écran montrant le nombre d'appels fixé à 1.\]](http://docs.aws.amazon.com/fr_fr/greengrass/v1/developerguide/images/gg-get-started-064.png)

   1. Après environ 30 secondes, choisissez **Publier dans la rubrique**. Le nombre d'appels doit être incrémenté à 2. Cela montre qu'un conteneur créé à partir d'un appel antérieur est en cours d'utilisation, et que les variables de prétraitement en dehors du gestionnaire de fonctions ont été stockées.  
![\[Capture d'écran montrant le nombre d'appels maintenant fixé à 2.\]](http://docs.aws.amazon.com/fr_fr/greengrass/v1/developerguide/images/gg-get-started-065.png)

Vous devez maintenant comprendre les deux types de fonctions Lambda qui peuvent être exécutées sur le AWS IoT Greengrass noyau. Le module suivant, le [module 4](module4.md), vous montre comment les appareils IoT locaux peuvent interagir au sein d'un AWS IoT Greengrass groupe.