Résolution des problèmes AWS IoT Greengrass V2 - AWS IoT Greengrass

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 AWS IoT Greengrass V2

Utilisez les informations de dépannage et les solutions de cette section pour résoudre les problèmes liés à AWS IoT Greengrass Version 2.

Afficher les journaux des logiciels AWS IoT Greengrass principaux et des composants

Le logiciel AWS IoT Greengrass Core écrit des journaux dans le système de fichiers local que vous pouvez utiliser pour consulter des informations en temps réel sur le périphérique principal. Vous pouvez également configurer les périphériques principaux pour écrire des journaux dans les CloudWatch journaux, afin de pouvoir dépanner à distance les périphériques principaux. Ces journaux peuvent vous aider à identifier les problèmes liés aux composants, aux déploiements et aux principaux appareils. Pour plus d’informations, consultez AWS IoT GreengrassJournaux de surveillance.

AWS IoT Greengrass Principaux problèmes liés au logiciel

Résoudre les problèmes liés AWS IoT Greengrass au logiciel de base.

Rubriques

Impossible de configurer le périphérique principal

Si le programme d'installation du logiciel AWS IoT Greengrass Core échoue et que vous ne parvenez pas à configurer un appareil principal, vous devrez peut-être désinstaller le logiciel et réessayer. Pour plus d’informations, consultez Désinstallez le logiciel AWS IoT Greengrass Core.

Impossible de démarrer le logiciel AWS IoT Greengrass Core en tant que service système

Si le logiciel AWS IoT Greengrass Core ne démarre pas, consultez les journaux de service du système pour identifier le problème. Un problème courant est que Java n'est pas disponible sur la variable d'environnement PATH (Linux) ou la variable système PATH (Windows).

Impossible de configurer Nucleus en tant que service système

Cette erreur peut s'afficher lorsque le programme d'installation du logiciel AWS IoT Greengrass Core ne parvient pas à être configuré AWS IoT Greengrass en tant que service système. Sur les appareils Linux, cette erreur se produit généralement si le périphérique principal ne possède pas le système d'initialisation systemd. Le programme d'installation peut configurer correctement le logiciel AWS IoT Greengrass Core même s'il ne parvient pas à configurer le service système.

Effectuez l’une des actions suivantes :

  • Configurez et exécutez le logiciel AWS IoT Greengrass Core en tant que service système. Vous devez configurer le logiciel en tant que service système pour utiliser toutes les fonctionnalités de AWS IoT Greengrass. Vous pouvez installer systemd ou utiliser un autre système d'initialisation. Pour plus d’informations, consultez Configurer le noyau Greengrass en tant que service système.

  • Exécutez le logiciel AWS IoT Greengrass Core sans service système. Vous pouvez exécuter le logiciel à l'aide d'un script de chargement que le programme d'installation configure dans le dossier racine de Greengrass. Pour plus d’informations, consultez Exécutez le logiciel AWS IoT Greengrass Core sans service système.

Impossible de se connecter à AWS IoT Core

Cette erreur peut s'afficher lorsque le logiciel AWS IoT Greengrass Core ne parvient pas à se connecter AWS IoT Core pour récupérer des tâches de déploiement, par exemple. Procédez comme suit :

  • Vérifiez que votre appareil principal peut se connecter à Internet et AWS IoT Core. Pour plus d'informations sur le AWS IoT Core point de terminaison auquel votre appareil se connecte, consultezConfiguration du logiciel AWS IoT Greengrass de base.

  • Vérifiez que l'appareil AWS IoT principal de votre appareil utilise un certificat qui autorise les iot:Subscribe autorisations iot:Connect iot:Publishiot:Receive,, et.

  • Si votre appareil principal utilise un proxy réseau, vérifiez qu'il a un rôle d'appareil et que son rôle autorise les iot:Subscribe autorisations iot:Connect iot:Publishiot:Receive,, et.

Erreur de mémoire insuffisante

Cette erreur se produit généralement si votre appareil ne dispose pas de suffisamment de mémoire pour allouer un objet dans le tas Java. Sur les appareils dont la mémoire est limitée, vous devrez peut-être spécifier une taille de segment maximale pour contrôler l'allocation de mémoire. Pour plus d’informations, consultez Contrôlez l'allocation de mémoire à l'aide JVM d'options.

Impossible d'installer Greengrass CLI

Le message de console suivant peut s'afficher lorsque vous utilisez l'--deploy-dev-toolsargument dans votre commande d'installation de AWS IoT Greengrass Core.

Thing group exists, it could have existing deployment and devices, hence NOT creating deployment for Greengrass first party dev tools, please manually create a deployment if you wish to

Cela se produit lorsque le composant Greengrass CLI n'est pas installé parce que votre périphérique principal est membre d'un groupe d'objets déjà déployé. Si ce message s'affiche, vous pouvez déployer manuellement le composant Greengrass CLI (aws.greengrass.Cli) sur le périphérique pour installer la Greengrass CLI. Pour plus d’informations, consultez Installez le Greengrass CLI.

User root is not allowed to execute

Cette erreur peut s'afficher lorsque l'utilisateur qui exécute le logiciel AWS IoT Greengrass Core (généralementroot) n'est pas autorisé à s'exécuter sudo avec un utilisateur ou un groupe. Pour l'utilisateur ggc_user du système par défaut, cette erreur se présente comme suit :

Sorry, user root is not allowed to execute <command> as ggc_user:ggc_group.

Vérifiez que votre /etc/sudoers fichier autorise l'utilisateur à s'exécuter sudo en tant qu'autre groupe. L'autorisation accordée à l'utilisateur /etc/sudoers doit ressembler à l'exemple suivant.

root ALL=(ALL:ALL) ALL

com.aws.greengrass.lifecyclemanager.GenericExternalService: Could not determine user/group to run with

Cette erreur peut s'afficher lorsque le périphérique principal essaie d'exécuter un composant et que le noyau Greengrass ne spécifie pas d'utilisateur système par défaut à utiliser pour exécuter les composants.

Pour résoudre ce problème, configurez le noyau Greengrass pour spécifier l'utilisateur du système par défaut qui exécute les composants. Pour plus d’informations, consultez Configurer l'utilisateur qui exécute les composants et Configuration de l'utilisateur du composant par défaut.

Failed to map segment from shared object: operation not permitted

Cette erreur peut s'afficher lorsque le logiciel AWS IoT Greengrass Core ne démarre pas parce que le /tmp dossier est monté avec des noexec autorisations. La bibliothèque AWS Common Runtime (CRT) utilise le /tmp dossier par défaut.

Effectuez l’une des actions suivantes :

  • Exécutez la commande suivante pour remonter le /tmp dossier avec exec les autorisations et réessayez.

    sudo mount -o remount,exec /tmp
  • Si vous exécutez Greengrass nucleus v2.5.0 ou version ultérieure, vous pouvez définir une option JVM pour modifier le dossier utilisé par la bibliothèque CRT. AWS Vous pouvez spécifier le jvmOptions paramètre dans la configuration du composant Greengrass Nucleus lors d'un déploiement ou lors de l'installation du logiciel AWS IoT Greengrass Core. Remplacez /path/to/use par le chemin d'accès à un dossier que la bibliothèque AWS CRT peut utiliser.

    { "jvmOptions": "-Daws.crt.lib.dir=\"/path/to/use\"" }

Impossible de configurer le service Windows

Cette erreur peut s'afficher si vous installez le logiciel AWS IoT Greengrass Core sur un appareil Microsoft Windows 2016. Le logiciel AWS IoT Greengrass Core n'est pas pris en charge sous Windows 2016. Pour obtenir la liste des systèmes d'exploitation pris en charge, voirPlateformes prises en charge.

Si vous devez utiliser Windows 2016, vous pouvez effectuer les opérations suivantes :

  1. Décompressez l'archive d'installation AWS IoT Greengrass Core téléchargée

  2. Dans le Greengrass répertoire, ouvrez le bin/greengrass.xml.template fichier.

  3. Ajoutez le <autoRefresh> tag à la fin du fichier juste avant le </service> tag.

    </log> <autoRefresh>false</autoRefresh> </service>

com.aws.greengrass.util.exceptions.TLSAuthException: Failed to get trust manager

Cette erreur peut s'afficher lorsque vous installez le logiciel AWS IoT Greengrass Core sans fichier d'autorité de certification (CA) racine.

2022-06-05T10:00:39.556Z [INFO] (main) com.aws.greengrass.lifecyclemanager.Kernel: service-loaded. {serviceName=DeploymentService} 2022-06-05T10:00:39.943Z [WARN] (main) com.aws.greengrass.componentmanager.ClientConfigurationUtils: configure-greengrass-mutual-auth. Error during configure greengrass client mutual auth. {} com.aws.greengrass.util.exceptions.TLSAuthException: Failed to get trust manager

Vérifiez que vous spécifiez un fichier CA racine valide avec le rootCaPath paramètre dans le fichier de configuration que vous fournissez au programme d'installation. Pour plus d’informations, consultez Installer le logiciel AWS IoT Greengrass Core.

com.aws.greengrass.deployment.IotJobsHelper: No connection available during subscribing to Iot Jobs descriptions topic. Will retry in sometime

Ce message d'avertissement peut s'afficher lorsque l'appareil principal ne parvient pas à se connecter pour s'abonner AWS IoT Core aux notifications de tâches de déploiement. Procédez comme suit :

  • Vérifiez que l'appareil principal est connecté à Internet et peut atteindre le point de terminaison de AWS IoT données que vous avez configuré. Pour plus d'informations sur les terminaux utilisés par les appareils principaux, consultezAutoriser le trafic des appareils via un proxy ou un pare-feu.

  • Consultez les journaux de Greengrass pour détecter d'autres erreurs révélant d'autres causes profondes.

software.amazon.awssdk.services.iam.model.IamException: The security token included in the request is invalid

Cette erreur peut s'afficher lorsque vous installez le logiciel AWS IoT Greengrass Core avec un provisionnement automatique et que le programme d'installation utilise un jeton de AWS session non valide. Procédez comme suit :

  • Si vous utilisez des informations d'identification de sécurité temporaires, vérifiez que le jeton de session est correct et que vous copiez et collez le jeton de session complet.

  • Si vous utilisez des informations d'identification de sécurité à long terme, vérifiez que l'appareil ne possède pas de jeton de session datant d'une époque où vous utilisiez auparavant des informations d'identification temporaires. Procédez comme suit :

    1. Exécutez la commande suivante pour désactiver la variable d'environnement du jeton de session.

      Linux or Unix
      unset AWS_SESSION_TOKEN
      Windows Command Prompt (CMD)
      set AWS_SESSION_TOKEN=
      PowerShell
      Remove-Item Env:\AWS_SESSION_TOKEN
    2. Vérifiez si le fichier AWS d'informations d'identification contient un jeton de session,aws_session_token. ~/.aws/credentials Dans ce cas, supprimez cette ligne du fichier.

      aws_session_token = AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4Olgk

Vous pouvez également installer le logiciel AWS IoT Greengrass Core sans fournir AWS d'informations d'identification. Pour plus d’informations, consultez Installation AWS IoT Greengrass du logiciel Core avec provisionnement manuel des ressources ou Installation AWS IoT Greengrass du logiciel de base avec provisionnement du AWS IoT parc.

software.amazon.awssdk.services.iot.model.IotException: User: <user> is not authorized to perform: iot:GetPolicy

Cette erreur peut s'afficher lorsque vous installez le logiciel AWS IoT Greengrass Core avec un provisionnement automatique et que le programme d'installation utilise des AWS informations d'identification ne disposant pas des autorisations requises. Pour plus d'informations sur les autorisations requises, consultezPolitique IAM minimale permettant au programme d'installation de provisionner les ressources.

Vérifiez les autorisations relatives à l'identité IAM des informations d'identification et accordez à l'identité IAM toutes les autorisations requises manquantes.

Error: com.aws.greengrass.shadowmanager.sync.model.FullShadowSyncRequest: Could not execute cloud shadow get request

Cette erreur peut s'afficher lorsque vous utilisez le composant Shadow Manager pour synchroniser les ombres de l'appareil avec AWS IoT Core. Le code d'état HTTP 403 indique que cette erreur s'est produite parce que la AWS IoT politique du périphérique principal n'accorde pas l'autorisation d'appelerGetThingShadow.

com.aws.greengrass.shadowmanager.sync.model.FullShadowSyncRequest: Could not execute cloud shadow get request. {thing name=MyGreengrassCore, shadow name=MyShadow} 2021-07-14T21:09:02.456Z [ERROR] (pool-2-thread-109) com.aws.greengrass.shadowmanager.sync.SyncHandler: sync. Skipping sync request. {thing name=MyGreengrassCore, shadow name=MyShadow} com.aws.greengrass.shadowmanager.exception.SkipSyncRequestException: software.amazon.awssdk.services.iotdataplane.model.IotDataPlaneException: null (Service: IotDataPlane, Status Code: 403, Request ID: f6e713ba-1b01-414c-7b78-5beb3f3ad8f6, Extended Request ID: null)

Pour synchroniser les ombres locales avec AWS IoT Core, la AWS IoT politique de l'appareil principal doit accorder les autorisations suivantes :

  • iot:GetThingShadow

  • iot:UpdateThingShadow

  • iot:DeleteThingShadow

Vérifiez la AWS IoT politique de l'appareil principal et ajoutez les autorisations requises manquantes. Pour plus d’informations, consultez les ressources suivantes :

Operation aws.greengrass#<operation> is not supported by Greengrass

Cette erreur peut s'afficher lorsque vous utilisez une opération de communication interprocessus (IPC) dans un composant Greengrass personnalisé et que le composant AWS fourni n'est pas installé sur le périphérique principal.

Pour résoudre ce problème, ajoutez le composant requis en tant que dépendance dans votre recette de composant, afin que le logiciel AWS IoT Greengrass Core installe le composant requis lorsque vous déployez votre composant.

java.io.FileNotFoundException: <stream-manager-store-root-dir>/stream_manager_metadata_store (Permission denied)

Cette erreur peut s'afficher dans le fichier journal du gestionnaire de flux (aws.greengrass.StreamManager.log) lorsque vous configurez le gestionnaire de flux pour qu'il utilise un dossier racine qui n'existe pas ou qui ne dispose pas des autorisations appropriées. Pour plus d'informations sur la configuration de ce dossier, consultez la section Configuration du gestionnaire de flux.

com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: Private key or certificate with label <label> does not exist

Cette erreur se produit lorsque le composant fournisseur PKCS #11 ne parvient pas à trouver ou à charger la clé privée ou le certificat que vous spécifiez lorsque vous configurez le logiciel AWS IoT Greengrass Core pour utiliser un module de sécurité matériel (HSM). Procédez comme suit :

  • Vérifiez que la clé privée et le certificat sont stockés dans le HSM à l'aide de l'emplacement, du code PIN utilisateur et de l'étiquette d'objet que vous configurez pour utiliser dans le logiciel AWS IoT Greengrass Core.

  • Vérifiez que la clé privée et le certificat utilisent la même étiquette d'objet dans le HSM.

  • Si votre HSM prend en charge les identifiants d'objet, vérifiez que la clé privée et le certificat utilisent le même identifiant d'objet dans le HSM.

Consultez la documentation de votre HSM pour savoir comment demander des informations sur les jetons de sécurité contenus dans le HSM. Si vous devez modifier l'emplacement, l'étiquette ou l'ID d'objet d'un jeton de sécurité, consultez la documentation de votre HSM pour savoir comment procéder.

software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: User: <user> is not authorized to perform: secretsmanager:GetSecretValue on resource: <arn>

Cette erreur peut se produire lorsque vous utilisez le composant du gestionnaire de secrets pour déployer un AWS Secrets Manager secret. Si le rôle IAM d'échange de jetons du périphérique principal n'autorise pas l'obtention du secret, le déploiement échoue et les journaux de Greengrass incluent cette erreur.

Pour autoriser un appareil principal à télécharger un secret
  1. Ajoutez l'secretsmanager:GetSecretValueautorisation au rôle d'échange de jetons de l'appareil principal. L'exemple de déclaration de politique suivant accorde l'autorisation d'obtenir la valeur d'un secret.

    { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyGreengrassSecret-abcdef" ] }

    Pour plus d’informations, consultez Autoriser les appareils principaux à interagir avec les AWS services.

  2. Réappliquez le déploiement au périphérique principal. Effectuez l’une des actions suivantes :

    • Révisez le déploiement sans aucune modification. Le périphérique principal essaie de télécharger à nouveau le secret lorsqu'il reçoit le déploiement révisé. Pour plus d’informations, consultez Réviser les déploiements.

    • Redémarrez le logiciel AWS IoT Greengrass Core pour réessayer le déploiement. Pour plus d’informations, consultez Exécutez le logiciel AWS IoT Greengrass Core.

    Le déploiement est réussi si le gestionnaire de secrets télécharge le secret avec succès.

software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: Access to KMS is not allowed

Cette erreur peut se produire lorsque vous utilisez le composant du gestionnaire de secrets pour déployer un AWS Secrets Manager secret chiffré par une AWS Key Management Service clé. Si le rôle IAM d'échange de jetons du périphérique principal n'autorise pas le déchiffrement du secret, le déploiement échoue et les journaux de Greengrass incluent cette erreur.

Pour résoudre le problème, ajoutez l'kms:Decryptautorisation au rôle d'échange de jetons de l'appareil principal. Pour plus d’informations, consultez les ressources suivantes :

java.lang.NoClassDefFoundError: com/aws/greengrass/security/CryptoKeySpi

Cette erreur peut s'afficher lorsque vous essayez d'installer le logiciel AWS IoT Greengrass Core avec sécurité matérielle et que vous utilisez une version antérieure de Greengrass Nucleus qui ne prend pas en charge l'intégration de la sécurité matérielle. Pour utiliser l'intégration de la sécurité matérielle, vous devez utiliser Greengrass nucleus v2.5.3 ou version ultérieure.

com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: CKR_OPERATION_NOT_INITIALIZED

Cette erreur peut s'afficher lorsque vous utilisez la bibliothèque TPM2 lors de l'exécution de AWS IoT Greengrass Core en tant que service système.

Cette erreur indique que vous devez ajouter une variable d'environnement indiquant l'emplacement du magasin PKCS #11 dans le fichier de service AWS IoT Greengrass Core systemd.

Pour plus d'informations, consultez la section Exigences de la documentation du PKCSfournisseur #11 composant.

Greengrass core device stuck on nucleus v2.12.3

Si votre appareil principal Greengrass ne veut pas réviser votre déploiement à partir de la version 2.12.3 de Nucleus, vous devrez peut-être télécharger et remplacer le fichier Greengrass.jar par Greengrass nucleus version 2.12.2. Procédez comme suit :

  1. Sur votre appareil Greengrass Core, exécutez la commande suivante pour arrêter le logiciel Greengrass Core.

    Linux or Unix
    sudo systemctl stop greengrass
    Windows Command Prompt (CMD)
    sc stop "greengrass"
    PowerShell
    Stop-Service -Name "greengrass"
  2. Sur votre appareil principal, téléchargez le AWS IoT Greengrass logiciel dans un fichier nommégreengrass-2.12.2.zip.

    Linux or Unix
    curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-2.12.2.zip > greengrass-2.12.2.zip
    Windows Command Prompt (CMD)
    curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-2.12.2.zip > greengrass-2.12.2.zip
    PowerShell
    iwr -Uri https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-2.12.2.zip -OutFile greengrass-2.12.2.zip
  3. Décompressez le logiciel AWS IoT Greengrass Core dans un dossier de votre appareil. GreengrassInstallerRemplacez-le par le dossier que vous souhaitez utiliser.

    Linux or Unix
    unzip greengrass-2.12.2.zip -d GreengrassInstaller && rm greengrass-2.12.2.zip
    Windows Command Prompt (CMD)
    mkdir GreengrassInstaller && tar -xf greengrass-2.12.2.zip -C GreengrassInstaller && del greengrass-2.12.2.zip
    PowerShell
    Expand-Archive -Path greengrass-2.12.2.zip -DestinationPath .\\GreengrassInstaller rm greengrass-2.12.2.zip
  4. Exécutez la commande suivante pour remplacer le fichier JAR Greengrass de la version 2.12.3 du noyau par le fichier JAR Greengrass de la version 2.12.2 du noyau.

    Linux or Unix
    sudo cp ./GreengrassInstaller/lib/Greengrass.jar /greengrass/v2/packages/artifacts-unarchived/aws.greengrass.Nucleus/2.12.3/aws.greengrass.nucleus/lib
    Windows Command Prompt (CMD)
    robocopy ./GreengrassInstaller/lib/Greengrass.jar /greengrass/v2/packages/artifacts-unarchived/aws.greengrass.Nucleus/2.12.3/aws.greengrass.nucleus/lib /E
    PowerShell
    cp -Path ./GreengrassInstaller/lib/Greengrass.jar -Destination /greengrass/v2/packages/artifacts-unarchived/aws.greengrass.Nucleus/2.12.3/aws.greengrass.nucleus/lib
  5. Exécutez la commande suivante pour démarrer le logiciel Greengrass Core.

    Linux or Unix
    sudo systemctl start greengrass
    Windows Command Prompt (CMD)
    sc start "greengrass"
    PowerShell
    Start-Service -Name "greengrass"

AWS IoT Greengrass problèmes liés au cloud

Utilisez les informations suivantes pour résoudre les problèmes liés à la AWS IoT Greengrass console et à l'API. Chaque entrée correspond à un message d'erreur qui peut s'afficher lorsque vous effectuez une action.

An error occurred (AccessDeniedException) when calling the CreateComponentVersion operation: User: arn:aws:iam::123456789012:user/<username> is not authorized to perform: null

Cette erreur peut s'afficher lorsque vous créez une version de composant à partir de la AWS IoT Greengrass console ou lors de l'CreateComponentVersionopération.

Cette erreur indique que votre recette n'est pas un JSON ou YAML valide. Vérifiez la syntaxe de votre recette, corrigez les éventuels problèmes de syntaxe et réessayez. Vous pouvez utiliser un vérificateur de syntaxe JSON ou YAML en ligne pour identifier les problèmes de syntaxe dans votre recette.

Invalid Input: Encountered following errors in Artifacts: {<s3ArtifactUri> = Specified artifact resource cannot be accessed}

Cette erreur peut s'afficher lorsque vous créez une version de composant à partir de la AWS IoT Greengrass console ou lors de l'CreateComponentVersionopération. Cette erreur indique qu'un artefact S3 de la recette du composant n'est pas valide.

Procédez comme suit :

  • Vérifiez que le compartiment S3 se trouve dans le même emplacement que celui dans Région AWS lequel vous créez le composant. AWS IoT Greengrass ne prend pas en charge les demandes interrégionales pour les artefacts de composants.

  • Vérifiez que l'URI de l'artefact est une URL d'objet S3 valide et vérifiez que l'artefact existe à cette URL d'objet S3.

  • Vérifiez que vous êtes Compte AWS autorisé à accéder à l'artefact via l'URL de son objet S3.

INACTIVE deployment status

Vous pouvez obtenir un statut de INACTIVE déploiement lorsque vous appelez l'ListDeploymentsAPI sans les AWS IoT politiques dépendantes requises. Vous devez disposer des autorisations nécessaires pour obtenir un statut de déploiement précis. Vous pouvez trouver les actions dépendantes en consultant les actions définies par AWS IoT Greengrass V2 et en suivant les autorisations nécessaires pourListDeployments. Sans les AWS IoT autorisations dépendantes requises, vous verrez toujours l'état du déploiement, mais vous pourriez voir un état de déploiement inexact deINACTIVE.

Principaux problèmes liés au déploiement des appareils

Résolvez les problèmes de déploiement sur les appareils principaux de Greengrass. Chaque entrée correspond à un message de journal que vous pourriez voir sur votre appareil principal.

Rubriques

Error: com.aws.greengrass.componentmanager.exceptions.PackageDownloadException: Failed to download artifact

Cette erreur peut s'afficher lorsque le logiciel AWS IoT Greengrass Core ne parvient pas à télécharger un artefact de composant lorsque le périphérique principal effectue un déploiement. Le déploiement échoue à cause de cette erreur.

Lorsque vous recevez cette erreur, le journal inclut également une trace de pile que vous pouvez utiliser pour identifier le problème spécifique. Chacune des entrées suivantes correspond à un message que vous pourriez voir dans la pile de traces du message Failed to download artifact d'erreur.

software.amazon.awssdk.services.s3.model.S3Exception: null (Service: S3, Status Code: 403, Request ID: null, ...)

L'PackageDownloadException erreur peut inclure cette trace de pile dans les cas suivants :

  • L'artefact du composant n'est pas disponible à l'URL de l'objet S3 que vous spécifiez dans la recette du composant. Vérifiez que vous avez chargé l'artefact dans le compartiment S3 et que l'URI de l'artefact correspond à l'URL de l'objet S3 de l'artefact dans le compartiment.

  • Le rôle d'échange de jetons du périphérique principal ne permet pas au logiciel AWS IoT Greengrass Core de télécharger l'artefact du composant à partir de l'URL de l'objet S3 que vous spécifiez dans la recette du composant. Vérifiez que le rôle d'échange de jetons autorise s3:GetObject l'URL de l'objet S3 où l'artefact est disponible.

software.amazon.awssdk.services.s3.model.S3Exception: Access Denied (Service: S3, Status Code: 403, Request ID: <requestID>

L'PackageDownloadException erreur peut inclure cette trace de pile lorsque le périphérique principal n'est pas autorisé à appelers3:GetBucketLocation. Le message d'erreur inclut également le message suivant.

reason: Failed to determine S3 bucket location

Vérifiez que le rôle d'échange de jetons du périphérique principal autorise s3:GetBucketLocation le compartiment S3 dans lequel l'artefact est disponible.

Error: com.aws.greengrass.componentmanager.exceptions.ArtifactChecksumMismatchException: Integrity check for downloaded artifact failed. Probably due to file corruption.

Cette erreur peut s'afficher lorsque le logiciel AWS IoT Greengrass Core ne parvient pas à télécharger un artefact de composant lorsque le périphérique principal effectue un déploiement. Le déploiement échoue car la somme de contrôle du fichier d'artefact téléchargé ne correspond pas à la somme de contrôle AWS IoT Greengrass calculée lors de la création du composant.

Procédez comme suit :

  • Vérifiez si le fichier d'artefact a changé dans le compartiment S3 où vous l'hébergez. Si le fichier a changé depuis que vous avez créé le composant, restaurez la version précédente attendue par le périphérique principal. Si vous ne parvenez pas à restaurer la version précédente du fichier ou si vous souhaitez utiliser la nouvelle version du fichier, créez une nouvelle version du composant avec le fichier d'artefact.

  • Vérifiez la connexion Internet de votre appareil principal. Cette erreur peut se produire si le fichier d'artefact est endommagé lors du téléchargement. Créez un nouveau déploiement et réessayez.

Error: com.aws.greengrass.componentmanager.exceptions.NoAvailableComponentVersionException: Failed to negotiate component <name> version with cloud and no local applicable version satisfying requirement <requirements>

Cette erreur peut s'afficher lorsqu'un périphérique principal ne trouve pas de version de composant répondant aux exigences des déploiements pour ce périphérique principal. Le périphérique principal vérifie la présence du composant dans le AWS IoT Greengrass service et sur le périphérique local. Le message d'erreur inclut la cible de chaque déploiement et les exigences de version de ce déploiement pour le composant. La cible de déploiement peut être un objet, un groupe d'objets ou LOCAL_DEPLOYMENT un objet représentant le déploiement local sur le périphérique principal.

Ce problème peut se produire dans les cas suivants :

  • Le périphérique principal est la cible de plusieurs déploiements dont les exigences en matière de version des composants sont contradictoires. Par exemple, le périphérique principal peut être la cible de plusieurs déploiements incluant un com.example.HelloWorld composant, l'un nécessitant la version 1.0.0 et l'autre la version 1.0.1. Comme il est impossible de disposer d'un composant répondant aux deux exigences, le déploiement échoue.

  • La version du composant n'existe pas dans le AWS IoT Greengrass service ou sur l'appareil local. Le composant a peut-être été supprimé, par exemple.

  • Il existe des versions de composants qui répondent aux exigences de version, mais aucune n'est compatible avec la plate-forme de l'appareil principal.

  • La AWS IoT politique de l'appareil principal n'accorde pas l'greengrass:ResolveComponentCandidatesautorisation. Recherchez Status Code: 403 dans le journal des erreurs pour identifier ce problème. Pour résoudre ce problème, ajoutez l'greengrass:ResolveComponentCandidatesautorisation à la AWS IoT politique de l'appareil principal. Pour plus d’informations, consultez AWS IoTPolitique minimale pour les appareils AWS IoT Greengrass V2 principaux.

Pour résoudre ce problème, modifiez les déploiements afin d'inclure les versions de composants compatibles ou supprimez les versions incompatibles. Pour plus d'informations sur la façon de réviser les déploiements dans le cloud, consultezRéviser les déploiements. Pour plus d'informations sur la façon de réviser les déploiements locaux, consultez la commande AWS IoT Greengrass CLI deployment create.

software.amazon.awssdk.services.greengrassv2data.model.ResourceNotFoundException: The latest version of Component <componentName> doesn't claim platform <coreDevicePlatform> compatibility

Cette erreur peut s'afficher lorsque vous déployez un composant sur un périphérique principal et que le composant ne répertorie aucune plate-forme compatible avec la plate-forme de l'appareil principal. Effectuez l’une des actions suivantes :

  • S'il s'agit d'un composant Greengrass personnalisé, vous pouvez le mettre à jour pour qu'il soit compatible avec le périphérique principal. Ajoutez un nouveau manifeste correspondant à la plate-forme de l'appareil principal ou mettez à jour un manifeste existant pour qu'il corresponde à la plate-forme de l'appareil principal. Pour plus d’informations, consultez AWS IoT Greengrass référence de recette de composant.

  • Si le composant est fourni par AWS, vérifiez si une autre version du composant est compatible avec le périphérique principal. Si aucune version n'est compatible, contactez-nous en AWS re:Postutilisant le AWS IoT Greengrass tag, ou contactez AWS Support.

com.aws.greengrass.componentmanager.exceptions.PackagingException: The deployment attempts to update the nucleus from aws.greengrass.Nucleus-<version> to aws.greengrass.Nucleus-<version> but no component of type nucleus was included as target component

Cette erreur peut s'afficher lorsque vous déployez un composant qui dépend du noyau Greengrass et que le périphérique principal exécute une version du noyau de Greengrass antérieure à la dernière version mineure disponible. Cette erreur se produit car le logiciel AWS IoT Greengrass Core essaie de mettre à jour automatiquement les composants vers la dernière version compatible. Cependant, le logiciel AWS IoT Greengrass Core empêche la mise à jour du noyau Greengrass vers une nouvelle version mineure, car plusieurs composants AWS fournis dépendent de versions mineures spécifiques du noyau Greengrass. Pour plus d’informations, consultez Comportement de mise à jour du noyau Greengrass.

Vous devez revoir le déploiement pour spécifier la version du noyau Greengrass que vous souhaitez utiliser. Effectuez l’une des actions suivantes :

  • Révisez le déploiement pour spécifier la version du noyau Greengrass que le périphérique principal exécute actuellement.

  • Révisez le déploiement pour spécifier une version mineure ultérieure du noyau Greengrass. Si vous choisissez cette option, vous devez également mettre à jour les versions de tous les composants AWS fournis qui dépendent de versions mineures spécifiques du noyau Greengrass. Pour plus d’informations, consultez AWS-composants fournis.

Error: com.aws.greengrass.deployment.exceptions.DeploymentException: Unable to process deployment. Greengrass launch directory is not set up or Greengrass is not set up as a system service

Cette erreur peut s'afficher lorsque vous déplacez un appareil Greengrass d'un groupe d'objets à un autre, puis que vous revenez au groupe d'origine avec des déploiements nécessitant le redémarrage de Greengrass.

Pour résoudre ce problème, recréez le répertoire de lancement de l'appareil. Nous vous recommandons également vivement de passer à la version 2.9.6 ou ultérieure du noyau Greengrass.

Voici un script Linux permettant de recréer le répertoire de lancement. Enregistrez le script dans un fichier appeléfix_directory.sh.

#!/bin/bash set -e GG_ROOT=$1 GG_VERSION=$2 CURRENT="$GG_ROOT/alts/current" if [ ! -L "$CURRENT" ]; then mkdir -p $GG_ROOT/alts/directory_fix echo "Relinking $GG_ROOT/alts/directory_fix to $CURRENT" ln -sf $GG_ROOT/alts/directory_fix $CURRENT fi TARGET=$(readlink $CURRENT) if [[ ! -d "$TARGET" ]]; then echo "Creating directory: $TARGET" mkdir -p "$TARGET" fi DISTRO_LINK="$TARGET/distro" DISTRO="$GG_ROOT/packages/artifacts-unarchived/aws.greengrass.Nucleus/$GG_VERSION/aws.greengrass.nucleus/" echo "Relinking Nucleus artifacts to $DISTRO_LINK" ln -sf $DISTRO $DISTRO_LINK

Pour exécuter le script, exécutez la commande suivante :

[root@ip-172-31-27-165 ~]# ./fix_directory.sh /greengrass/v2 2.9.5 Relinking /greengrass/v2/alts/directory_fix to /greengrass/v2/alts/current Relinking Nucleus artifacts to /greengrass/v2/alts/directory_fix/distro

Info: com.aws.greengrass.deployment.exceptions.RetryableDeploymentDocumentDownloadException: Greengrass Cloud Service returned an error when getting full deployment configuration

Cette erreur peut s'afficher lorsque le périphérique principal reçoit un document de déploiement volumineux, qui est un document de déploiement supérieur à 7 Ko (pour les déploiements ciblant des objets) ou 31 Ko (pour les déploiements ciblant des groupes d'objets). Pour récupérer un document de déploiement volumineux, la AWS IoT politique d'un appareil principal doit autoriser l'greengrass:GetDeploymentConfigurationautorisation. Cette erreur peut se produire lorsque le périphérique principal ne dispose pas de cette autorisation. Lorsque cette erreur se produit, le déploiement recommence indéfiniment et son statut est En cours (IN_PROGRESS).

Pour résoudre ce problème, ajoutez l'greengrass:GetDeploymentConfigurationautorisation à la AWS IoT politique de l'appareil principal. Pour plus d’informations, consultez Mettre à jour la AWS IoT politique d'un appareil principal.

Warn: com.aws.greengrass.deployment.DeploymentService: Failed to get thing group hierarchy

Cet avertissement peut s'afficher lorsque le périphérique principal reçoit un déploiement et que la AWS IoT politique du périphérique principal n'autorise pas cette greengrass:ListThingGroupsForCoreDevice autorisation. Lorsque vous créez un déploiement, le périphérique principal utilise cette autorisation pour identifier ses groupes d'objets et supprimer des composants pour tous les groupes d'objets dont vous avez supprimé le périphérique principal. Si le périphérique principal exécute Greengrass nucleus v2.5.0, le déploiement échoue. Si le périphérique principal exécute Greengrass nucleus v2.5.1 ou version ultérieure, le déploiement se poursuit mais aucun composant n'est supprimé. Pour plus d'informations sur le comportement de suppression des groupes d'objets, consultezDéployer AWS IoT Greengrass des composants sur des appareils.

Pour mettre à jour le comportement de l'appareil principal afin de supprimer les composants des groupes d'objets dont vous supprimez le périphérique principal, ajoutez l'greengrass:ListThingGroupsForCoreDeviceautorisation à la AWS IoT politique du périphérique principal. Pour plus d’informations, consultez Mettre à jour la AWS IoT politique d'un appareil principal.

Info: com.aws.greengrass.deployment.DeploymentDocumentDownloader: Calling Greengrass cloud to get full deployment configuration

Ce message d'information peut s'afficher plusieurs fois sans erreur, car le périphérique principal enregistre l'erreur au niveau du DEBUG journal. Ce problème peut se produire lorsque le périphérique principal reçoit un document de déploiement volumineux. Lorsque ce problème se produit, le déploiement recommence indéfiniment et son statut est En cours (IN_PROGRESS). Pour plus d'informations sur la manière de résoudre ce problème, consultez cette entrée de résolution des problèmes.

Caused by: software.amazon.awssdk.services.greengrassv2data.model.GreengrassV2DataException: null (Service: GreengrassV2Data, Status Code: 403, Request ID: <some_request_id>, Extended Request ID: null)

Cette erreur peut s'afficher lorsqu'une API de plan de données n'est pas iot:Connect autorisée. Si vous n'avez pas la bonne politique, vous recevrez unGreengrassV2DataException: 403. Pour créer une politique d'autorisation, suivez ces instructions : Création d'une stratégie AWS IoT

Principaux problèmes liés aux composants de l'appareil

Résolvez les problèmes liés aux composants Greengrass sur les principaux appareils.

Warn: '<command>' is not recognized as an internal or external command

Cette erreur peut s'afficher dans les journaux d'un composant Greengrass lorsque le logiciel AWS IoT Greengrass Core ne parvient pas à exécuter une commande dans le script de cycle de vie du composant. L'état du composant BROKEN résulte de cette erreur. Cette erreur peut se produire si l'utilisateur du système qui exécute le composant, par exempleggc_user, ne trouve pas le fichier exécutable de la commande dans les dossiers du PATH.

Sur les appareils Windows, vérifiez que le dossier contenant le fichier exécutable est destiné à l'PATHutilisateur du système qui exécute le composant. S'il ne figure pas dans lePATH, effectuez l'une des opérations suivantes :

  • Ajoutez le dossier de l'exécutable à la variable PATH système, qui est accessible à tous les utilisateurs. Redémarrez ensuite le composant.

    Si vous exécutez Greengrass nucleus 2.5.0, après avoir mis à jour la variable PATH système, vous devez redémarrer le logiciel AWS IoT Greengrass Core pour exécuter les composants avec la mise à jour. PATH Si le logiciel AWS IoT Greengrass Core n'utilise pas la mise à jour PATH après le redémarrage du logiciel, redémarrez l'appareil et réessayez. Pour plus d’informations, consultez Exécutez le logiciel AWS IoT Greengrass Core.

  • Ajoutez le dossier de l'exécutable à la variable PATH utilisateur correspondant à l'utilisateur du système qui exécute le composant.

Le script Python n'enregistre pas les messages

Les appareils Greengrass Core collectent des journaux que vous pouvez utiliser pour identifier les problèmes liés aux composants. Si vos scripts stdout et stderr messages Python n'apparaissent pas dans les journaux de vos composants, vous devrez peut-être vider la mémoire tampon ou désactiver la mise en mémoire tampon pour ces flux de sortie standard en Python. Effectuez l’une des actions suivantes :

  • Exécutez Python avec l'argument -u pour désactiver la mise en mémoire tampon sur stdout et. stderr

    Linux or Unix
    python3 -u hello_world.py
    Windows
    py -3 -u hello_world.py
  • Utilisez Setenv dans la recette de votre composant pour définir la variable d'environnement PYTHONUNBUFFERED sur une chaîne non vide. Cette variable d'environnement désactive la mise en mémoire tampon sur stdout et. stderr

  • Videz la mémoire tampon pour les stderr flux stdout or. Effectuez l’une des actions suivantes :

    • Videz un message lorsque vous l'imprimez.

      import sys print('Hello, error!', file=sys.stderr, flush=True)
    • Videz un message après l'avoir imprimé. Vous pouvez envoyer plusieurs messages avant de vider le flux.

      import sys print('Hello, error!', file=sys.stderr) sys.stderr.flush()

Pour plus d'informations sur la façon de vérifier que votre script Python génère des messages de journal, consultezAWS IoT GreengrassJournaux de surveillance.

La configuration des composants ne se met pas à jour lors de la modification de la configuration par défaut

Lorsque vous modifiez la recette DefaultConfiguration d'un composant, la nouvelle configuration par défaut ne remplacera pas la configuration existante du composant lors d'un déploiement. Pour appliquer la nouvelle configuration par défaut, vous devez rétablir les paramètres par défaut du composant. Lorsque vous déployez le composant, spécifiez une seule chaîne vide comme mise à jour de réinitialisation.

Console
Réinitialiser les chemins
[""]
AWS CLI

La commande suivante crée un déploiement sur un périphérique principal.

aws greengrassv2 create-deployment --cli-input-json file://reset-configuration-deployment.json

Le reset-configuration-deployment.json fichier contient le document JSON suivant.

{ "targetArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore", "deploymentName": "Deployment for MyGreengrassCore", "components": { "com.example.HelloWorld": { "componentVersion": "1.0.0", "configurationUpdate": {, "reset": [""] } } } }
Greengrass CLI

La commande Greengrass CLI suivante crée un déploiement local sur un périphérique principal.

sudo greengrass-cli deployment create \ --recipeDir recipes \ --artifactDir artifacts \ --merge "com.example.HelloWorld=1.0.0" \ --update-config reset-configuration-deployment.json

Le reset-configuration-deployment.json fichier contient le document JSON suivant.

{ "com.example.HelloWorld": { "RESET": [""] } }

awsiot.greengrasscoreipc.model.UnauthorizedError

Vous pouvez voir cette erreur dans les journaux d'un composant Greengrass lorsque le composant n'est pas autorisé à effectuer une opération IPC sur une ressource. Pour autoriser un composant à appeler une opération IPC, définissez une politique d'autorisation IPC dans la configuration du composant. Pour plus d’informations, consultez Autoriser les composants à effectuer des IPC opérations.

Astuce

Si vous modifiez la DefaultConfiguration recette d'un composant, vous devez rétablir la configuration du composant à sa nouvelle configuration par défaut. Lorsque vous déployez le composant, spécifiez une seule chaîne vide comme mise à jour de réinitialisation. Pour plus d’informations, consultez La configuration des composants ne se met pas à jour lors de la modification de la configuration par défaut.

com.aws.greengrass.authorization.exceptions.AuthorizationException: Duplicate policy ID "<id>" for principal "<componentList>"

Cette erreur peut s'afficher si plusieurs politiques d'autorisation IPC, y compris pour tous les composants du périphérique principal, utilisent le même ID de stratégie.

Vérifiez les politiques d'autorisation IPC de vos composants, corrigez les doublons et réessayez. Pour créer des identifiants de politique uniques, nous vous recommandons de combiner le nom du composant, le nom du service IPC et un compteur. Pour plus d’informations, consultez Autoriser les composants à effectuer des IPC opérations.

Astuce

Si vous modifiez la DefaultConfiguration recette d'un composant, vous devez rétablir la configuration du composant à sa nouvelle configuration par défaut. Lorsque vous déployez le composant, spécifiez une seule chaîne vide comme mise à jour de réinitialisation. Pour plus d’informations, consultez La configuration des composants ne se met pas à jour lors de la modification de la configuration par défaut.

com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from TES (HTTP 400)

Cette erreur peut s'afficher lorsqu'un appareil principal ne parvient pas à obtenir les AWS informations d'identification du service d'échange de jetons. Le code d'état HTTP 400 indique que cette erreur s'est produite parce que le rôle IAM d'échange de jetons du périphérique principal n'existe pas ou n'a aucune relation de confiance permettant au fournisseur AWS IoT d'informations d'identification de l'assumer.

Procédez comme suit :

  1. Identifiez le rôle d'échange de jetons utilisé par le périphérique principal. Le message d'erreur inclut l'alias de AWS IoT rôle du périphérique principal, qui pointe vers le rôle d'échange de jetons. Exécutez la commande suivante sur votre ordinateur de développement et remplacez-la MyGreengrassCoreTokenExchangeRoleAliaspar le nom de l'alias de AWS IoT rôle indiqué dans le message d'erreur.

    aws iot describe-role-alias --role-alias MyGreengrassCoreTokenExchangeRoleAlias

    La réponse inclut le nom de ressource Amazon (ARN) du rôle IAM d'échange de jetons.

    { "roleAliasDescription": { "roleAlias": "MyGreengrassCoreTokenExchangeRoleAlias", "roleAliasArn": "arn:aws:iot:us-west-2:123456789012:rolealias/MyGreengrassCoreTokenExchangeRoleAlias", "roleArn": "arn:aws:iam::123456789012:role/MyGreengrassV2TokenExchangeRole", "owner": "123456789012", "credentialDurationSeconds": 3600, "creationDate": "2021-02-05T16:46:18.042000-08:00", "lastModifiedDate": "2021-02-05T16:46:18.042000-08:00" } }
  2. Vérifiez que le rôle existe. Exécutez la commande suivante et remplacez MyGreengrassV2 TokenExchangeRole par le nom du rôle d'échange de jetons.

    aws iam get-role --role-name MyGreengrassV2TokenExchangeRole

    Si la commande renvoie une NoSuchEntity erreur, le rôle n'existe pas et vous devez le créer. Pour plus d'informations sur la création et la configuration de ce rôle, consultezAutoriser les appareils principaux à interagir avec les AWS services.

  3. Vérifiez que le rôle possède une relation de confiance qui permet au fournisseur AWS IoT d'informations d'identification de l'assumer. La réponse de l'étape précédente contient unAssumeRolePolicyDocument, qui définit les relations de confiance du rôle. Le rôle doit définir une relation de confiance permettant credentials.iot.amazonaws.com de l'assumer. Ce document doit ressembler à l'exemple suivant.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

    Si les relations de confiance du rôle ne permettent pas credentials.iot.amazonaws.com de l'assumer, vous devez ajouter cette relation de confiance au rôle. Pour plus d'informations, consultez Modification d'un rôle dans le Guide de l'utilisateur AWS Identity and Access Management .

com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from TES (HTTP 403)

Cette erreur peut s'afficher lorsqu'un appareil principal ne parvient pas à obtenir les AWS informations d'identification du service d'échange de jetons. Le code d'état HTTP 403 indique que cette erreur s'est produite parce que les AWS IoT politiques du périphérique principal n'accordent pas l'iot:AssumeRoleWithCertificateautorisation d'utiliser l'alias de AWS IoT rôle du périphérique principal.

Passez en revue les AWS IoT politiques de l'appareil principal et ajoutez l'iot:AssumeRoleWithCertificateautorisation pour l'alias de AWS IoT rôle de l'appareil principal. Le message d'erreur inclut l'alias de AWS IoT rôle actuel du périphérique principal. Pour plus d'informations sur cette autorisation et sur la manière de mettre à jour les AWS IoT politiques de l'appareil principal, consultez AWS IoTPolitique minimale pour les appareils AWS IoT Greengrass V2 principaux etMettre à jour la AWS IoT politique d'un appareil principal.

com.aws.greengrass.tes.CredentialsProviderError: Could not load credentials from any providers

Cette erreur peut s'afficher lorsque le composant essaie de demander des AWS informations d'identification et ne parvient pas à se connecter au service d'échange de jetons.

Procédez comme suit :

Received error when attempting to retrieve ECS metadata: Could not connect to the endpoint URL: "<tokenExchangeServiceEndpoint>"

Cette erreur peut s'afficher lorsque le composant n'exécute pas le service d'échange de jetons et qu'un composant essaie de demander des AWS informations d'identification.

Procédez comme suit :

  • Vérifiez que le composant déclare une dépendance à l'égard du composant du service d'échange de jetons,aws.greengrass.TokenExchangeService. Si ce n'est pas le cas, ajoutez la dépendance et redéployez le composant.

  • Vérifiez si le composant utilise des AWS informations d'identification dans son install cycle de vie. AWS IoT Greengrass ne garantit pas la disponibilité du service d'échange de jetons pendant le install cycle de vie. Mettez à jour le composant pour déplacer le code qui utilise les AWS informations d'identification dans le startup run cycle de vie de l'unité d'exploitation, puis redéployez le composant.

copyFrom: <configurationPath> is already a container, not a leaf

Cette erreur peut s'afficher lorsque vous modifiez une valeur de configuration d'un type de conteneur (liste ou objet) à un type non conteneur (chaîne, nombre ou booléen). Procédez comme suit :

  1. Vérifiez la recette du composant pour voir si sa configuration par défaut définit cette valeur de configuration comme une liste ou un objet. Si tel est le cas, supprimez ou modifiez cette valeur de configuration.

  2. Créez un déploiement pour rétablir cette valeur de configuration à sa valeur par défaut. Pour plus d’informations, consultez Créer des déploiements et Mettre à jour les configurations des composants.

Vous pouvez ensuite définir cette valeur de configuration sur une chaîne, un nombre ou une valeur booléenne.

com.aws.greengrass.componentmanager.plugins.docker.exceptions.DockerLoginException: Error logging into the registry using credentials - 'The stub received bad data.'

Cette erreur peut s'afficher dans les journaux du noyau de Greengrass lorsque le composant du gestionnaire d'applications Docker essaie de télécharger une image Docker depuis un dépôt privé dans Amazon Elastic Container Registry (Amazon ECR). Cette erreur se produit si vous utilisez l'assistant d'identification wincred Docker (). docker-credential-wincred Par conséquent, Amazon ECR n'est pas en mesure de stocker les informations de connexion.

Effectuez l'une des actions suivantes :

  • Si vous n'utilisez pas l'assistant d'identification wincred Docker, supprimez le docker-credential-wincred programme de l'appareil principal.

  • Si vous utilisez l'assistant d'identification wincred Docker, procédez comme suit :

    1. Renommez le docker-credential-wincred programme sur l'appareil principal. wincredRemplacez-le par un nouveau nom pour l'assistant d'identification Windows Docker. Par exemple, vous pouvez le renommer endocker-credential-wincredreal.

    2. Mettez à jour l'credsStoreoption dans le fichier de configuration Docker (.docker/config.json) pour utiliser le nouveau nom de l'assistant d'identification Windows Docker. Par exemple, si vous avez renommé le programme endocker-credential-wincredreal, mettez à jour l'credsStoreoption enwincredreal.

      { "credsStore": "wincredreal" }

java.io.IOException: Cannot run program "cmd" ...: [LogonUser] The password for this account has expired.

Cette erreur peut s'afficher sur un périphérique Windows principal lorsque l'utilisateur du système qui exécute les processus du composant, par exempleggc_user, a un mot de passe expiré. Par conséquent, le logiciel AWS IoT Greengrass Core n'est pas en mesure d'exécuter les processus des composants en tant qu'utilisateur du système.

Pour mettre à jour le mot de passe d'un utilisateur du système Greengrass
  1. Exécutez la commande suivante en tant qu'administrateur pour définir le mot de passe de l'utilisateur. Remplacez ggc_user par l'utilisateur du système et remplacez le mot de passe par le mot de passe à définir.

    net user ggc_user password
  2. Utilisez l'PsExec utilitaire pour enregistrer le nouveau mot de passe de l'utilisateur dans l'instance Credential Manager du LocalSystem compte. Remplacez le mot de passe par le mot de passe utilisateur que vous avez défini.

    psexec -s cmd /c cmdkey /generic:ggc_user /user:ggc_user /pass:password
Astuce

En fonction de votre configuration Windows, le mot de passe de l'utilisateur peut être configuré pour expirer à une date ultérieure. Pour vous assurer que vos applications Greengrass continuent de fonctionner, suivez la date d'expiration du mot de passe et mettez-le à jour avant son expiration. Vous pouvez également définir le mot de passe de l'utilisateur pour qu'il n'expire jamais.

  • Pour vérifier la date d'expiration d'un utilisateur et de son mot de passe, exécutez la commande suivante.

    net user ggc_user | findstr /C:expires
  • Pour définir le mot de passe d'un utilisateur de manière à ce qu'il n'expire jamais, exécutez la commande suivante.

    wmic UserAccount where "Name='ggc_user'" set PasswordExpires=False
  • Si vous utilisez Windows 10 ou une version ultérieure où la wmiccommande est obsolète, exécutez la commande suivante PowerShell .

    Get-CimInstance -Query "SELECT * from Win32_UserAccount WHERE name = 'ggc_user'" | Set-CimInstance -Property @{PasswordExpires="False"}

aws.greengrass.StreamManager: Instant exceeds minimum or maximum instant

Lorsque vous mettez à niveau le gestionnaire de flux v2.0.7 vers une version comprise entre v2.0.8 et v2.0.11, vous pouvez voir l'erreur suivante dans les journaux du composant Stream Manager si le composant 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 avez déployé le gestionnaire de flux v2.0.7 et que vous souhaitez effectuer une mise à niveau vers une version ultérieure, vous devez passer directement au gestionnaire de flux v2.0.12. Pour plus d'informations sur le composant du gestionnaire de flux, consultezGestionnaire de flux.

Principaux problèmes liés aux composants de la fonction Lambda de l'appareil

Résolvez les problèmes liés aux composants de la fonction Lambda sur les appareils principaux.

The following cgroup subsystems are not mounted: devices, memory

Cette erreur peut s'afficher lorsque vous exécutez une fonction Lambda conteneurisée dans les cas suivants :

  • Le cgroup v1 n'est pas activé pour la mémoire ou les cgroups de périphériques sur le périphérique principal.

  • Le périphérique principal a activé cgroups v2. Les fonctions Lambda de Greengrass nécessitent des cgroups v1, et les cgroups v1 et v2 s'excluent mutuellement.

Pour activer cgroups v1, démarrez le périphérique avec les paramètres du noyau Linux suivants.

cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0
Astuce

Sur un Raspberry Pi, modifiez le /boot/cmdline.txt fichier pour définir les paramètres du noyau de l'appareil.

ipc_client.py:64,HTTP Error 400:Bad Request, b'No subscription exists for the source <label-or-lambda-arn> and subject <label-or-lambda-arn>

Cette erreur peut s'afficher lorsque vous exécutez une fonction Lambda V1, qui utilise le SDK AWS IoT Greengrass Core, sur un périphérique principal V2 sans spécifier d'abonnement dans l'ancien composant routeur d'abonnement. Pour résoudre ce problème, déployez et configurez l'ancien routeur d'abonnement afin de spécifier les abonnements requis. Pour plus d’informations, consultez Importer les fonctions Lambda de la V1.

Version du composant abandonnée

Une notification peut s'afficher sur votre Personal Health Dashboard (PHD) lorsqu'une version d'un composant de votre appareil principal est abandonnée. La version du composant envoie cette notification à votre PHD dans les 60 minutes suivant son arrêt.

Pour voir quels déploiements vous devez réviser, procédez comme suit à l'aide de AWS Command Line Interface :

  1. Exécutez la commande suivante pour obtenir la liste de vos principaux appareils.

    aws greengrassv2 list-core-devices
  2. Exécutez la commande suivante pour récupérer l'état des composants de chaque périphérique principal à partir de l'étape 1. Remplacez coreDeviceName par le nom de chaque périphérique principal à interroger.

    aws greengrassv2 list-installed-components --core-device-thing-name coreDeviceName
  3. Rassemblez les principaux appareils sur lesquels la version du composant abandonnée est installée comme indiqué dans les étapes précédentes.

  4. Exécutez la commande suivante pour récupérer l'état de toutes les tâches de déploiement pour chaque périphérique principal à partir de l'étape 3. Remplacez coreDeviceName par le nom du périphérique principal à interroger.

    aws greengrassv2 list-effective-deployments --core-device-thing-name coreDeviceName

    La réponse contient la liste des tâches de déploiement pour le périphérique principal. Vous pouvez revoir le déploiement pour choisir une autre version du composant. Pour plus d'informations sur la façon de réviser un déploiement, consultez la section Réviser les déploiements.

Problèmes liés à l'interface de ligne de commande Greengrass

Résolvez les problèmes liés à la CLI Greengrass.

java.lang.RuntimeException: Unable to create ipc client

Cette erreur peut s'afficher lorsque vous exécutez une commande Greengrass CLI et que vous spécifiez un dossier racine différent de celui dans lequel le logiciel AWS IoT Greengrass Core est installé.

Procédez de l'une des manières suivantes pour définir le chemin racine et remplacez-le /greengrass/v2 par le chemin d'installation de votre logiciel AWS IoT Greengrass Core :

  • Définissez la variable d'environnement GGC_ROOT_PATH sur /greengrass/v2.

  • Ajoutez l'--ggcRootPath /greengrass/v2argument à votre commande comme indiqué dans l'exemple suivant.

    greengrass-cli --ggcRootPath /greengrass/v2 <command> <subcommand> [arguments]

AWS Command Line Interface problèmes

Résoudre les AWS CLI problèmes liés à. AWS IoT Greengrass V2

Error: Invalid choice: 'greengrassv2'

Cette erreur peut s'afficher lorsque vous exécutez une AWS IoT Greengrass V2 commande avec le AWS CLI (par exemple,aws greengrassv2 list-core-devices).

Cette erreur indique que vous disposez d'une version AWS CLI qui n'est pas prise en charge AWS IoT Greengrass V2. Pour l'utiliser AWS IoT Greengrass V2 avec le AWS CLI, vous devez disposer de l'une des versions suivantes ou d'une version ultérieure :

  • Version AWS CLI V1 minimale : v1.18.197

  • Version AWS CLI V2 minimale : v2.1.11

Astuce

Vous pouvez exécuter la commande suivante pour vérifier la version AWS CLI dont vous disposez.

aws --version

Pour résoudre ce problème, mettez à jour le AWS CLI vers une version ultérieure qui prend en charge AWS IoT Greengrass V2. Pour plus d'informations, consultez la section Installation, mise à jour et désinstallation du AWS CLI dans le guide de l'AWS Command Line Interface utilisateur.