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.
Exécuter AWS Lambda des fonctions
Note
AWS IoT Greengrassne prend actuellement pas en charge cette fonctionnalité sur les appareils Windows principaux.
Vous pouvez importer des AWS Lambda fonctions sous forme de composants qui s'exécutent sur des appareils AWS IoT Greengrass principaux. Vous souhaiterez peut-être procéder ainsi dans les cas suivants :
-
Vous avez du code d'application dans les fonctions Lambda que vous souhaitez déployer sur les appareils principaux.
-
Vous avez des applications AWS IoT Greengrass V1 que vous souhaitez exécuter sur des appareils AWS IoT Greengrass V2 principaux. Pour plus d’informations, consultez Étape 2 : créer et déployer des AWS IoT Greengrass V2 composants pour migrer AWS IoT Greengrass V1 des applications.
Les fonctions Lambda incluent des dépendances sur les composants suivants. Il n'est pas nécessaire de définir ces composants comme des dépendances lorsque vous importez la fonction. Lorsque vous déployez le composant de fonction Lambda, le déploiement inclut ces dépendances du composant Lambda.
-
Le composant Lambda Launcher (
aws.greengrass.LambdaLauncher
) gère les processus et la configuration de l'environnement. -
Le composant Lambda Manager (
aws.greengrass.LambdaManager
) gère la communication entre les processus et le dimensionnement. -
Le composant Lambda runtimes (
aws.greengrass.LambdaRuntimes
) fournit des artefacts pour chaque environnement d'exécution Lambda pris en charge.
Rubriques
Prérequis
Vos appareils principaux et vos fonctions Lambda doivent répondre aux exigences suivantes pour que vous puissiez exécuter les fonctions sur le logiciel AWS IoT Greengrass principal :
-
Votre appareil principal doit répondre aux exigences pour exécuter les fonctions Lambda. Si vous souhaitez que le périphérique principal exécute des fonctions Lambda conteneurisées, le périphérique doit répondre aux exigences requises. Pour plus d’informations, consultez Exigences relatives à la fonction Lambda.
-
Vous devez installer les langages de programmation utilisés par la fonction Lambda sur vos appareils principaux.
Astuce
Vous pouvez créer un composant qui installe le langage de programmation, puis spécifier ce composant en tant que dépendance de votre composant de fonction Lambda. Greengrass prend en charge toutes les versions compatibles avec Lambda des environnements d'exécution Python, Node.js et Java. Greengrass n'applique aucune restriction supplémentaire aux versions d'exécution Lambda obsolètes. Vous pouvez exécuter des fonctions Lambda qui utilisent ces environnements d'exécution obsolètesAWS IoT Greengrass, mais vous ne pouvez pas les créer dans. AWS Lambda Pour plus d'informations sur la AWS IoT Greengrass prise en charge des environnements d'exécution Lambda, consultez. Exécuter AWS Lambda des fonctions
Configurer le cycle de vie des fonctions Lambda
Le cycle de vie de la fonction Greengrass Lambda détermine le moment où une fonction démarre et la manière dont elle crée et utilise les conteneurs. Le cycle de vie détermine également la manière dont le logiciel AWS IoT Greengrass Core conserve les variables et la logique de prétraitement qui se situent en dehors du gestionnaire de fonctions.
AWS IoT Greengrassprend en charge les cycles de vie à la demande (par défaut) et de longue durée :
-
Les fonctions à la demande démarrent lorsqu'elles sont appelées et s'arrêtent lorsqu'il ne reste plus aucune tâche à exécuter. Chaque appel de la fonction crée un conteneur distinct, également appelé sandbox, pour traiter les invocations, sauf si un conteneur existant est disponible pour être réutilisé. Tous les conteneurs peuvent traiter les données que vous envoyez à la fonction.
Plusieurs invocations d'une fonction à la demande peuvent être exécutées simultanément.
Les variables et la logique de prétraitement que vous définissez en dehors du gestionnaire de fonctions ne sont pas conservées lors de la création de nouveaux conteneurs.
-
Les fonctions de longue durée (ou épinglées) démarrent lorsque le logiciel AWS IoT Greengrass Core démarre et s'exécutent dans un conteneur unique. Le même conteneur traite toutes les données que vous envoyez à la fonction.
Les appels multiples sont mis en file d'attente jusqu'à ce que le logiciel AWS IoT Greengrass Core exécute les appels précédents.
Les variables et la logique de prétraitement que vous définissez en dehors du gestionnaire de fonctions sont conservées à chaque appel du gestionnaire.
Utilisez des fonctions Lambda de longue durée lorsque vous devez commencer à travailler sans aucune intervention initiale. Par exemple, une fonction de longue durée peut charger et commencer à traiter un modèle d'apprentissage automatique afin qu'il soit prêt lorsque la fonction reçoit les données de l'appareil.
Note
Les fonctions de longue durée ont des délais d'expiration associés à chaque appel de leur gestionnaire. Si vous souhaitez invoquer du code qui s'exécute indéfiniment, vous devez le démarrer en dehors du gestionnaire. Assurez-vous qu'aucun code de blocage en dehors du gestionnaire ne puisse empêcher l'initialisation de la fonction.
Ces fonctions s'exécutent sauf si le logiciel AWS IoT Greengrass Core s'arrête, par exemple lors d'un déploiement ou d'un redémarrage. Ces fonctions ne s'exécuteront pas si la fonction rencontre une exception non détectée, dépasse ses limites de mémoire ou entre dans un état d'erreur, tel qu'un délai d'expiration du gestionnaire.
Pour plus d'informations sur la réutilisation des conteneurs, consultez la section Comprendre la réutilisation des conteneurs AWS Lambda dans
Configuration de la conteneurisation des fonctions Lambda
Par défaut, les fonctions Lambda s'exécutent à l'intérieur d'un AWS IoT Greengrass conteneur. Les conteneurs Greengrass isolent vos fonctions de l'hôte. Cette isolation augmente la sécurité de l'hôte et des fonctions du conteneur.
Nous vous recommandons d'exécuter les fonctions Lambda dans un conteneur Greengrass, sauf si votre cas d'utilisation exige qu'elles s'exécutent sans conteneurisation. En exécutant vos fonctions Lambda dans un conteneur Greengrass, vous pouvez mieux contrôler la manière dont vous limitez l'accès aux ressources.
Vous pouvez exécuter une fonction Lambda sans conteneurisation dans les cas suivants :
-
Vous souhaitez exécuter AWS IoT Greengrass sur un appareil qui ne prend pas en charge le mode conteneur. Par exemple, si vous souhaitez utiliser une distribution Linux spéciale ou si vous avez une version antérieure du noyau qui n'est plus à jour.
-
Vous souhaitez exécuter votre fonction Lambda dans un autre environnement de conteneurs avec son propre OverlayFS, mais vous rencontrez des conflits OverlayFS lorsque vous l'exécutez dans un conteneur Greengrass.
-
Vous devez accéder à des ressources locales dont les chemins ne peuvent pas être déterminés au moment du déploiement ou dont les chemins peuvent changer après le déploiement. Un exemple de cette ressource serait un périphérique enfichable.
-
Vous avez une application antérieure qui a été écrite en tant que processus, et vous rencontrez des problèmes lorsque vous l'exécutez dans un conteneur Greengrass.
Conteneurisation | Remarques |
---|---|
Conteneur Greengrass |
|
Aucun conteneur |
|
Si vous modifiez la conteneurisation d'une fonction Lambda lorsque vous la déployez, la fonction risque de ne pas fonctionner comme prévu. Si la fonction Lambda utilise des ressources locales qui ne sont plus disponibles avec le nouveau paramètre de conteneurisation, le déploiement échoue.
-
Lorsque vous remplacez l'exécution d'une fonction Lambda dans un conteneur Greengrass par une fonction sans conteneurisation, les limites de mémoire de la fonction sont supprimées. Vous devez accéder au système de fichiers directement au lieu d'utiliser les ressources locales attachées. Vous devez supprimer toutes les ressources associées avant de déployer la fonction Lambda.
-
Lorsque vous passez d'une fonction Lambda exécutée sans conteneurisation à une fonction Lambda exécutée dans un conteneur, votre fonction Lambda perd l'accès direct au système de fichiers. Vous devez définir une limite de mémoire pour chaque fonction ou accepter la limite de mémoire par défaut de 16 Mo. Vous pouvez configurer ces paramètres pour chaque fonction Lambda lorsque vous la déployez.
Pour modifier les paramètres de conteneurisation d'un composant de fonction Lambda, définissez la valeur du paramètre de containerMode
configuration sur l'une des options suivantes lorsque vous déployez le composant.
-
NoContainer
— Le composant ne s'exécute pas dans un environnement d'exécution isolé. -
GreengrassContainer
— Le composant s'exécute dans un environnement d'exécution isolé à l'intérieur du AWS IoT Greengrass conteneur.
Pour plus d'informations sur le déploiement et la configuration des composants, reportez-vous aux sections Déployer AWS IoT Greengrass des composants sur des appareils etMettre à jour les configurations des composants.