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.
Résolution des problèmes de AWS IoT Greengrass
Cette section fournit des informations de dépannage et des solutions possibles pour vous aider à résoudre les problèmes liés à AWS IoT Greengrass.
Pour de plus amples informations sur les quotas (limites) AWS IoT Greengrass, veuillez consulter Quotas de service dans la Référence générale d'Amazon Web Services.
Problèmes liés à AWS IoT Greengrass Core
Si le logiciel AWS IoT Greengrass Core ne démarre pas, essayez les étapes générales de résolution des problèmes suivantes :
-
Veillez à installer les fichiers binaires appropriés pour votre architecture. Pour plus d'informations, consultez Logiciel AWS IoT Greengrass Core.
-
Assurez-vous que votre appareil principal dispose d'un stockage local disponible. Pour plus d’informations, consultez Résolution des problèmes de stockage.
-
Recherchez les éventuels messages d'erreur dans
runtime.log
etcrash.log
. Pour plus d’informations, consultez Résolution des problèmes liés aux journaux.
Effectuez une recherche dans les symptômes et erreurs suivants pour trouver des informations qui vous aideront à résoudre les problèmes liés à un AWS IoT Greengrass noyau.
Problèmes
- Erreur : le fichier de configuration ne contient pas CaPath le CertPath ou KeyPath. Le processus de démon Greengrass avec [pid = <pid>] a expiré.
- Erreur : impossible d'analyser /<greengrass-root>/config/config.json.
- Erreur : Une erreur s'est produite lors de la génération de la configuration TLS : ErrUnknown UriScheme
- Erreur : échec de démarrage de Runtime : impossible de démarrer les composants Worker : le test de conteneur a expiré.
- <address>Erreur : échec de l'appel PutLogEvents sur Cloudwatch local, LogGroup :GreengrassSystem//connection_manager, erreur : échec de l'envoi de la demande causé par RequestError : Post http :<path>///cloudwatch/logs/ : dial tcp : getsockopt : connexion refusée, réponse : {}.
- <region><account-id><function-name><version><file-name>Erreur : Impossible de créer le serveur en raison de : échec du chargement du groupe : chmod/<greengrass-root>/ggc/deployment/lambda/arn:aws:lambda : ::function : :/: aucun fichier ou répertoire de ce type.
- Le logiciel AWS IoT Greengrass Core ne démarre pas une fois que vous êtes passé d'une exécution sans conteneurisation à une exécution dans un conteneur Greengrass.
- Erreur : la taille du dossier spool doit être d'au moins 262 144 octets.
- Erreur : [ERREUR] - Erreur de messagerie cloud : une erreur s'est produite lors de la tentative de publication d'un message. {"errorString": "operation timed out"}
- Erreur : container_linux.go:344: starting container process caused "process_linux.go:424: container init caused \"rootfs_linux.go:64: mounting \\\"/greengrass/ggc/socket/greengrass_ipc.sock\\\" to rootfs \\\"/greengrass/ggc/packages/<version>/rootfs/merged\\\" at \\\"/greengrass_ipc.sock\\\" caused \\\"stat /greengrass/ggc/socket/greengrass_ipc.sock: permission denied\\\"\"".
- Erreur : exécution du démon Greengrass avec le PID : <id-processus>. Certains composants du système n'ont pas pu démarrer. Recherchez les erreurs dans runtime.log.
- Le shadow de l’appareil n'est pas synchronisé avec le cloud.
- ERREUR : impossible d'accepter la connexion TCP. accept tcp [::]:8000: accept4: trop de fichiers ouverts.
- Erreur : erreur d'exécution de Runtime : impossible de démarrer le conteneur lambda. container_linux.go:259: starting container process caused "process_linux.go:345: container init caused \"rootfs_linux.go:50: preparing rootfs caused \\\"permission denied\\\"\"".
- Avertissement : [WARN] - [5] GK Remote : Erreur lors de la récupération des données de clé publique ErrPrincipalNotConfigured : la clé privée pour n' MqttCertificate est pas définie.
- <account-id><role-name><region>Erreur : autorisation refusée lors de la tentative d'utilisation du rôle arn:aws:iam : :role/ pour accéder à l'URL s3 https ://-greengrass-updates.s3. <region><architecture><distribution-version>.amazonaws.com/core/ /greengrass-core- .tar.gz.
- Le AWS IoT Greengrass cœur est configuré pour utiliser un proxy réseau et votre fonction Lambda ne peut pas établir de connexions sortantes.
- Le noyau se trouve dans une boucle de connexion-déconnexion infinie. Le fichier runtime.log contient une série continue d'entrées de connexion et de déconnexion.
- Error: unable to start lambda container. container_linux.go:259: starting container process caused "process_linux.go:345: container init caused \"rootfs_linux.go:62: mounting \\\"proc\\\" to rootfs \\\"
- [ERREUR] -erreur d'exécution du runtime : impossible de démarrer le conteneur Lambda. <ggc-path>{"ErrorString » : « Impossible d'initialiser le montage des conteneurs : impossible de masquer la racine de Greengrass dans le répertoire supérieur de superposition : échec de création du périphérique de masque dans le répertoire : le fichier existe »}
- [ERREUR] - Le déploiement a échoué. {"DeploymentID » : <deployment-id>"«, « errorString » : « <pid>échec du processus de test du conteneur avec pid : état du processus du conteneur : état du processus du conteneur : état de sortie 1"}
- Error: [ERROR]-runtime execution error: unable to start lambda container. {"errorString": "failed to initialize container mounts: failed to create overlay fs for container: mounting overlay at /greengrass/ggc/packages/<ggc-version>/rootfs/merged failed: failed to mount with args source=\"no_source\" dest=\"/greengrass/ggc/packages/<ggc-version>/rootfs/merged\" fstype=\"overlay\" flags=\"0\" data=\"lowerdir=/greengrass/ggc/packages/<ggc-version>/dns:/,upperdir=/greengrass/ggc/packages/<ggc-version>/rootfs/upper,workdir=/greengrass/ggc/packages/<ggc-version>/rootfs/work\": too many levels of symbolic links"}
- Error: [DEBUG]-Failed to get routes. Discarding message.
- Error: [Errno 24] Too many open <lambda-function>,[Errno 24] Too many open files
- Erreur : le serveur DS n'a pas pu démarrer l'écoute du socket : listen unix <ggc-path>/ggc/socket/greengrass_ipc.sock : bind : argument non valide
- [INFO] (Photocopieur) aws.greengrass. StreamManager: stdout. Causé par : com.fasterxml.jackson.databind. JsonMappingException: l'instant dépasse l'instant minimum ou maximum
- GPG error: https://dnw9lb6lzp2d8.cloudfront.net stable InRelease: The following signatures were invalid: EXPKEYSIG 68D644ABD2327D47 AWS Greengrass Master Key
Erreur : le fichier de configuration ne contient pas CaPath le CertPath ou KeyPath. Le processus de démon Greengrass avec [pid = <pid>] a expiré.
Solution : vous pouvez voir cette erreur dans crash.log
lorsque le logiciel AWS IoT Greengrass Core ne démarre pas. Cela peut se produire si vous exécutez la version 1.6 ou une version antérieure. Effectuez l’une des actions suivantes :
-
Effectuez une mise à niveau vers la version 1.7 ou ultérieure. Nous vous recommandons de toujours exécuter la dernière version du logiciel AWS IoT Greengrass Core. Pour obtenir des informations sur le téléchargement, consultez Logiciel AWS IoT Greengrass Core.
-
Utilisez le format
config.json
correct pour votre version du logiciel AWS IoT Greengrass Core. Pour plus d’informations, consultez Fichier de configuration de AWS IoT Greengrass Core.Note
Pour connaître la version du logiciel AWS IoT Greengrass Core installée sur l'appareil principal, exécutez les commandes suivantes dans le terminal de votre appareil.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd --version
Erreur : impossible d'analyser /<greengrass-root>/config/config.json.
Solution : vous pouvez voir cette erreur lorsque le logiciel AWS IoT Greengrass Core ne démarre pas. Assurez-vous que le fichier de configuration Greengrass utilise un format JSON valide.
Ouvrez config.json
(situé dans /
) et vérifiez le format JSON. Par exemple, assurez-vous que les virgules sont utilisées correctement.greengrass-root
/config
Erreur : Une erreur s'est produite lors de la génération de la configuration TLS : ErrUnknown UriScheme
Solution : vous pouvez voir cette erreur lorsque le logiciel AWS IoT Greengrass Core ne démarre pas. Assurez-vous que les propriétés de la section crypto du fichier de configuration Greengrass sont valides. Le message d'erreur doit fournir plus d'informations.
Ouvrez config.json
(situé dans /
) et vérifiez la section greengrass-root
/configcrypto
. Par exemple, les chemins de certificat et de clé doivent utiliser le format d'URI correct et pointer vers l'emplacement correct.
Erreur : échec de démarrage de Runtime : impossible de démarrer les composants Worker : le test de conteneur a expiré.
Solution : vous pouvez voir cette erreur lorsque le logiciel AWS IoT Greengrass Core ne démarre pas. Définissez la propriété postStartHealthCheckTimeout
dans le fichier de configuration Greengrass. Cette propriété facultative configure la durée (en millisecondes) pendant laquelle le démon Greengrass attend la fin de la vérification de l'état post-démarrage. La valeur par défaut est de 30 secondes (30000 ms).
Ouvrez config.json
(situé dans /
). Dans l'objet greengrass-root
/configruntime
, ajoutez la propriété postStartHealthCheckTimeout
et définissez la valeur sur un nombre supérieur à 30000. Ajoutez une virgule si nécessaire pour créer un fichier JSON valide. Par exemple :
... "runtime" : { "cgroup" : { "useSystemd" : "yes" }, "postStartHealthCheckTimeout" : 40000 }, ...
<address>Erreur : échec de l'appel PutLogEvents sur Cloudwatch local, LogGroup :GreengrassSystem//connection_manager, erreur : échec de l'envoi de la demande causé par RequestError : Post http :<path>///cloudwatch/logs/ : dial tcp : getsockopt : connexion refusée, réponse : {}.
Solution : vous pouvez voir cette erreur lorsque le logiciel AWS IoT Greengrass Core ne démarre pas. Cela peut se produire si vous exécutez AWS IoT Greengrass sur un appareil Raspberry Pi et que la configuration de la mémoire requise n'a pas été effectuée. Pour plus d'informations, consultez cette étape.
<region><account-id><function-name><version><file-name>Erreur : Impossible de créer le serveur en raison de : échec du chargement du groupe : chmod/<greengrass-root>/ggc/deployment/lambda/arn:aws:lambda : ::function : :/: aucun fichier ou répertoire de ce type.
Solution : vous pouvez voir cette erreur lorsque le logiciel AWS IoT Greengrass Core ne démarre pas. Si vous avez déployé un exécutable Lambda sur le noyau, vérifiez les propriétés de la fonction dans le group.json
fichier (Handler
situé dans /greengrass-root /ggc/deployment/group
). Si le gestionnaire n'a pas le même nom que le fichier exécutable compilé, remplacez le contenu du fichier group.json
par un objet JSON vide ({}
) et exécutez les commandes suivantes pour démarrer AWS IoT Greengrass :
cd /greengrass/ggc/core/ sudo ./greengrassd start
Ensuite, utilisez l'API AWS Lambda pour mettre à jour le paramètre handler
de la configuration de la fonction, publier une nouvelle version de la fonction, et mettre à jour l'alias. Pour de plus amples informations, veuillez consulter Versions et alias des fonctions AWS Lambda.
En supposant que vous ayez ajouté par alias la fonction à votre groupe Greengrass (recommandé), vous pouvez maintenant redéployer votre groupe. (Si ce n'est pas le cas, vous devez pointer vers la nouvelle version ou le nouvel alias de la fonction dans votre définition de groupe et les abonnements avant de déployer le groupe.)
Le logiciel AWS IoT Greengrass Core ne démarre pas une fois que vous êtes passé d'une exécution sans conteneurisation à une exécution dans un conteneur Greengrass.
Solution : vérifiez qu'aucune dépendance de conteneur ne manque.
Erreur : la taille du dossier spool doit être d'au moins 262 144 octets.
Solution : vous pouvez voir cette erreur lorsque le logiciel AWS IoT Greengrass Core ne démarre pas. Ouvrez le fichier group.json
(situé dans /
), remplacez le contenu du fichier par un objet JSON vide (greengrass-root
/ggc/deployment/group{}
) et exécutez les commandes suivantes pour démarrer AWS IoT Greengrass :
cd /greengrass/ggc/core/ sudo ./greengrassd start
Ensuite, suivez les étapes de la procédure Pour mettre en cache des messages dans le stockage local. Pour la fonction GGCloudSpooler
, assurez-vous de spécifier une valeur GG_CONFIG_MAX_SIZE_BYTES
supérieure ou égale à 262 144.
Erreur : [ERREUR] - Erreur de messagerie cloud : une erreur s'est produite lors de la tentative de publication d'un message. {"errorString": "operation timed out"}
Solution : Cette erreur peut s'afficher dans GGCloudSpooler.log
lorsque le noyau Greengrass ne peut pas envoyer de messages MQTT à AWS IoT Core. Cela peut se produire si l'environnement principal a une bande passante limitée et une latence élevée. Si vous exécutez AWS IoT Greengrass version 1.10.2 ou ultérieure, essayez d'augmenter la valeur de mqttOperationTimeout
dans le fichier config.json. Si la propriété n'est pas présente, ajoutez-la à l'objet coreThing
. Par exemple :
{ "coreThing": { "mqttOperationTimeout": 10, "caPath": "root-ca.pem", "certPath": "
hash
.cert.pem", "keyPath": "hash
.private.key", ... }, ... }
La valeur par défaut est 5
et la valeur minimale est 5
.
Erreur : container_linux.go:344: starting container process caused "process_linux.go:424: container init caused \"rootfs_linux.go:64: mounting \\\"/greengrass/ggc/socket/greengrass_ipc.sock\\\" to rootfs \\\"/greengrass/ggc/packages/<version>/rootfs/merged\\\" at \\\"/greengrass_ipc.sock\\\" caused \\\"stat /greengrass/ggc/socket/greengrass_ipc.sock: permission denied\\\"\"".
Solution : vous pouvez voir cette erreur dans runtime.log
lorsque le logiciel AWS IoT Greengrass Core ne démarre pas. Cela se produit si la valeur de umask
est supérieure à 0022
. Actuellement, pour résoudre ce problème, vous devez affecter à umask
la valeur 0022
ou une valeur inférieure. La valeur 0022
accorde à tout le monde l'autorisation de lecture sur les nouveaux fichiers par défaut.
Erreur : exécution du démon Greengrass avec le PID : <id-processus>. Certains composants du système n'ont pas pu démarrer. Recherchez les erreurs dans runtime.log.
Solution : vous pouvez voir cette erreur lorsque le logiciel AWS IoT Greengrass Core ne démarre pas. Recherchez des informations spécifiques sur l'erreur dans runtime.log
et crash.log
. Pour plus d’informations, consultez Résolution des problèmes liés aux journaux.
Le shadow de l’appareil n'est pas synchronisé avec le cloud.
Solution : assurez-vous qu'AWS IoT Greengrass possède les autorisations d'exécution des actions iot:UpdateThingShadow
et iot:GetThingShadow
et dans le rôle de service Greengrass. Si le rôle de service utilise la stratégie gérée AWSGreengrassResourceAccessRolePolicy
, ces autorisations sont incluses par défaut.
veuillez consulter Dépannage des problèmes de temporisation de la synchronisation shadow.
ERREUR : impossible d'accepter la connexion TCP. accept tcp [::]:8000: accept4: trop de fichiers ouverts.
Solution : vous pouvez voir cette erreur dans la sortie du script greengrassd
. Cela peut se produire si la limite de descripteur de fichier du logiciel AWS IoT Greengrass Core a atteint le seuil défini et doit être augmentée.
Utilisez la commande suivante et redémarrez le logiciel AWS IoT Greengrass Core.
ulimit -n 2048
Note
Dans cet exemple, la limite est augmentée à 2 048. Choisissez une valeur adaptée à votre cas d'utilisation.
Erreur : erreur d'exécution de Runtime : impossible de démarrer le conteneur lambda. container_linux.go:259: starting container process caused "process_linux.go:345: container init caused \"rootfs_linux.go:50: preparing rootfs caused \\\"permission denied\\\"\"".
Solution : installez AWS IoT Greengrass directement dans le répertoire racine, ou assurez-vous que le répertoire où le logiciel AWS IoT Greengrass Core est installé et ses répertoires parents disposent d'autorisations execute
pour tout le monde.
Avertissement : [WARN] - [5] GK Remote : Erreur lors de la récupération des données de clé publique ErrPrincipalNotConfigured : la clé privée pour n' MqttCertificate est pas définie.
Solution : AWS IoT Greengrass utilise un gestionnaire courant pour valider les propriétés de tous les mandataires de sécurité. Cet avertissement dans runtime.log
est prévu, sauf si vous avez spécifié une clé privée personnalisée pour le serveur MQTT local. Pour plus d’informations, consultez AWS IoT Greengrass principes de sécurité fondamentaux.
<account-id><role-name><region>Erreur : autorisation refusée lors de la tentative d'utilisation du rôle arn:aws:iam : :role/ pour accéder à l'URL s3 https ://-greengrass-updates.s3. <region><architecture><distribution-version>.amazonaws.com/core/ /greengrass-core- .tar.gz.
Solution : cette erreur peut s'afficher en cas d'échec d'une mise à jour over-the-air (OTA). Dans la politique de rôle du signataire, ajoutez la cible Région AWS en tant queResource
. Le rôle signataire est utilisé pour pré-signer l'URL S3 pour la mise à jour du logiciel AWS IoT Greengrass. Pour plus d'informations, consultez Rôle de signataire d'URL S3.
Le AWS IoT Greengrass cœur est configuré pour utiliser un proxy réseau et votre fonction Lambda ne peut pas établir de connexions sortantes.
Solution : En fonction de votre environnement d'exécution et des exécutables utilisés par la fonction Lambda pour créer des connexions, vous pouvez également recevoir des erreurs de temporisation de connexion. Assurez-vous que vos fonctions Lambda utilisent la configuration de proxy appropriée pour se connecter via le proxy réseau. AWS IoT Greengrasstransmet la configuration du proxy aux fonctions Lambda définies par l'utilisateur via http_proxy
les variables d'https_proxy
environnement, no_proxy
et. On peut y accéder comme illustré dans l'extrait de code Python suivant.
import os print(os.environ['http_proxy'])
Utilisez la même casse que la variable définie dans votre environnement, par exemple, http_proxy
en minuscules ou HTTP_PROXY
en majuscules. Pour ces variables, AWS IoT Greengrass prend en charge les deux possibilités.
Note
Les bibliothèques courantes utilisées pour établir des connexions (par exemple, boto3 ou cURL et les packages requests
Python) se servent de ces variables d'environnement par défaut.
Le noyau se trouve dans une boucle de connexion-déconnexion infinie. Le fichier runtime.log contient une série continue d'entrées de connexion et de déconnexion.
Solution : cela peut se produire lorsqu'un autre appareil est codé de manière irréversible pour utiliser le nom d'objet principal comme ID client pour les connexions MQTT à AWS IoT. Les connexions simultanées sont identiques Région AWS et Compte AWS doivent utiliser des identifiants clients uniques. Par défaut, le cœur utilise le nom d'objet principal comme ID client pour ces connexions.
Pour résoudre ce problème, vous pouvez modifier l'ID client utilisé par l'autre périphérique pour la connexion (recommandé) ou remplacer la valeur par défaut pour le cœur.
Pour remplacer l'ID client par défaut pour le périphérique principal
-
Exécutez la commande suivante pour arrêter le daemon Greengrass :
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Ouvrez
pour le modifier en tant qu'utilisateur su.greengrass-root
/config/config.json -
Dans l'objet
coreThing
, ajoutez la propriétécoreClientId
et définissez la valeur sur votre ID client personnalisé. La valeur doit comprendre entre 1 et 128 caractères. Il doit être unique dans le courant Région AWS pour leCompte AWS."coreClientId": "MyCustomClientId"
-
Lancez le démon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start
Error: unable to start lambda container. container_linux.go:259: starting container process caused "process_linux.go:345: container init caused \"rootfs_linux.go:62: mounting \\\"proc\\\" to rootfs \\\"
Solution : Sur certaines plateformes, cette erreur peut s'afficher runtime.log
lorsque vous essayez de AWS IoT Greengrass monter le système de /proc
fichiers pour créer un conteneur Lambda. Vous pouvez également voir des erreurs similaires, telles que operation not permitted
ou EPERM
. Ces erreurs peuvent se produire même si les tests exécutés sur la plateforme par le script du vérificateur de dépendance aboutissent.
Essayez l'une des solutions suivantes :
-
Activez l'option
CONFIG_DEVPTS_MULTIPLE_INSTANCES
dans le noyau Linux. -
Définissez les options de montage
/proc
sur l'hôte surrw,relatim
uniquement. -
Mettez à niveau le noyau Linux vers la version 4.9 ou ultérieure.
Note
Ce problème n'est pas lié au montage /proc
pour l'accès aux ressources locales.
[ERREUR] -erreur d'exécution du runtime : impossible de démarrer le conteneur Lambda. <ggc-path>{"ErrorString » : « Impossible d'initialiser le montage des conteneurs : impossible de masquer la racine de Greengrass dans le répertoire supérieur de superposition : échec de création du périphérique de masque dans le répertoire : le fichier existe »}
Solution : cette erreur peut s'afficher dans le fichier runtime.log en cas d'échec du déploiement. Cette erreur se produit si une fonction Lambda du AWS IoT Greengrass groupe ne peut pas accéder au /usr
répertoire dans le système de fichiers du noyau.
Pour résoudre ce problème, ajoutez une ressource de volume local au groupe, puis déployez le groupe. Cette ressource doit :
-
Spécifier
/usr
comme chemin source et chemin de destination -
Ajouter automatiquement les autorisations de groupe de système d'exploitation du groupe Linux qui possède la ressource
-
Affiliez-vous à la fonction Lambda et autorisez l'accès en lecture seule.
[ERREUR] - Le déploiement a échoué. {"DeploymentID » : <deployment-id>"«, « errorString » : « <pid>échec du processus de test du conteneur avec pid : état du processus du conteneur : état du processus du conteneur : état de sortie 1"}
Solution : cette erreur peut s'afficher dans le fichier runtime.log en cas d'échec du déploiement. Cette erreur se produit si une fonction Lambda du AWS IoT Greengrass groupe ne peut pas accéder au /usr
répertoire dans le système de fichiers du noyau.
Vous pouvez confirmer que tel est le cas en vérifiant s'il n'y a GGCanary.log
pas d'autres erreurs. Si la fonction Lambda ne peut pas accéder au /usr
répertoire, il GGCanary.log
contiendra l'erreur suivante :
[ERROR]-standard_init_linux.go:207: exec user process caused "no such file or directory"
Pour résoudre ce problème, ajoutez une ressource de volume local au groupe, puis déployez le groupe. Cette ressource doit :
-
Spécifier
/usr
comme chemin source et chemin de destination -
Ajouter automatiquement les autorisations de groupe de système d'exploitation du groupe Linux qui possède la ressource
-
Affiliez-vous à la fonction Lambda et autorisez l'accès en lecture seule.
Error: [ERROR]-runtime execution error: unable to start lambda container. {"errorString": "failed to initialize container mounts: failed to create overlay fs for container: mounting overlay at /greengrass/ggc/packages/<ggc-version>/rootfs/merged failed: failed to mount with args source=\"no_source\" dest=\"/greengrass/ggc/packages/<ggc-version>/rootfs/merged\" fstype=\"overlay\" flags=\"0\" data=\"lowerdir=/greengrass/ggc/packages/<ggc-version>/dns:/,upperdir=/greengrass/ggc/packages/<ggc-version>/rootfs/upper,workdir=/greengrass/ggc/packages/<ggc-version>/rootfs/work\": too many levels of symbolic links"}
Solution : cette erreur peut s'afficher dans le runtime.log
fichier lorsque le logiciel AWS IoT Greengrass Core ne démarre pas. Ce problème peut être plus fréquent sur les systèmes d'exploitation Debian.
Pour résoudre ce problème, procédez comme suit :
-
Mettez à niveau le logiciel AWS IoT Greengrass Core vers la version v1.9.3 ou ultérieure. Cela devrait résoudre automatiquement ce problème.
-
Si cette erreur persiste après la mise à niveau du logiciel AWS IoT Greengrass Core, définissez la
system.useOverlayWithTmpfs
propriété surtrue
dans le fichier config.json.Exemple
{ "system": { "useOverlayWithTmpfs": true }, "coreThing": { "caPath": "root-ca.pem", "certPath": "cloud.pem.crt", "keyPath": "cloud.pem.key", ... }, ... }
Note
Votre version du logiciel AWS IoT Greengrass Core s'affiche dans le message d'erreur. Pour rechercher la version de votre noyau Linux, exécutez uname -r
.
Error: [DEBUG]-Failed to get routes. Discarding message.
Solution : vérifiez les abonnements dans votre groupe et assurez-vous que l'abonnement répertorié dans le message [DEBUG]
existe.
Error: [Errno 24] Too many open <lambda-function>,[Errno 24] Too many open files
Solution : cette erreur peut s'afficher dans le fichier journal de votre fonction Lambda si la fonction est instanciée StreamManagerClient
dans le gestionnaire de fonctions. Nous vous recommandons de créer le client en dehors du gestionnaire. Pour plus d’informations, consultez Utiliser StreamManagerClient pour travailler avec des flux.
Erreur : le serveur DS n'a pas pu démarrer l'écoute du socket : listen unix <ggc-path>/ggc/socket/greengrass_ipc.sock : bind : argument non valide
Solution : cette erreur peut s'afficher lorsque le logiciel AWS IoT Greengrass Core ne démarre pas. Cette erreur se produit lorsque le logiciel AWS IoT Greengrass Core est installé dans un dossier dont le chemin de fichier est long. Réinstallez le logiciel AWS IoT Greengrass Core dans un dossier dont le chemin de fichier contient moins de 79 octets, si vous n'utilisez pas de répertoire d'écriture, ou 83 octets, si vous utilisez un répertoire d'écriture.
[INFO] (Photocopieur) aws.greengrass. StreamManager: stdout. Causé par : com.fasterxml.jackson.databind. JsonMappingException: l'instant dépasse l'instant minimum ou maximum
Lorsque vous mettez à niveau le logiciel AWS IoT Greengrass principal vers la version v1.11.3, l'erreur suivante peut s'afficher dans les journaux du gestionnaire de flux si le gestionnaire de flux ne démarre pas.
2021-07-16T00:54:58.568Z [INFO] (Copier) aws.greengrass.StreamManager: stdout. Caused by: com.fasterxml.jackson.databind.JsonMappingException: Instant exceeds minimum or maximum instant (through reference chain: com.amazonaws.iot.greengrass.streammanager.export.PersistedSuccessExportStatesV1["lastExportTime"]). {scriptName=services.aws.greengrass.StreamManager.lifecycle.startup.script, serviceName=aws.greengrass.StreamManager, currentState=STARTING} 2021-07-16T00:54:58.579Z [INFO] (Copier) aws.greengrass.StreamManager: stdout. Caused by: java.time.DateTimeException: Instant exceeds minimum or maximum instant. {scriptName=services.aws.greengrass.StreamManager.lifecycle.startup.script, serviceName=aws.greengrass.StreamManager, currentState=STARTING}
Si vous utilisez une version du logiciel AWS IoT Greengrass principal antérieure à la version v1.11.3 et que vous souhaitez passer à une version ultérieure, utilisez une mise à jour OTA pour passer à la version v1.11.4.
GPG error: https://dnw9lb6lzp2d8.cloudfront.net stable InRelease: The following signatures were invalid: EXPKEYSIG 68D644ABD2327D47 AWS Greengrass Master Key
Lorsque vous l'exécutez apt update
sur un appareil sur lequel vous avez installé le logiciel AWS IoT Greengrass principal à partir d'un dépôt APT, l'erreur suivante peut s'afficher.
Err:4 https://dnw9lb6lzp2d8.cloudfront.net stable InRelease The following signatures were invalid: EXPKEYSIG 68D644ABD2327D47 AWS Greengrass Master Key Reading package lists... Done W: GPG error: https://dnw9lb6lzp2d8.cloudfront.net stable InRelease: The following signatures were invalid: EXPKEYSIG 68D644ABD2327D47 AWS Greengrass Master Key
Cette erreur se produit car il AWS IoT Greengrass n'est plus possible d'installer ou de mettre à jour le logiciel AWS IoT Greengrass principal à partir du référentiel APT. Pour une exécution réussieapt
update
, supprimez le AWS IoT Greengrass référentiel de la liste des sources de l'appareil.
sudo rm /etc/apt/sources.list.d/greengrass.list sudo apt update
Problèmes de déploiement
Utilisez les informations suivantes pour résoudre les problèmes de déploiement.
Problèmes
- Votre déploiement actuel ne fonctionne pas et vous souhaitez revenir à un déploiement opérationnel précédent.
- L'erreur 403 Interdit s'affiche dans les journaux lors du déploiement.
- Une ConcurrentDeployment erreur se produit lorsque vous exécutez la commande create-deployment pour la première fois.
- Erreur : Greengrass n'est pas autorisé à assumer le rôle de service associé à ce compte, ou erreur : Échec : le rôle de service TES n'est pas associé à ce compte.
- Erreur : impossible d'exécuter l'étape de téléchargement dans le déploiement. erreur lors du téléchargement : erreur lors du téléchargement du fichier de définition de groupe :... x509 : le certificat a expiré ou n'est pas encore valide
- Le déploiement n'est pas terminé.
- Erreur : Impossible de trouver les exécutables Java ou Java8, ou erreur : <deployment-id><group-id>échec du déploiement du type NewDeployment pour le groupe Erreur : le travailleur n'a <worker-id>pas pu s'initialiser avec raison La version Java installée doit être supérieure ou égale à 8
- Le déploiement n'est pas terminé et runtime.log contient plusieurs entrées « attendre 1 s que le conteneur s'arrête ».
- Le déploiement ne se termine pas et runtime.log contient « [ERROR]-Greengrass deployment error: failed to report deployment status back to cloud {"deploymentId": "<deployment-id>", "errorString": "Failed to initiate PUT, endpoint: https://<deployment-status>, error: Put https://<deployment-status>: proxyconnect tcp: x509: certificate signed by unknown authority"} ».
- <path>Erreur : <deployment-id><group-id>échec du déploiement du type NewDeployment pour le groupe Erreur : erreur lors du traitement. la configuration du groupe n'est pas valide : 112 ou [119 0] n'ont pas l'autorisation rw sur le fichier :.
- Erreur : < list-of-function-arns > sont configurés pour s'exécuter en tant que root, mais Greengrass n'est pas configuré pour exécuter les fonctions Lambda avec les autorisations root.
- Erreur : <deployment-id><group-id>échec du déploiement du type NewDeployment pour le groupe Erreur : erreur de déploiement de Greengrass : impossible d'exécuter l'étape de téléchargement lors du déploiement. erreur lors du traitement : impossible de charger le fichier de groupe téléchargé : UID introuvable sur la base du nom d'utilisateur, UserName : ggc_user : user : unknown user ggc_user.
- Error: [ERROR]-runtime execution error: unable to start lambda container. {"errorString": "failed to initialize container mounts: failed to mask greengrass root in overlay upper dir: failed to create mask device at directory <ggc-path>: file exists"}
- Erreur : échec <deployment-id>du déploiement du type NewDeployment pour le groupe <group-id>Erreur : échec du démarrage du processus : container_linux.go:259 : le démarrage du processus conteneur a provoqué « process_linux.go:250 : running exec setns process for init caused \" wait : no child processes \ "».
- <host-prefix>Erreur : [WARN] -MQTT [client] compose tcp : lookup -ats.iot. <region>.amazonaws.com : aucun hôte de ce type... [ERREUR] -Erreur de déploiement de Greengrass : impossible de signaler l'état du déploiement au cloud... net/http : demande annulée en attendant la connexion (Client.Timeout dépassé pendant l'attente des en-têtes)
Votre déploiement actuel ne fonctionne pas et vous souhaitez revenir à un déploiement opérationnel précédent.
Solution : utilisez la AWS IoT console ou AWS IoT Greengrass l'API pour redéployer un déploiement fonctionnel précédent. Cela déploie la version de groupe correspondante sur votre appareil principal.
Pour redéployer un déploiement (console)
-
Sur la page de configuration du groupe, choisissez l'onglet Déploiements. Cette page affiche l'historique de déploiement du groupe, y compris la date et l'heure, la version du groupe et l'état de chaque tentative de déploiement.
-
Recherchez la ligne qui contient le déploiement que vous souhaitez redéployer. Sélectionnez le déploiement que vous souhaitez redéployer, puis choisissez Redéployer.
Pour redéployer un déploiement (interface de ligne de commande)
-
ListDeploymentsUtilisez-le pour trouver l'ID du déploiement que vous souhaitez redéployer. Par exemple :
aws greengrass list-deployments --group-id 74d0b623-c2f2-4cad-9acc-ef92f61fcaf7
La commande renvoie la liste des déploiements pour le groupe.
{ "Deployments": [ { "DeploymentId": "8d179428-f617-4a77-8a0c-3d61fb8446a6", "DeploymentType": "NewDeployment", "GroupArn": "arn:aws:greengrass:us-west-2:123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/versions/8dd1d899-4ac9-4f5d-afe4-22de086efc62", "CreatedAt": "2019-07-01T20:56:49.641Z" }, { "DeploymentId": "f8e4c455-8ac4-453a-8252-512dc3e9c596", "DeploymentType": "NewDeployment", "GroupArn": "arn:aws:greengrass:us-west-2::123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/versions/4ad66e5d-3808-446b-940a-b1a788898382", "CreatedAt": "2019-07-01T20:41:47.048Z" }, { "DeploymentId": "e4aca044-bbd8-41b4-b697-930ca7c40f3e", "DeploymentType": "NewDeployment", "GroupArn": "arn:aws:greengrass:us-west-2::123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/versions/1f3870b6-850e-4c97-8018-c872e17b235b", "CreatedAt": "2019-06-18T15:16:02.965Z" } ] }
Note
Ces commandes AWS CLI utilisent des exemples de valeurs pour le groupe et l'ID de déploiement. Lorsque vous exécutez les commandes, veillez à remplacer les exemples de valeurs.
-
CreateDeploymentÀ utiliser pour redéployer le déploiement cible. Définissez le type de déploiement sur
Redeployment
. Par exemple :aws greengrass create-deployment --deployment-type Redeployment \ --group-id 74d0b623-c2f2-4cad-9acc-ef92f61fcaf7 \ --deployment-id f8e4c455-8ac4-453a-8252-512dc3e9c596
La commande renvoie l'ARN et l'ID du nouveau déploiement.
{ "DeploymentId": "f9ed02b7-c28e-4df6-83b1-e9553ddd0fc2", "DeploymentArn": "arn:aws:greengrass:us-west-2::123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/deployments/f9ed02b7-c28e-4df6-83b1-e9553ddd0fc2" }
-
GetDeploymentStatusUtilisez-le pour obtenir l'état du déploiement.
L'erreur 403 Interdit s'affiche dans les journaux lors du déploiement.
Solution : assurez-vous que la politique du AWS IoT Greengrass noyau dans le cloud inclut "greengrass:*"
une action autorisée.
Une ConcurrentDeployment erreur se produit lorsque vous exécutez la commande create-deployment pour la première fois.
Solution : un déploiement est peut-être en cours. Vous pouvez exécuter get-deployment-status pour voir si un déploiement a été créé. Si ce n'est pas le cas, essayez de recréer le déploiement.
Erreur : Greengrass n'est pas autorisé à assumer le rôle de service associé à ce compte, ou erreur : Échec : le rôle de service TES n'est pas associé à ce compte.
Solution : vous pouvez voir cette erreur lorsque le déploiement échoue. Vérifiez qu'un rôle de service Greengrass est actuellement associé à votre rôle Compte AWS dans le service. Région AWS Pour plus d’informations, consultez Gestion du rôle de service Greengrass (interface de ligne de commande) ou Gestion du rôle de service Greengrass (console).
Erreur : impossible d'exécuter l'étape de téléchargement dans le déploiement. erreur lors du téléchargement : erreur lors du téléchargement du fichier de définition de groupe :... x509 : le certificat a expiré ou n'est pas encore valide
Solution : vous pouvez voir cette erreur dans runtime.log
lorsque le déploiement échoue. Si vous recevez une erreur Deployment failed
contenant le message x509:
certificate has expired or is not yet valid
, vérifiez l'horloge de l'appareil. Les certificats TLS et X.509 fournissent une base sécurisée pour la construction de systèmes IoT, mais ils nécessitent des temps précis sur les serveurs et les clients. Les appareils IoT doivent avoir l'heure correcte (dans les 15 minutes) avant de tenter de se connecter à AWS IoT Greengrass ou à d'autres services TLS qui utilisent des certificats de serveur. Pour plus d'informations, consultez la section Utilisation de l'heure de l'appareil pour valider les certificats de AWS IoT serveur
Le déploiement n'est pas terminé.
Solution : effectuez les opérations suivantes :
-
Assurez-vous que le démon AWS IoT 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.
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.La version du chemin d'accès dépend de la version du logiciel AWS IoT Greengrass Core installée sur votre appareil principal.
Pour démarrer le daemon, procédez comme suit :
cd /greengrass/ggc/core/ sudo ./greengrassd start
-
Assurez-vous que votre appareil principal est connecté et que les points de terminaison de connexion à l'appareil principal sont configurés correctement.
Erreur : Impossible de trouver les exécutables Java ou Java8, ou erreur : <deployment-id><group-id>échec du déploiement du type NewDeployment pour le groupe Erreur : le travailleur n'a <worker-id>pas pu s'initialiser avec raison La version Java installée doit être supérieure ou égale à 8
Solution : Si le gestionnaire de flux est activé pour le AWS IoT Greengrass noyau, vous devez installer le runtime Java 8 sur le périphérique principal avant de déployer le groupe. Pour de plus amples informations, veuillez consulter la configuration requise pour le gestionnaire de flux. Le gestionnaire de flux est activé par défaut lorsque vous utilisez le flux de travail de création de groupes par défaut dans la AWS IoT console pour créer un groupe.
Ou, désactivez le gestionnaire de flux, puis déployez le groupe. Pour plus d’informations, consultez Configurer les paramètres du gestionnaire de flux (console).
Le déploiement n'est pas terminé et runtime.log contient plusieurs entrées « attendre 1 s que le conteneur s'arrête ».
Solution : exécutez les commandes suivantes sur votre terminal principal pour redémarrer le démon AWS IoT Greengrass.
cd /greengrass/ggc/core/ sudo ./greengrassd stop sudo ./greengrassd start
Le déploiement ne se termine pas et runtime.log
contient « [ERROR]-Greengrass deployment error: failed to report deployment status back to cloud {"deploymentId": "<deployment-id>", "errorString": "Failed to initiate PUT, endpoint: https://<deployment-status>, error: Put https://<deployment-status>: proxyconnect tcp: x509: certificate signed by unknown authority"} ».
Solution : Cette erreur peut s'afficher dans runtime.log
lorsque le noyau Greengrass est configuré pour utiliser une connexion proxy HTTPS et que la chaîne de certificats du serveur proxy n'est pas approuvée sur le système. Pour essayer de résoudre ce problème, ajoutez la chaîne de certificats au certificat d'autorité de certification racine. Le noyau Greengrass ajoute les certificats de ce fichier dans le groupe de certificats utilisé pour l'authentification TLS dans les connexions HTTPS et MQTT avec AWS IoT Greengrass.
L'exemple suivant présente un certificat d'autorité de certification de serveur proxy ajouté au fichier de certificat d'autorité de certification racine :
# My proxy CA -----BEGIN CERTIFICATE----- MIIEFTCCAv2gAwIQWgIVAMHSAzWG/5YVRYtRQOxXUTEpHuEmApzGCSqGSIb3DQEK \nCwUAhuL9MQswCQwJVUzEPMAVUzEYMBYGA1UECgwP1hem9uLmNvbSBJbmMuMRww ...
content of proxy CA certificate
... +vHIRlt0e5JAm5\noTIZGoFbK82A0/nO7f/t5PSIDAim9V3Gc3pSXxCCAQoFYnui GaPUlGk1gCE84a0X\n7Rp/lND/PuMZ/s8YjlkY2NmYmNjMCAXDTE5MTEyN2cM216 gJMIADggEPADf2/m45hzEXAMPLE= -----END CERTIFICATE----- # Amazon Root CA 1 -----BEGIN CERTIFICATE----- MIIDQTCCAimgF6AwIBAgITBmyfz/5mjAo54vB4ikPmljZKyjANJmApzyMZFo6qBg ADA5MQswCQYDVQQGEwJVUzEPMA0tMVT8QtPHRh8jrdkGA1UEChMGDV3QQDExBBKW ...content of root CA certificate
... o/ufQJQWUCyziar1hem9uMRkwFwYVPSHCb2XV4cdFyQzR1KldZwgJcIQ6XUDgHaa 5MsI+yMRQ+hDaXJiobldXgjUka642M4UwtBV8oK2xJNDd2ZhwLnoQdeXeGADKkpy rqXRfKoQnoZsG4q5WTP46EXAMPLE -----END CERTIFICATE-----
Par défaut, le fichier de certificat d'autorité de certification racine se trouve dans /
. Pour rechercher l'emplacement sur votre appareil noyau, vérifiez la propriété greengrass-root
/certs/root.ca.pemcrypto.caPath
dans config.json.
Note
greengrass-root
indique le chemin d'installation du logiciel AWS IoT Greengrass Core sur votre appareil. Généralement, il s'agit du répertoire /greengrass
.
<path>Erreur : <deployment-id><group-id>échec du déploiement du type NewDeployment pour le groupe Erreur : erreur lors du traitement. la configuration du groupe n'est pas valide : 112 ou [119 0] n'ont pas l'autorisation rw sur le fichier :.
Solution : assurez-vous que le groupe propriétaire du répertoire <chemin>
dispose des autorisations de lecture et d'écriture sur le répertoire.
Erreur : < list-of-function-arns > sont configurés pour s'exécuter en tant que root, mais Greengrass n'est pas configuré pour exécuter les fonctions Lambda avec les autorisations root.
Solution : vous pouvez voir cette erreur dans runtime.log
lorsque le déploiement échoue. Assurez-vous que vous avez configuré AWS IoT Greengrass pour autoriser les fonctions Lambda à s'exécuter avec les autorisations root. Modifiez la valeur de allowFunctionsToRunAsRoot
in greengrass_root/config/config.json
to yes
ou modifiez la fonction Lambda pour qu'elle s'exécute en tant qu'autre utilisateur/groupe. Pour plus d’informations, consultez Exécution d'une fonction Lambda en tant que root.
Erreur : <deployment-id><group-id>échec du déploiement du type NewDeployment pour le groupe Erreur : erreur de déploiement de Greengrass : impossible d'exécuter l'étape de téléchargement lors du déploiement. erreur lors du traitement : impossible de charger le fichier de groupe téléchargé : UID introuvable sur la base du nom d'utilisateur, UserName : ggc_user : user : unknown user ggc_user.
Solution : Si l'identité d'accès par défaut du AWS IoT Greengrass groupe utilise les comptes système standard, l'ggc_user
utilisateur et le ggc_group
groupe doivent être présents sur l'appareil. Pour obtenir des instructions qui expliquent comment ajouter l'utilisateur et le groupe, consultez cette étape. Assurez-vous d'entrer les noms exactement comme indiqué.
Error: [ERROR]-runtime execution error: unable to start lambda container. {"errorString": "failed to initialize container mounts: failed to mask greengrass root in overlay upper dir: failed to create mask device at directory <ggc-path>: file exists"}
Solution : vous pouvez voir cette erreur dans runtime.log
lorsque le déploiement échoue. Cette erreur se produit si une fonction Lambda du groupe Greengrass ne peut pas accéder au /usr
répertoire dans le système de fichiers du noyau. Pour résoudre ce problème, ajoutez une ressource de volume local au groupe, puis déployez le groupe. La ressource doit :
-
Spécifier
/usr
comme chemin source et chemin de destination -
Ajouter automatiquement les autorisations de groupe de système d'exploitation du groupe Linux qui possède la ressource
-
Affiliez-vous à la fonction Lambda et autorisez l'accès en lecture seule.
Erreur : échec <deployment-id>du déploiement du type NewDeployment pour le groupe <group-id>Erreur : échec du démarrage du processus : container_linux.go:259 : le démarrage du processus conteneur a provoqué « process_linux.go:250 : running exec setns process for init caused \" wait : no child processes \ "».
Solution : vous pouvez voir cette erreur lorsque le déploiement échoue. Retentez le déploiement.
<host-prefix>Erreur : [WARN] -MQTT [client] compose tcp : lookup -ats.iot. <region>.amazonaws.com : aucun hôte de ce type... [ERREUR] -Erreur de déploiement de Greengrass : impossible de signaler l'état du déploiement au cloud... net/http : demande annulée en attendant la connexion (Client.Timeout dépassé pendant l'attente des en-têtes)
Solution : vous pouvez voir cette erreur si vous utilisez systemd-resolved
, ce qui active le paramètre DNSSEC
par défaut. Par conséquent, de nombreux domaines publics ne sont pas reconnus. Les tentatives d'atteindre le point de terminaison AWS IoT Greengrass ne parviennent pas à trouver l'hôte. Vos déploiements restent donc à l'état In
Progress
.
Vous pouvez utiliser les commandes et la sortie suivantes pour tester ce problème. Remplacez l'espace réservé à la région
dans les points de terminaison par votre. Région AWS
$
ping greengrass-ats.iot.region
.amazonaws.com.rproxy.goskope.comping: greengrass-ats.iot.
region
.amazonaws.com: Name or service not known
$
systemd-resolve greengrass-ats.iot.region
.amazonaws.com.rproxy.goskope.comgreengrass-ats.iot.
region
.amazonaws.com: resolve call failed: DNSSEC validation failed: failed-auxiliary
Une solution possible consiste à désactiver DNSSEC
. Lorsque DNSSEC
a pour valeur false
, les recherches DNS ne sont pas validées par DNSSEC
. Pour plus d'informations, consultez ce problème connusystemd
.
-
Ajoutez
DNSSEC=false
à/etc/systemd/resolved.conf
. -
Redémarrez
systemd-resolved
.
Pour plus d'informations sur resolved.conf
et DNSSEC
, exécutez man resolved.conf
dans votre terminal.
Problèmes de création de groupe ou de fonction
Utilisez les informations suivantes pour résoudre les problèmes liés à la création d'un AWS IoT Greengrass groupe ou d'une fonction Greengrass Lambda.
Problèmes
- Erreur : votre configuration « IsolationMode » pour le groupe n'est pas valide.
- Erreur : votre configuration « IsolationMode » pour la fonction avec arn <function-arn>n'est pas valide.
- Erreur : MemorySize la configuration de la fonction avec arn <function-arn>n'est pas autorisée dans IsolationMode =NoContainer.
- Erreur : la configuration Access Sysfs pour la fonction avec arn <function-arn>n'est pas autorisée dans IsolationMode =. NoContainer
- Erreur : MemorySize la configuration de la fonction avec arn <function-arn>est requise dans IsolationMode =GreengrassContainer.
- Erreur : <function-arn>La fonction fait référence à une ressource <resource-type>dont le type n'est pas autorisé dans IsolationMode =NoContainer.
- Erreur : la configuration d'Execution pour la fonction ayant l'arn <arn-fonction> n'est pas autorisée.
Erreur : votre configuration « IsolationMode » pour le groupe n'est pas valide.
Solution : cette erreur se produit lorsque la valeur IsolationMode
dans la section DefaultConfig
de function-definition-version
n'est pas prise en charge. Les valeurs prises en charge sont GreengrassContainer
et NoContainer
.
Erreur : votre configuration « IsolationMode » pour la fonction avec arn <function-arn>n'est pas valide.
Solution : cette erreur se produit lorsque la valeur IsolationMode
de la section <arn-fonction> de function-definition-version
n'est pas prise en charge. Les valeurs prises en charge sont GreengrassContainer
et NoContainer
.
Erreur : MemorySize la configuration de la fonction avec arn <function-arn>n'est pas autorisée dans IsolationMode =NoContainer.
Solution : Cette erreur se produit lorsque vous spécifiez une MemorySize
valeur et que vous choisissez de l'exécuter sans conteneurisation. Les fonctions Lambda exécutées sans conteneurisation ne peuvent pas être soumises à des limites de mémoire. Vous pouvez soit supprimer la limite, soit modifier la fonction Lambda pour qu'elle s'exécute dans un AWS IoT Greengrass conteneur.
Erreur : la configuration Access Sysfs pour la fonction avec arn <function-arn>n'est pas autorisée dans IsolationMode =. NoContainer
Solution : Cette erreur se produit lorsque vous spécifiez true
pour AccessSysfs
et que vous choisissez de l'exécuter sans conteneurisation. Les fonctions Lambda exécutées sans conteneurisation doivent avoir leur code mis à jour pour accéder directement au système de fichiers et ne peuvent pas être utilisées. AccessSysfs
Vous pouvez soit spécifier la valeur false
for, AccessSysfs
soit modifier la fonction Lambda pour qu'elle s'exécute dans un AWS IoT Greengrass conteneur.
Erreur : MemorySize la configuration de la fonction avec arn <function-arn>est requise dans IsolationMode =GreengrassContainer.
Solution : Cette erreur se produit parce que vous n'avez pas spécifié de MemorySize
limite pour une fonction Lambda que vous exécutez dans un AWS IoT Greengrass conteneur. Spécifiez une valeur MemorySize
pour résoudre l'erreur.
Erreur : <function-arn>La fonction fait référence à une ressource <resource-type>dont le type n'est pas autorisé dans IsolationMode =NoContainer.
Solution : Vous ne pouvez pas accéder aux types de S3_Object.Generic_Archive
ressources Local.Device
Local.Volume
ML_Model.SageMaker.Job
ML_Model.S3_Object
,, ou lorsque vous exécutez une fonction Lambda sans conteneurisation. Si vous avez besoin de ces types de ressources, vous devez les exécuter dans un conteneur AWS IoT Greengrass. Vous pouvez également accéder directement aux appareils locaux lorsque vous les exécutez sans conteneurisation en modifiant le code de votre fonction Lambda.
Erreur : la configuration d'Execution pour la fonction ayant l'arn <arn-fonction> n'est pas autorisée.
Solution : Cette erreur se produit lorsque vous créez une fonction Lambda système avec GGIPDetector
ou GGCloudSpooler
que vous avez spécifié IsolationMode
ou RunAs
configuré. Vous devez omettre les Execution
paramètres de cette fonction Lambda du système.
Problèmes de détection
Utilisez les informations suivantes pour résoudre les problèmes liés au service de découverte AWS IoT Greengrass.
Erreur : l'appareil appartient à un trop grand nombre de groupes, les appareils ne peuvent pas être dans plus de 10 groupes
Solution : il s'agit d'une limitation connue. Un appareil client peut appartenir à un maximum de 10 groupes.
Problèmes liés aux ressources de machine learning
Utilisez les informations suivantes pour résoudre les problèmes liés aux ressources de Machine Learning.
Problèmes
- InvalidML ModelOwner - GroupOwnerSetting est fourni dans la ressource du modèle ML, mais n' GroupOwner GroupPermission est pas présent
- NoContainer La fonction ne peut pas configurer les autorisations lors de l'attachement de ressources Machine Learning. <function-arn>fait référence à une ressource d'apprentissage automatique <resource-id>avec autorisation <ro/rw> dans la politique d'accès aux ressources.
- <function-arn>La fonction fait référence à une ressource Machine Learning dont l'<resource-id>autorisation est manquante à la fois dans la ressource ResourceAccessPolicy et dans la ressource OwnerSetting.
- <function-arn>La fonction fait référence à la ressource Machine Learning <resource-id>avec l'autorisation \ "rw \ », tandis que le paramètre du propriétaire de la ressource autorise GroupPermission uniquement \ "ro \ ».
- NoContainer La fonction <function-arn>fait référence aux ressources du chemin de destination imbriqué.
- La fonction Lambda <function-arn> accède à la ressource <resource-id> en partageant le même identifiant de propriétaire de groupe
InvalidML ModelOwner - GroupOwnerSetting est fourni dans la ressource du modèle ML, mais n' GroupOwner GroupPermission est pas présent
Solution : vous recevez cette erreur si une ressource d'apprentissage automatique contient l'ResourceDownloadOwnerSettingobjet mais que la GroupPermission
propriété GroupOwner
ou la propriété requise n'est pas définie. Pour résoudre ce problème, définissez la propriété manquante.
NoContainer La fonction ne peut pas configurer les autorisations lors de l'attachement de ressources Machine Learning. <function-arn>fait référence à une ressource d'apprentissage automatique <resource-id>avec autorisation <ro/rw> dans la politique d'accès aux ressources.
Solution : vous recevez cette erreur si une fonction Lambda non conteneurisée spécifie des autorisations au niveau de la fonction pour une ressource de machine learning. Les fonctions non conteneurisées doivent hériter des autorisations du propriétaire de la ressource définies sur la ressource de Machine Learning. Pour résoudre ce problème, choisissez d'hériter des autorisations du propriétaire des ressources (console) ou de supprimer les autorisations de la politique d'accès aux ressources (API) de la fonction Lambda.
<function-arn>La fonction fait référence à une ressource Machine Learning dont l'<resource-id>autorisation est manquante à la fois dans la ressource ResourceAccessPolicy et dans la ressource OwnerSetting.
Solution : vous recevez cette erreur si les autorisations d'accès à la ressource d'apprentissage automatique ne sont pas configurées pour la fonction Lambda attachée ou pour la ressource. Pour résoudre ce problème, configurez les autorisations dans la ResourceAccessPolicypropriété de la fonction Lambda ou dans la OwnerSettingpropriété de la ressource.
<function-arn>La fonction fait référence à la ressource Machine Learning <resource-id>avec l'autorisation \ "rw \ », tandis que le paramètre du propriétaire de la ressource autorise GroupPermission uniquement \ "ro \ ».
Solution : vous recevez cette erreur si les autorisations d'accès définies pour la fonction Lambda associée dépassent les autorisations du propriétaire de la ressource définies pour la ressource d'apprentissage automatique. Pour résoudre ce problème, définissez des autorisations plus restrictives pour la fonction Lambda ou des autorisations moins restrictives pour le propriétaire de la ressource.
NoContainer La fonction <function-arn>fait référence aux ressources du chemin de destination imbriqué.
Solution : vous recevez cette erreur si plusieurs ressources de machine learning associées à une fonction Lambda non conteneurisée utilisent le même chemin de destination ou un chemin de destination imbriqué. Pour résoudre ce problème, spécifiez des chemins de destination distincts pour les ressources.
La fonction Lambda <function-arn> accède à la ressource <resource-id> en partageant le même identifiant de propriétaire de groupe
Solution : vous recevez cette erreur runtime.log
si le même groupe de système d'exploitation est spécifié comme identité Run as de la fonction Lambda et propriétaire de la ressource pour une ressource d'apprentissage automatique, mais que la ressource n'est pas attachée à la fonction Lambda. Cette configuration donne à la fonction Lambda des autorisations implicites qu'elle peut utiliser pour accéder à la ressource sans AWS IoT Greengrass autorisation.
Pour résoudre ce problème, utilisez un autre groupe de systèmes d'exploitation pour l'une des propriétés ou associez la ressource d'apprentissage automatique à la fonction Lambda.
Problèmes AWS IoT Greengrass Core dans Docker
Utilisez les informations suivantes pour résoudre les problèmes liés à l'exécution d'un AWS IoT Greengrass noyau dans un conteneur Docker.
Problèmes
- Erreur : options inconnues : -no-include-email.
- Avertissement : IPv4 est désactivé. La mise en réseau ne fonctionnera pas.
- Erreur : Un pare-feu bloque le partage de fichiers entre les fenêtres et les conteneurs.
- Erreur : une erreur s'est produite (AccessDeniedException) lors de l'appel de l' GetAuthorizationToken opération : L'utilisateur : arn:aws:iam : ::user/ <account-id><user-name>n'est pas autorisé à effectuer : ecr : on resource : * GetAuthorizationToken
- Erreur : Impossible de créer un conteneur pour le service greengrass : conflit. Le nom du conteneur «/aws-iot-greengrass» est déjà utilisé.
- Erreur : [FATAL] - Échec de la réinitialisation de l'espace de noms de montage du thread en raison d'une erreur inattendue : « opération non autorisée ». Pour maintenir la cohérence, GGC tombe en panne et doit être redémarré manuellement.
Erreur : options inconnues : -no-include-email.
Solution : cette erreur peut se produire lorsque vous exécutez la commande aws ecr get-login
. Assurez-vous que vous disposez de la dernière version de l'interface de ligne de commande AWS CLI installée (par exemple, exécutez : pip install awscli --upgrade --user
). Si vous utilisez Windows et avez installé l'interface de ligne de commande à l'aide du programme d'installation MSI, vous devez répéter le processus d'installation. Pour plus d'informations, consultez la section Installation du AWS Command Line Interface sous Microsoft Windows dans le Guide de AWS Command Line Interface l'utilisateur.
Avertissement : IPv4 est désactivé. La mise en réseau ne fonctionnera pas.
Solution : vous pouvez recevoir cet avertissement ou un message similaire lors de l'exécution d'AWS IoT Greengrass sur un ordinateur Linux. Activez le réacheminement réseau IPv4 comme décrit dans cette étape. Le déploiement cloud AWS IoT Greengrass et les communications MQTT ne fonctionnent pas lorsque le réacheminement IPv4 n'est pas activé. Pour plus d'informations, consultez Configurer les paramètres du noyau dans un espace de noms (sysctls) lors de l'exécution
Erreur : Un pare-feu bloque le partage de fichiers entre les fenêtres et les conteneurs.
Solution : vous pouvez recevoir cette erreur ou un message Firewall Detected
lors de l'exécution de Docker sur un ordinateur Windows. Ce problème peut également survenir si vous êtes connecté à un réseau privé virtuel (VPN) et que vos paramètres réseau empêchent le montage du lecteur partagé. Dans ce cas, désactivez le VPN et réexécutez le conteneur Docker.
Erreur : une erreur s'est produite (AccessDeniedException) lors de l'appel de l' GetAuthorizationToken opération : L'utilisateur : arn:aws:iam : ::user/ <account-id><user-name>n'est pas autorisé à effectuer : ecr : on resource : * GetAuthorizationToken
Vous pouvez recevoir cette erreur lors de l'exécution de la aws ecr get-login-password
commande si vous ne disposez pas des autorisations suffisantes pour accéder à un référentiel Amazon ECR. Pour plus d'informations, consultez les exemples de politiques relatives aux référentiels Amazon ECR et l'accès à un référentiel Amazon ECR dans le guide de l'utilisateur Amazon ECR.
Erreur : Impossible de créer un conteneur pour le service greengrass : conflit. Le nom du conteneur «/aws-iot-greengrass» est déjà utilisé.
Solution : cela peut se produire lorsque le nom du conteneur est utilisé par un conteneur plus ancien. Pour résoudre ce problème, exécutez la commande suivante afin de supprimer l'ancien conteneur Docker :
docker rm -f $(docker ps -a -q -f "name=aws-iot-greengrass")
Erreur : [FATAL] - Échec de la réinitialisation de l'espace de noms de montage du thread en raison d'une erreur inattendue : « opération non autorisée ». Pour maintenir la cohérence, GGC tombe en panne et doit être redémarré manuellement.
Solution : Cette erreur runtime.log
peut se produire lorsque vous essayez de déployer une fonction GreengrassContainer
Lambda sur un AWS IoT Greengrass cœur exécuté dans un conteneur Docker. Actuellement, seules les fonctions NoContainer
Lambda peuvent être déployées sur un conteneur Greengrass Docker.
Pour résoudre ce problème, assurez-vous que toutes les fonctions Lambda sont en NoContainer mode et lancez un nouveau déploiement. Ensuite, lors du démarrage du conteneur, ne montez pas le deployment
répertoire existant sur le conteneur Docker AWS IoT Greengrass principal. Au lieu de cela, créez un répertoire deployment
vide à sa place et liez-le ou montez-le dans le conteneur Docker. Cela permet au nouveau conteneur Docker de recevoir le dernier déploiement avec des fonctions Lambda exécutées en NoContainer
mode.
Pour plus d’informations, consultez Exécution de AWS IoT Greengrass dans un conteneur Docker.
Résolution des problèmes liés aux journaux
Vous pouvez configurer les paramètres de journalisation pour un groupe Greengrass, par exemple s'il faut envoyer les CloudWatch journaux à Logs, les stocker sur le système de fichiers local, ou les deux. Pour obtenir des informations détaillées lors de la résolution des problèmes, vous pouvez temporairement définir le niveau de journalisation sur DEBUG
. Les modifications apportées aux paramètres de journalisation prennent effet lorsque vous déployez le groupe. Pour plus d’informations, consultez Configurer la journalisation pour AWS IoT Greengrass.
Sur le système de fichiers local, AWS IoT Greengrass stocke les journaux dans les emplacements suivants. La lecture des journaux sur le système de fichiers requiert des autorisations racine.
greengrass-root
/ggc/var/log/crash.log-
Affiche les messages générés lorsqu'un AWS IoT Greengrass noyau tombe en panne.
greengrass-root
/ggc/var/log/system/runtime.log-
Affiche les messages sur le composant qui est en échec.
greengrass-root
/ggc/var/log/system/-
Contient tous les journaux des composants système AWS IoT Greengrass, tels que le gestionnaire de certificats et le gestionnaire de connexions. En utilisant les messages affichés dans
ggc/var/log/system/
etggc/var/log/system/runtime.log
, vous devez être en mesure d'identifier les erreurs qui se sont produites dans les composants du système AWS IoT Greengrass. greengrass-root
/ggc/var/log/system/localwatch/-
Contient les journaux du AWS IoT Greengrass composant qui gère le téléchargement des journaux Greengrass vers Logs CloudWatch . Si vous ne pouvez pas consulter les connexions à Greengrass CloudWatch, vous pouvez utiliser ces journaux pour résoudre les problèmes.
greengrass-root
/ggc/var/log/user/-
Contient tous les journaux des fonctions Lambda définies par l'utilisateur. Consultez ce dossier pour trouver les messages d'erreur provenant de vos fonctions Lambda locales.
Note
Par défaut, greengrass_root
est le répertoire /greengrass
. Si un répertoire en écriture est configuré, les journaux se trouvent dans ce répertoire.
Si les journaux sont configurés pour être stockés dans le cloud, utilisez CloudWatch Logs pour afficher les messages des journaux. crash.log
se trouve uniquement dans les journaux du système de fichiers sur le périphérique AWS IoT Greengrass principal.
S'il AWS IoT est configuré pour écrire des journaux dans CloudWatch, vérifiez-les si des erreurs de connexion se produisent lorsque des composants du système tentent de se connecter àAWS IoT.
Pour plus d'informations sur la journalisation AWS IoT Greengrass, consultez Surveillance avec les journaux AWS IoT Greengrass.
Note
Les journaux relatifs aux logiciels AWS IoT Greengrass Core v1.0 sont stockés sous le répertoire
.greengrass-root
/var/log
Résolution des problèmes de stockage
Lorsque le stockage de fichiers local est plein, il se peut que certains composants commencent à tomber en panne :
-
Les mises à jour locales de Shadow ne se produisent pas.
-
Les nouveaux certificats de serveur MQTT AWS IoT Greengrass principaux ne peuvent pas être téléchargés localement.
-
Les déploiements échouent.
Vous devez toujours connaître la quantité d'espace libre disponible en local. Vous pouvez calculer l'espace libre en fonction de la taille des fonctions Lambda déployées, de la configuration de journalisation (voirRésolution des problèmes liés aux journaux) et du nombre d'ombres stockées localement.
Messages de résolution des problèmes
Tous les messages envoyés localement dans AWS IoT Greengrass sont envoyés avec QoS 0. Par défaut, AWS IoT Greengrass stocke les messages dans une file d'attente en mémoire. Par conséquent, les messages non traités sont perdus lorsque le noyau Greengrass redémarre (par exemple après un déploiement de groupe ou un redémarrage de l'appareil). Cependant, vous pouvez configurer AWS IoT Greengrass (v1.6 ou version ultérieure) pour mettre les messages en cache dans le système de fichiers afin qu'ils persistent pendant les redémarrages principaux. Vous pouvez également configurer la taille de la file d'attente. Si vous configurez une taille de file d'attente, assurez-vous qu'elle est supérieure ou égale à 262 144 octets (256 Ko). Sinon, AWS IoT Greengrass risque de ne pas démarrer correctement. Pour plus d’informations, consultez File d'attente de messages MQTT pour les cibles cloud.
Note
Lorsque vous utilisez la file d'attente en mémoire par défaut, nous vous recommandons de déployer des groupes ou de redémarrer l'appareil lorsque l'interruption de service est la moins importante.
Vous pouvez également configurer l'appareil principal (noyau) pour établir des sessions persistantes avec AWS IoT. Cela permet au noyau de recevoir des messages envoyés AWS Cloud alors que le noyau est hors ligne. Pour plus d’informations, consultez Sessions persistantes MQTT avec AWS IoT Core.
Dépannage des problèmes de temporisation de la synchronisation shadow
En cas de retard important dans la communication entre un appareil principal Greengrass et le cloud, la synchronisation shadow peut échouer en raison d'un délai d'expiration. Dans ce cas, vous devriez voir des entrées de journal similaires à ce qui suit :
[2017-07-20T10:01:58.006Z][ERROR]-cloud_shadow_client.go:57,Cloud shadow client error: unable to get cloud shadow what_the_thing_is_named for synchronization. Get https://1234567890abcd.iot.us-west-2.amazonaws.com:8443/things/what_the_thing_is_named/shadow: net/http: request canceled (Client.Timeout exceeded while awaiting headers) [2017-07-20T10:01:58.006Z][WARN]-sync_manager.go:263,Failed to get cloud copy: Get https://1234567890abcd.iot.us-west-2.amazonaws.com:8443/things/what_the_thing_is_named/shadow: net/http: request canceled (Client.Timeout exceeded while awaiting headers) [2017-07-20T10:01:58.006Z][ERROR]-sync_manager.go:375,Failed to execute sync operation {what_the_thing_is_named VersionDiscontinued []}"
Pour remédier à ce problème, vous pouvez configurer la durée pendant laquelle votre appareil principal attend une réponse de l'hôte. Ouvrez le fichier config.json dans
et ajoutez un champ greengrass-root
/configsystem.shadowSyncTimeout
avec une valeur de délai d'attente en secondes. Par exemple :
{ "system": { "shadowSyncTimeout": 10 }, "coreThing": { "caPath": "root-ca.pem", "certPath": "cloud.pem.crt", "keyPath": "cloud.pem.key", ... }, ... }
La valeur par défaut est de 5 secondes si aucune valeur shadowSyncTimeout
n'est spécifiée dans config.json
.
Note
Pour AWS IoT Greengrass Core v1.6 et versions antérieures, la valeur par défaut de l’élément shadowSyncTimeout
est de 1 seconde.
Consultez AWS re:Post
Si vous ne parvenez pas à résoudre votre problème à l'aide des informations de résolution de problèmes contenues dans cette rubrique, vous pouvez rechercher des problèmes connexes Résolution des problèmes de AWS IoT Greengrass ou consulter le AWS IoT Greengrasstag sur AWS Re:post