Accédez à des ressources locales avec des fonctions et des connecteurs Lambda - 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.

Accédez à des ressources locales avec des fonctions et des connecteurs Lambda

Cette fonctionnalité est disponible pourAWS IoT Greengrass Core v1.3 et versions ultérieures.

Avec AWS IoT Greengrass, vous pouvez créer des fonctions AWS Lambda et configurer des connecteurs dans le cloud, puis les déployer vers les appareils principaux pour une exécution locale. Sur les cœurs Greengrass exécutant Linux, ces fonctions et connecteurs Lambda déployés localement peuvent accéder aux ressources locales présentes physiquement sur le périphérique principal Greengrass. Par exemple, pour communiquer avec des appareils connectés via Modbus ou CANbus, vous pouvez activer votre fonction Lambda pour accéder au port série du périphérique principal. Pour configurer un accès sécurisé aux ressources locales, vous devez garantir la sécurité de votre matériel physique et du système d'exploitation de votre appareil principal Greengrass.

Pour commencer à accéder aux ressources locales, consultez les didacticiels suivants :

Types de ressources pris en charge

Vous pouvez accéder à deux types de ressources locales : les ressources de volumes et les ressources d'appareils.

Ressources de volume

Fichiers ou répertoires sur le système de fichiers racine (sauf sous /sys, /dev ou /var). Il s'agit des licences suivantes :

  • Dossiers ou fichiers utilisés pour lire ou écrire des informations via les fonctions Greengrass Lambda (par exemple,/usr/lib/python2.x/site-packages/local).

  • Dossiers ou fichiers sous le système de fichiers /proc de l'hôte (par exemple, /proc/net ou /proc/stat). Pris en charge dans la version 1.6 ou ultérieure. Pour des prérequis supplémentaires, consultez Ressources de volume sous le répertoire /proc.

Astuce

Pour configurer les répertoires /var, /var/run et /var/lib en tant que ressources de volume, montez d'abord le répertoire dans un autre dossier, puis configurez le dossier en tant que ressource de volume.

Lorsque vous configurez des ressources de volume, vous devez spécifier un chemin source et un chemin de destination. Le chemin source est le chemin d'accès absolu de la ressource sur l'hôte. Le chemin absolu est le chemin absolu de la ressource dans l'environnement de nommage Lambda. Il s'agit du conteneur dans lequel s'exécute une fonction ou un connecteur Greengrass Lambda. Toute modification du chemin de destination est prise en compte dans le chemin source sur le système de fichiers hôte.

Note

Les fichiers du chemin de destination sont visibles uniquement dans l'espace de noms Lambda. Vous ne pouvez pas les voir dans un espace de noms Linux standard.

Ressources de l'appareil

Fichiers sous /dev. Seuls les périphériques de caractères ou les périphériques de stockage en mode bloc sous /dev sont autorisés pour les ressources de périphérique. Il s'agit des licences suivantes :

  • Ports série utilisés pour communiquer avec les appareils connectés via des ports série (par exemple, /dev/ttyS0, /dev/ttyS1).

  • USB utilisé pour connecter des périphériques USB (par exemple, /dev/ttyUSB0 ou /dev/bus/usb).

  • GPIO utilisés pour les capteurs et les actionneurs via GPIO (par exemple, /dev/gpiomem).

  • GPU utilisés pour accélérer l'apprentissage automatique à l'aide de GPU embarqués (par exemple, /dev/nvidia0).

  • Caméras utilisées pour capturer les images et les vidéos (par exemple, /dev/video0).

Note

/dev/shm est une exception. Il peut être configuré en tant que ressource de volume uniquement. Les ressources sous /dev/shm doivent recevoir l'autorisation rw.

AWS IoT Greengrass prend également en charge les types de ressources utilisés pour exécuter l'inférence de Machine Learning. Pour plus d'informations, veuillez consulter Exécuter l'inférence de Machine Learning.

Prérequis

Les exigences suivantes s'appliquent à la configuration d'un accès sécurisé aux ressources locales :

  • Vous devez utiliserAWS IoT Greengrass Core Software v1.3 ou version ultérieure. Pour créer des ressources pour le répertoire /proc de l'hôte, vous devez utiliser la version 1.6 ou une version ultérieure.

  • La ressource locale (y compris tous les pilotes et bibliothèques requis) doit être correctement installée sur l'appareil principal Greengrass et constamment disponible pendant l'utilisation.

  • L'opération souhaitée de la ressource et l'accès à la ressource ne doivent pas nécessiter de privilèges racine.

  • Seules les autorisations read ou read and write sont disponibles. Les fonctions Lambda ne peuvent pas effectuer d'opérations privilégiées sur les ressources.

  • Vous devez fournir le chemin d'accès complet de la ressource locale sur le système d'exploitation de l'appareil Greengrass principal.

  • Un ID ou un nom de ressource doit comporter 128 caractères au maximum et utiliser le modèle [a-zA-Z0-9:_-]+.

Ressources de volume sous le répertoire /proc

Les considérations suivantes s'appliquent aux ressources de volume se trouvant sous le répertoire/proc de l'hôte.

  • Vous devez utiliserAWS IoT Greengrass Core Software v1.6 ou version ultérieure.

  • Vous pouvez autoriser l'accès en lecture seule aux fonctions Lambda, mais pas l'accès en lecture-écriture. Ce niveau d'accès est géré par AWS IoT Greengrass.

  • Vous pouvez également avoir besoin d'accorder des autorisations de groupe de système d'exploitation pour activer l'accès en lecture dans le système de fichiers. Par exemple, supposons que votre répertoire ou fichier source ait une autorisation 660, ce qui signifie que seul le propriétaire ou l'utilisateur du groupe dispose de l'accès en lecture (et en écriture). Dans ce cas, vous devez ajouter les autorisations du propriétaire du groupe de système d'exploitation à la ressource. Pour plus d'informations, veuillez consulter Autorisation d'accès fichier pour le propriétaire du groupe.

  • L'environnement hôte et l'espace de noms Lambda contiennent tous deux un répertoire /proc. Veillez donc à éviter les conflits de noms lorsque vous spécifiez le chemin de destination. Par exemple, si /proc est le chemin d'accès source, vous pouvez spécifier /host-proc comme chemin de destination (ou tout autre nom de chemin différent de « /proc »).

Autorisation d'accès fichier pour le propriétaire du groupe

Un processus de fonctionAWS IoT Greengrass Lambda s'exécute normalement sous la formeggc_user etggc_group. Vous pouvez toutefois accorder des autorisations d'accès aux fichiers supplémentaires au processus de la fonction Lambda dans la définition de la ressource locale, comme suit :

  • Pour ajouter les autorisations du groupe Linux propriétaire de la ressource, utilisez leGroupOwnerSetting#AutoAddGroupOwner paramètre ou l'option Ajouter automatiquement les autorisations du système de fichiers du groupe de systèmes propriétaire de la ressource.

  • Pour ajouter les autorisations d'un autre groupe Linux, utilisez leGroupOwnerSetting#GroupOwner paramètre ou l'option de console Spécifier un autre groupe de systèmes pour ajouter les autorisations du système de fichiers. La valeur GroupOwner est ignorée si GroupOwnerSetting#AutoAddGroupOwner a la valeur true.

Un processus de fonctionAWS IoT Greengrass Lambda hérite de toutes les autorisations de système de fichiers deggc_userggc_group, et du groupe Linux (s'il est ajouté). Pour que la fonction Lambda accède à une ressource, le processus de la fonction Lambda doit disposer des autorisations requises sur la ressource. Vous pouvez utiliser la commande chmod(1) pour modifier l'autorisation de la ressource, si nécessaire.

Consulter aussi

  • Quotas de service pour les ressources dans le Référence générale d'Amazon Web Services