

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 1) : Fonctions Lambda sur AWS IoT Greengrass
<a name="module3-I"></a>

Ce module explique comment créer et déployer une fonction Lambda qui envoie des messages MQTT depuis votre AWS IoT Greengrass appareil principal. Le module décrit les configurations des fonctions Lambda, les abonnements utilisés pour autoriser la messagerie MQTT et les déploiements sur un périphérique principal.

[Le module 3 (partie 2)](module3-II.md) couvre 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, assurez-vous que vous avez terminé les [modules 1](module1.md) et [2](module2.md) et que vous disposez d'un appareil AWS IoT Greengrass principal en cours d'exécution.

**Astuce**  
Ou, pour utiliser un script qui configure votre appareil principal à votre place, veuillez consulter [Démarrage rapide : Configuration de l'appareil Greengrass](quick-start.md). Le script peut également créer et déployer la fonction Lambda utilisée dans ce module.

Ce module dure environ 30 minutes.

**Topics**
+ [Création et empaquetage d'une fonction Lambda](create-lambda.md)
+ [Configurer la fonction Lambda pour AWS IoT Greengrass](config-lambda.md)
+ [Déployer des configurations cloud sur un appareil Greengrass Core](configs-core.md)
+ [Vérifiez que la fonction Lambda est en cours d'exécution sur le périphérique principal](lambda-check.md)

# Création et empaquetage d'une fonction Lambda
<a name="create-lambda"></a>

L'exemple de fonction Lambda Python de ce module utilise le [SDK AWS IoT Greengrass Core pour Python pour](lambda-functions.md#lambda-sdks-core) publier des messages MQTT.

Au cours de cette étape, vous :
+ Téléchargez le SDK AWS IoT Greengrass Core pour Python sur votre ordinateur (et non sur le périphérique AWS IoT Greengrass principal).
+ 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.

Pour compléter ce module, Python 3.7 doit être installé sur votre appareil noyau.

 <a name="create-lambda-procedure"></a>

1. <a name="download-ggc-sdk"></a> Sur la page de téléchargement du [SDK AWS IoT Greengrass Core](what-is-gg.md#gg-core-sdk-download), téléchargez le SDK AWS IoT Greengrass Core pour Python sur votre ordinateur.

1. Décompressez le package téléchargé pour obtenir le code de fonction Lambda et le SDK.

   La fonction Lambda de ce module utilise :
   + Le fichier `greengrassHelloWorld.py` dans `examples\HelloWorld`. Il s'agit du code de votre fonction Lambda. La fonction publie l'un des deux messages possibles toutes les cinq secondes dans la rubrique `hello/world`.
   + Le dossier `greengrasssdk`. Il s'agit du kit SDK.

1. Copiez le dossier `greengrasssdk` dans le dossier `HelloWorld` qui contient `greengrassHelloWorld.py`.

1. Pour créer le package de déploiement de la fonction Lambda, enregistrez `greengrassHelloWorld.py` le `greengrasssdk` dossier dans un `zip` fichier compressé nommé. `hello_world_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_python_lambda.zip.\]](http://docs.aws.amazon.com/fr_fr/greengrass/v1/developerguide/images/gg-get-started-017.png)

   Sur les systèmes UNIX (y compris le terminal Mac), vous pouvez utiliser la commande suivante pour compresser le fichier et le dossier :

   ```
   zip -r hello_world_python_lambda.zip greengrasssdk greengrassHelloWorld.py
   ```
**Note**  
En fonction de votre distribution, il se peut que vous deviez installer `zip` d'abord (par exemple, en exécutant `sudo apt-get install zip`). La commande d'installation peut varier pour votre distribution.

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

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

1. 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_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 **greengrassHelloWorld.function\$1handler**.  
![\[La section « Paramètres d'exécution » avec le champ « Runtime » défini sur « Python 3.7 » et le champ « Handler » défini sur « greengrassHelloWorld .function_handler ».\]](http://docs.aws.amazon.com/fr_fr/greengrass/v1/developerguide/images/gg-get-started-023-2.png)

   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. <a name="publish-function-version"></a>Publiez la fonction Lambda :

   1. Dans le menu **Actions** en haut de la page, choisissez **Publier une nouvelle version**.  
![\[Capture d'écran du menu Actions avec l'option Publier une nouvelle version mise en évidence.\]](http://docs.aws.amazon.com/fr_fr/greengrass/v1/developerguide/images/gg-get-started-026.png)

   1. Dans **Description de la version**, saisissez **First version**, puis choisissez **Publish**.  
![\[Capture d'écran avec le champ Description de la version défini sur First version (Première version) et le bouton Publish (Publication) sélectionné.\]](http://docs.aws.amazon.com/fr_fr/greengrass/v1/developerguide/images/gg-get-started-027.png)

1. <a name="create-version-alias"></a>[Créez un [alias](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) pour la version de la fonction Lambda :](https://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html)
**Note**  
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 du code, car vous n'avez pas à modifier votre table d'abonnement ou la 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 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. Nommez l'alias**GG\$1HelloWorld**, définissez la version sur **1** (qui correspond à la version que vous venez de publier), puis choisissez **Enregistrer**.
**Note**  
AWS IoT Greengrass **ne prend pas en charge les alias Lambda pour les versions \$1LATEST.**

         
![\[Capture d'écran de Créer un nouvel alias avec le champ Nom défini sur GG_ HelloWorld et le champ Version défini sur 1.\]](http://docs.aws.amazon.com/fr_fr/greengrass/v1/developerguide/images/gg-get-started-029.png)

# Configurer la fonction Lambda pour AWS IoT Greengrass
<a name="config-lambda"></a>

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

Au cours de cette étape, vous :
+ Utilisez la AWS IoT console pour ajouter la fonction Lambda à votre groupe Greengrass.
+ Configurez les paramètres spécifiques au groupe pour la fonction Lambda.
+ Ajoutez un abonnement au groupe qui autorise la fonction Lambda à publier des messages MQTT. AWS IoT
+ Configurez les paramètres du journal local pour le groupe.

 

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 faites défiler la page jusqu'à la section Mes **fonctions Lambda** et choisissez Ajouter une fonction Lambda.**

1. Sélectionnez le nom de la fonction Lambda que vous avez créée à l'étape précédente (**Greengrass\$1 HelloWorld**, pas le nom d'alias).

1. Pour la version, choisissez **Alias : GG\$1 HelloWorld**.

1. Dans la section **Configuration de la fonction Lambda**, apportez les modifications suivantes :
   + Définissez l'**utilisateur et le groupe du système** sur **Utiliser le groupe par défaut**.
   + **Définissez la **conteneurisation de la fonction Lambda** sur Utiliser le groupe par défaut.**
   + Dans **Expiration**, définissez le délai sur 25 secondes. Cette fonction Lambda est mise en veille pendant 5 secondes avant chaque appel.
   + Pour **Épinglé**, choisissez **True**.

    
**Note**  
<a name="long-lived-lambda"></a>Une fonction Lambda de *longue durée* (ou *épinglée*) démarre automatiquement après AWS IoT Greengrass le démarrage et continue de s'exécuter dans son propre conteneur. Cela contraste avec une fonction Lambda *à la demande*, qui démarre lorsqu'elle est invoquée et s'arrête lorsqu'il ne reste plus aucune tâche à exécuter. Pour de plus amples informations, veuillez consulter [Configuration du cycle de vie pour les fonctions Greengrass Lambda](lambda-functions.md#lambda-lifecycle).

1. Choisissez **Ajouter une fonction Lambda** pour enregistrer vos modifications. Pour plus d'informations sur les propriétés de la fonction Lambda, consultez. [Contrôle de l'exécution des fonctions Greengrass Lambda à l'aide d'une configuration spécifique au groupe](lambda-group-config.md)

   Créez ensuite un abonnement qui permet à la fonction Lambda d'envoyer des messages [MQTT](http://mqtt.org/) à. AWS IoT Core

   Une fonction Greengrass Lambda peut échanger des messages MQTT avec :
   + [Appareils](what-is-gg.md#greengrass-devices) du groupe Greengrass.
   + [Connecteurs](connectors.md) dans le groupe.
   + Autres fonctions Lambda du groupe.
   + AWS IoT Core.
   + Service Shadow local. Pour de plus amples informations, veuillez consulter [Module 5 : Interaction avec les Device Shadows](module5.md).

   Le groupe utilise des abonnements pour contrôler la façon dont ces entités peuvent communiquer entre elles. Les abonnements permettent des interactions prévisibles et offrent une couche de sécurité.

   Un abonnement se compose d'une source, d'une cible et d'une rubrique. La source est le créateur du message. La cible est la destinataire du message. La rubrique vous permet de filtrer les données envoyées de la source vers la cible. La source ou la cible peut être un appareil Greengrass, une fonction Lambda, un connecteur, une ombre d'appareil ou. AWS IoT Core
**Note**  
Un abonnement est dirigé dans le sens où les messages sont acheminés dans une direction spécifique : de la source vers la cible. Pour autoriser la communication bidirectionnelle, vous devez configurer deux abonnements.
**Note**  
 Actuellement, le filtre des rubriques d'abonnement n'autorise qu'un seul `+` caractère dans une rubrique. Le filtre de sujet n'autorise qu'un seul `#` caractère à la fin d'un sujet. 

   La fonction `Greengrass_HelloWorld` Lambda envoie des messages uniquement au `hello/world` sujet dans AWS IoT Core. Vous n'avez donc besoin de créer qu'un seul abonnement entre la fonction Lambda et. AWS IoT Core Vous créez ceci à l'étape suivante.

1. Sur la page de configuration du groupe, choisissez l'onglet **Abonnements**, puis choisissez **Ajouter un abonnement**.

   Pour un exemple qui vous montre comment créer un abonnement à l'aide du AWS CLI, reportez-vous [create-subscription-definition](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/greengrass/create-subscription-definition.html)à la *référence des AWS CLI commandes*.

1. **Dans le **type Source**, choisissez la **fonction Lambda** et, pour la **Source**, choisissez Greengrass\$1. HelloWorld**

1. Pour le **type de cible**, choisissez **Service** et pour la **cible**, sélectionnez **IoT Cloud**.

1. Dans le **champ Filtre par sujet****hello/world**, entrez, puis choisissez **Créer un abonnement**.

1. Configurez les paramètres de journalisation du groupe. Dans ce didacticiel, vous allez configurer les composants AWS IoT Greengrass du système et les fonctions Lambda définies par l'utilisateur pour écrire des journaux dans le système de fichiers du périphérique principal.

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

   1. Dans la section **Configuration des journaux locaux**, choisissez **Modifier**.

   1. Dans la boîte de dialogue **Modifier la configuration des journaux locaux**, conservez les valeurs par défaut pour les niveaux de journal et les tailles de stockage, puis choisissez **Enregistrer**.

   Vous pouvez utiliser les journaux pour résoudre les problèmes que vous pouvez rencontrer lors de l'exécution de ce didacticiel. Lorsque vous résolvez des problèmes, vous pouvez temporairement définir le niveau de journalisation sur **Debug (Débogage)**. Pour de plus amples informations, veuillez consulter [Accès aux journaux du système de fichiers](greengrass-logs-overview.md#gg-logs-local).

1. <a name="disable-stream-manager-no-java"></a>Si l'environnement d'exécution Java 8 n'est pas installé sur votre appareil principal, vous devez l'installer ou désactiver le gestionnaire de flux.
**Note**  
Ce didacticiel n'utilise pas le gestionnaire de flux, mais il utilise le flux de travail **Default Group creation (Création du groupe par défaut)** qui active le gestionnaire de flux par défaut. Si le gestionnaire de flux est activé mais que Java 8 n'est pas installé, le déploiement du groupe échoue. Pour de plus amples informations, veuillez consulter les [exigences relatives au gestionnaire de flux](stream-manager.md#stream-manager-requirements).

   Pour désactiver le gestionnaire de flux :

   1. Sur la page des paramètres du groupe, choisissez l'onglet **Fonctions Lambda**.

   1. **Dans la section **Fonctions Lambda du système**, sélectionnez **Stream Manager**, puis Edit.**

   1. Choisissez **Disable (Désactiver)**, puis **Save (Enregistrer)**.

# Déployer des configurations cloud sur un appareil Greengrass Core
<a name="configs-core"></a>

1. Vérifiez que votre appareil Greengrass Core est connecté à Internet. Par exemple, essayez d'accéder à une page Web.

1. Assurez-vous que le démon Greengrass est en cours d'exécution sur votre appareil principal. Dans le terminal de votre appareil principal, exécutez les commandes suivantes pour vérifier si le démon est en cours d'exécution et démarrez-le, 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.

   1. Pour démarrer le daemon :

      ```
      cd /greengrass/ggc/core/
      sudo ./greengrassd start
      ```

   Vous êtes maintenant prêt à déployer la fonction Lambda et les configurations d'abonnement sur votre appareil principal 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 **Deploy**.

1. **Dans l'onglet **Fonctions Lambda, dans la section Fonctions** **Lambda** du système, sélectionnez Détecteur IP.**

1. Choisissez **Modifier**, puis sélectionnez **Détecter et remplacer automatiquement les points de terminaison du broker MQTT**. 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.

Le premier déploiement peut durer quelques minutes. Une fois le déploiement terminé, vous devriez voir le message **Successfully completed (Terminé avec succès)** s'afficher dans la colonne **Status (État)** de la page **Deployments (Déploiements)** :

**Note**  
L'état du déploiement est également affiché sous le nom du groupe dans l'en-tête de la page.

Pour bénéficier d'une aide à la résolution des problèmes, consultez [Résolution des problèmes AWS IoT Greengrass](gg-troubleshooting.md).

# Vérifiez que la fonction Lambda est en cours d'exécution sur le périphérique principal
<a name="lambda-check"></a>

1. Dans le volet de navigation de la [AWS IoT console](https://console.aws.amazon.com/iot/), sous **Test**, choisissez le **client de test MQTT**.

1. Choisissez l'onglet **S'abonner au sujet**.

1. Entrez **hello/world** dans le **filtre de sujet** et développez la **configuration supplémentaire**.

1. Entrez les informations répertoriées dans chacun des champs suivants :
   + 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 **Abonner**.

En supposant que la fonction Lambda est en cours d'exécution sur votre appareil, elle publie des messages similaires aux suivants dans le `hello/world` sujet :

![\[Capture d'écran du message envoyé au hello/world sujet avec le message surligné.\]](http://docs.aws.amazon.com/fr_fr/greengrass/v1/developerguide/images/gg-get-started-045.png)


Bien que la fonction Lambda continue d'envoyer des messages MQTT au `hello/world` sujet, n'arrêtez pas le démon. AWS IoT Greengrass Les autres modules sont écrits avec l'hypothèse selon laquelle il est en cours d'exécution.

Vous pouvez supprimer la fonction et l'abonnement du groupe :
+ **Sur la page de configuration des groupes, sous l'onglet **Fonctions Lambda**, sélectionnez la fonction Lambda que vous souhaitez supprimer et choisissez Supprimer.**
+ Sur la page de configuration des groupes, sous l'onglet **Abonnements**, choisissez l'abonnement, puis sélectionnez **Supprimer**.

La fonction et l'abonnement sont supprimés lors du déploiement suivant.