Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Solución de problemas AWS IoT Greengrass V2
Utilice la información y las soluciones de solución de problemas de esta sección para ayudar a resolver los problemas con. AWS IoT Greengrass Version 2
Temas
- Consulte los registros AWS IoT Greengrass principales de software y componentes
- AWS IoT Greengrass Problemas principales de software
- AWS IoT Greengrass problemas con la nube
- Problemas de implementación del dispositivo principal
- Problemas con los componentes del dispositivo principal
- Problemas con los componentes de la función de Lambda del dispositivo principal
- Versión del componente descontinuada
- Problemas con la interfaz de la línea de comandos de Greengrass
- AWS Command Line Interface problemas
- Códigos de error de implementación detallados
- Códigos de estado de componentes detallados
Consulte los registros AWS IoT Greengrass principales de software y componentes
El software AWS IoT Greengrass Core escribe registros en el sistema de archivos local que puede usar para ver información en tiempo real sobre el dispositivo principal. También puede configurar los dispositivos principales para que escriban registros en los CloudWatch registros, de modo que pueda solucionar los problemas de los dispositivos principales de forma remota. Estos registros pueden ayudarlo a identificar problemas con los componentes, las implementaciones y los dispositivos principales. Para obtener más información, consulte Supervisión de los registros de AWS IoT Greengrass.
AWS IoT Greengrass Problemas principales de software
Solucionar problemas AWS IoT Greengrass de software principal.
Temas
- ThrottlingException de ListDeployments API
- No se ha podido configurar el dispositivo principal
- No se puede iniciar el software AWS IoT Greengrass Core como un servicio del sistema
- No se puede configurar el núcleo como un servicio del sistema
- No es posible conectarse a AWS IoT Core
- Error de falta de memoria
- No se puede instalar Greengrass CLI
- User root is not allowed to execute
- com.aws.greengrass.lifecyclemanager.GenericExternalService: Could not determine user/group to run with
- Failed to map segment from shared object: operation not permitted
- No se pudo configurar el servicio de Windows
- com.aws.greengrass.util.exceptions.TLSAuthException: Failed to get trust manager
- com.aws.greengrass.deployment.IotJobsHelper: No connection available during subscribing to Iot Jobs descriptions topic. Will retry in sometime
- software.amazon.awssdk.services.iam.model.IamException: The security token included in the request is invalid
- software.amazon.awssdk.services.iot.model.IotException: User: <user> is not authorized to perform: iot:GetPolicy
- Error: com.aws.greengrass.shadowmanager.sync.model.FullShadowSyncRequest: Could not execute cloud shadow get request
- Operation aws.greengrass#<operation> is not supported by Greengrass
- java.io.FileNotFoundException: <stream-manager-store-root-dir>/stream_manager_metadata_store (Permission denied)
- com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: Private key or certificate with label <label> does not exist
- software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: User: <user> is not authorized to perform: secretsmanager:GetSecretValue on resource: <arn>
- software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: Access to KMS is not allowed
- java.lang.NoClassDefFoundError: com/aws/greengrass/security/CryptoKeySpi
- com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: CKR_OPERATION_NOT_INITIALIZED
- Greengrass core device stuck on nucleus v2.12.3
ThrottlingException de ListDeployments API
ThrottlingException
de ListDeployments
API: Es posible que lo veas cuando tengas en cuenta un gran número de despliegues.
Para solucionar este problema, realice una de las siguientes acciones:
Si lo usaSDK, especifique el MaxResult parámetro. Por ejemplo, para Java SDK
con un valor pequeño (por ejemplo, 5). Puede utilizar AWS Service Quotas para solicitar un aumento del límite de velocidad del
DescribeJob
API. Puede ir a la consola de cuotas de Service, seleccionar cuotas de AWS IoT y el nombre del límite es DescribeJob throttle limit. Puedes aumentarlo de 10 a 50.
No se ha podido configurar el dispositivo principal
Si el instalador del software AWS IoT Greengrass principal falla y no puedes configurar un dispositivo principal, es posible que tengas que desinstalar el software e intentarlo de nuevo. Para obtener más información, consulte Desinstalación del software AWS IoT Greengrass Core.
No se puede iniciar el software AWS IoT Greengrass Core como un servicio del sistema
Si el software AWS IoT Greengrass principal no se inicia, compruebe los registros de servicio del sistema para identificar el problema. Un problema habitual es que Java no esté disponible en la variable de PATH entorno (Linux) o en la variable de PATH sistema (Windows).
No se puede configurar el núcleo como un servicio del sistema
Es posible que aparezca este error cuando el instalador del software AWS IoT Greengrass principal no se configura AWS IoT Greengrass como un servicio del sistema. En los dispositivos Linux, este error suele producirse si el dispositivo principal no tiene el sistema de inicio systemd
Realice una de las siguientes acciones:
-
Configure y ejecute el software AWS IoT Greengrass principal como un servicio del sistema. Debe configurar el software como un servicio del sistema para poder utilizar todas las características de AWS IoT Greengrass. Puede instalar systemd
o utilizar un sistema de inicio diferente. Para obtener más información, consulte Configuración del núcleo de Greengrass como un servicio del sistema. -
Ejecute el software AWS IoT Greengrass principal sin un servicio de sistema. Puede ejecutar el software mediante un script de cargador que el instalador configura en la carpeta raíz de Greengrass. Para obtener más información, consulte Ejecute el software AWS IoT Greengrass Core sin un servicio del sistema.
No es posible conectarse a AWS IoT Core
Es posible que veas este error cuando el software AWS IoT Greengrass Core no se pueda conectar AWS IoT Core para recuperar los trabajos de implementación, por ejemplo. Haga lo siguiente:
-
Comprueba que tu dispositivo principal se pueda conectar a Internet y AWS IoT Core. Para obtener más información sobre el AWS IoT Core punto final al que se conecta el dispositivo, consulteConfigurar el software AWS IoT Greengrass principal.
-
Comprueba que el dispositivo AWS IoT principal utilice un certificado que permita los
iot:Subscribe
permisosiot:Connect
iot:Publish
iot:Receive
,, y. -
Si su dispositivo principal usa un proxy de red, compruebe que el dispositivo principal tenga un rol de dispositivo y que este rol conceda los permisos
iot:Connect
,iot:Publish
,iot:Receive
yiot:Subscribe
.
Error de falta de memoria
Este error suele producirse si el dispositivo no tiene memoria suficiente para asignar un objeto en el montón de Java. En los dispositivos con memoria limitada, es posible que tenga que especificar un tamaño máximo de pila para controlar la asignación de memoria. Para obtener más información, consulte Controle la asignación de memoria con opciones JVM.
No se puede instalar Greengrass CLI
Es posible que aparezca el siguiente mensaje de consola cuando utilice el --deploy-dev-tools
argumento en el comando de instalación 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
Esto ocurre cuando el CLI componente Greengrass no está instalado porque el dispositivo principal es miembro de un grupo de cosas que tiene una implementación existente. Si ve este mensaje, puede implementar manualmente el CLI componente Greengrass (aws.greengrass.Cli
) en el dispositivo para instalar Greengrass. CLI Para obtener más información, consulte Instala el Greengrass CLI.
User root is not allowed to execute
Es posible que aparezca este error cuando el usuario que ejecuta el software AWS IoT Greengrass Core (normalmenteroot
) no tiene permiso para ejecutar sudo
con ningún usuario o grupo. Para el usuario ggc_user
predeterminado del sistema, este error tiene el siguiente aspecto:
Sorry, user root is not allowed to execute <command> as ggc_user:ggc_group.
Compruebe que el archivo /etc/sudoers
da permiso al usuario para ejecutar sudo
como otros grupos. El permiso para el usuario en /etc/sudoers
debería verse como el siguiente ejemplo.
root ALL=(ALL:ALL) ALL
com.aws.greengrass.lifecyclemanager.GenericExternalService: Could not determine user/group to run with
Es posible que aparezca este error cuando el dispositivo principal intente ejecutar un componente y el núcleo de Greengrass no especifique un usuario de sistema predeterminado para ejecutar los componentes.
Para solucionar este problema, configure el núcleo de Greengrass para especificar el usuario del sistema predeterminado que ejecuta los componentes. Para obtener más información, consulte Configuración del usuario que ejecuta los componentes y Configuración del usuario del componente predeterminado.
Failed to map segment from shared object: operation not permitted
Es posible que veas este error cuando el software AWS IoT Greengrass principal no se inicie porque la /tmp
carpeta está montada con noexec
permisos. La biblioteca AWS Common Runtime (CRT)/tmp
carpeta de forma predeterminada.
Realice una de las siguientes acciones:
-
Ejecute el siguiente comando para volver a montar la carpeta
/tmp
con permisosexec
e inténtelo de nuevo.sudo mount -o remount,exec /tmp
-
Si ejecuta Greengrass nucleus v2.5.0 o posterior, puede configurar una JVM opción para cambiar la carpeta que usa la biblioteca. AWS CRT Puede especificar el
jvmOptions
parámetro en la configuración del componente núcleo de Greengrass en una implementación o al instalar el software AWS IoT Greengrass Core./path/to/use
Sustitúyalo por la ruta a una carpeta que pueda usar la AWS CRT biblioteca.{ "jvmOptions": "-Daws.crt.lib.dir=\"
/path/to/use
\"" }
No se pudo configurar el servicio de Windows
Es posible que veas este error si instalas el software AWS IoT Greengrass Core en un dispositivo Microsoft Windows 2016. El software AWS IoT Greengrass principal no es compatible con Windows 2016; para obtener una lista de los sistemas operativos compatibles, consultePlataformas admitidas.
Si debe utilizar Windows 2016, puede hacer lo siguiente:
-
Descomprima el archivo de instalación AWS IoT Greengrass de Core descargado
-
Abra el archivo
bin/greengrass.xml.template
en el directorioGreengrass
. -
Agregue la etiqueta
<autoRefresh>
al final del archivo justo antes de la etiqueta</service>
.</log> <autoRefresh>false</autoRefresh> </service>
com.aws.greengrass.util.exceptions.TLSAuthException: Failed to get trust manager
Es posible que aparezca este error al instalar el software AWS IoT Greengrass Core sin un archivo raíz de una entidad emisora de certificados (CA).
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
Compruebe que ha especificado un archivo de CA raíz válido con el parámetro rootCaPath
en el archivo de configuración que ha proporcionado al instalador. Para obtener más información, consulte Instalación del software AWS IoT Greengrass Core.
com.aws.greengrass.deployment.IotJobsHelper: No connection available during subscribing to Iot Jobs descriptions topic. Will retry in sometime
Es posible que veas este mensaje de advertencia cuando el dispositivo principal no pueda conectarse para suscribirse AWS IoT Core a las notificaciones de tareas de implementación. Haga lo siguiente:
-
Compruebe que el dispositivo principal esté conectado a Internet y pueda acceder al punto final de AWS IoT datos que configuró. Para obtener más información acerca de los puntos de conexión que utilizan los dispositivos principales, consulte Cómo permitir el tráfico del dispositivo a través de un proxy o firewall.
-
Compruebe los registros de Greengrass para ver si hay otros errores que revelen otras causas principales.
software.amazon.awssdk.services.iam.model.IamException: The security token included in the request is invalid
Es posible que aparezca este error al instalar el software AWS IoT Greengrass principal con el aprovisionamiento automático y el instalador utilice un token de AWS sesión que no es válido. Haga lo siguiente:
-
Si utiliza credenciales de seguridad temporales, compruebe que el token de sesión es correcto y que está copiando y pegando el token de sesión completo.
-
Si utiliza credenciales de seguridad de larga duración, compruebe que el dispositivo no tenga un token de sesión de una época en la que utilizó credenciales temporales. Haga lo siguiente:
-
Ejecute el siguiente comando para anular la configuración de la variable de entorno del token de sesión.
-
Compruebe si el archivo de AWS credenciales,
~/.aws/credentials
, contiene un token de sesión,aws_session_token
. Si es así, elimine esa línea del archivo.aws_session_token =
AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4Olgk
-
También puede instalar el software AWS IoT Greengrass Core sin proporcionar AWS credenciales. Para obtener más información, consulte Instale el software AWS IoT Greengrass principal con aprovisionamiento manual de recursos o Instale el software AWS IoT Greengrass principal con aprovisionamiento AWS IoT de flota.
software.amazon.awssdk.services.iot.model.IotException: User: <user> is not authorized to perform: iot:GetPolicy
Es posible que aparezca este error al instalar el software AWS IoT Greengrass principal con el aprovisionamiento automático y el instalador utilice AWS credenciales que no tienen los permisos necesarios. Para obtener más información sobre los permisos necesarios, consulte Política de IAM mínima para que el instalador aprovisione recursos.
Compruebe los permisos para determinar la IAM identidad de las credenciales y otorgue a la IAM identidad los permisos necesarios que falten.
Error: com.aws.greengrass.shadowmanager.sync.model.FullShadowSyncRequest: Could not execute cloud shadow get request
Es posible que veas este error cuando utilices el componente administrador de sombras para sincronizar las sombras de los dispositivos con ellas. AWS IoT Core El código de estado HTTP 403 indica que este error se produjo porque la AWS IoT política del dispositivo principal no permite realizar llamadasGetThingShadow
.
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)
Para sincronizar las sombras locales con las sombras locales AWS IoT Core, la AWS IoT política del dispositivo principal debe conceder los siguientes permisos:
-
iot:GetThingShadow
-
iot:UpdateThingShadow
-
iot:DeleteThingShadow
Comprueba la AWS IoT política del dispositivo principal y añade los permisos necesarios que falten. Para obtener más información, consulte los siguientes temas:
-
AWS IoT Core acciones políticas en la Guía para AWS IoT desarrolladores
-
Actualización de la política AWS IoT de un dispositivo principal
Operation aws.greengrass#<operation> is not supported by Greengrass
Es posible que aparezca este error cuando utilice una operación de comunicación entre procesos (IPC) en un componente personalizado de Greengrass y el componente AWS requerido proporcionado no esté instalado en el dispositivo principal.
Para solucionar este problema, añada el componente necesario como una dependencia en la receta de componentes, de modo que el software AWS IoT Greengrass principal instale el componente necesario al implementar el componente.
-
Recupera los valores secretos:
aws.greengrass.SecretManager
-
Interactúa con las sombras locales:
aws.greengrass.ShadowManager
-
Administre las implementaciones y los componentes locales:
aws.greengrass.Cli
versión 2.6.0 o posterior -
Autentice y autorice los dispositivos DE cliente:
aws.greengrass.clientdevices.Auth
versión 2.2.0 o posterior
java.io.FileNotFoundException: <stream-manager-store-root-dir>/stream_manager_metadata_store (Permission denied)
Es posible que vea este error en el archivo de registro del administrador de flujos (aws.greengrass.StreamManager.log
) cuando configura el administrador de flujos para que use una carpeta raíz que no existe o que no tiene los permisos correctos. Para obtener más información sobre cómo configurar esta carpeta, consulte configuración del administrador de flujos.
com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: Private key or certificate with label <label> does not exist
Este error se produce cuando el componente proveedor PKCS #11 no puede encontrar ni cargar la clave privada o el certificado que especificó al configurar el software AWS IoT Greengrass Core para que utilice un módulo de seguridad de hardware (HSM). Haga lo siguiente:
-
Compruebe que la clave privada y el certificado estén almacenados en HSM la ranura, el usuario PIN y la etiqueta de objeto para los que ha configurado el software AWS IoT Greengrass Core.
-
Compruebe que la clave privada y el certificado utilizan la misma etiqueta de objeto enHSM.
-
Si su objeto HSM es compatibleIDs, compruebe que la clave privada y el certificado utilizan el mismo ID de objeto en elHSM.
Consulte la documentación correspondiente HSM para obtener información sobre cómo consultar los detalles sobre los tokens de seguridad delHSM. Si necesitas cambiar la ranura, la etiqueta del objeto o el identificador del objeto por un token de seguridad, consulta la documentación HSM para saber cómo hacerlo.
software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: User: <user> is not authorized to perform: secretsmanager:GetSecretValue on resource: <arn>
Este error puede producirse cuando utilizas el componente de administrador de secretos para desplegar un AWS Secrets Manager secreto. Si la IAMfunción de intercambio de fichas del dispositivo principal no concede permiso para obtener el secreto, se produce un error en la implementación y los registros de Greengrass incluyen este error.
Cómo autorizar a un dispositivo principal a descargar un secreto
-
Agregue el permiso
secretsmanager:GetSecretValue
al rol de intercambio de token del dispositivo principal. En el siguiente ejemplo de declaración de política, se concede permiso para obtener el valor de un secreto.{ "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyGreengrassSecret-abcdef" ] }
Para obtener más información, consulte Autorización de los dispositivos principales para interactuar con los servicios de AWS.
-
Vuelve a aplicar la implementación al dispositivo principal. Realice una de las siguientes acciones:
-
Revise la implementación sin cambios. El dispositivo principal intenta volver a descargar el secreto cuando recibe la implementación revisada. Para obtener más información, consulte Revisión de las implementaciones.
-
Reinicie el software AWS IoT Greengrass principal para volver a intentar la implementación. Para obtener más información, consulte Ejecución del software AWS IoT Greengrass Core
La implementación se realiza correctamente si el administrador de secretos descarga el secreto correctamente.
-
software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: Access to KMS is not allowed
Este error puede producirse cuando se utiliza el componente de administrador de secretos para implementar un AWS Secrets Manager secreto cifrado mediante una AWS Key Management Service clave. Si la IAMfunción de intercambio de fichas del dispositivo principal no concede permiso para descifrar el secreto, se produce un error en el despliegue y los registros de Greengrass incluyen este error.
Para solucionar el problema, agregue el permiso kms:Decrypt
al rol de intercambio de token del dispositivo principal. Para obtener más información, consulte los siguientes temas:
-
Cifrado y descifrado de secretos en la Guía del usuario de AWS Secrets Manager
-
Autorización de los dispositivos principales para interactuar con los servicios de AWS
java.lang.NoClassDefFoundError: com/aws/greengrass/security/CryptoKeySpi
Es posible que veas este error cuando intentes instalar el software AWS IoT Greengrass Core con seguridad de hardware y utilices una versión anterior del núcleo de Greengrass que no admite la integración de seguridad de hardware. Para usar la integración de seguridad de hardware, debe usar el núcleo de Greengrass versión 2.5.3 o posterior.
com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: CKR_OPERATION_NOT_INITIALIZED
Es posible que aparezca este error cuando utilice la TPM2 biblioteca cuando ejecute AWS IoT Greengrass Core como un servicio del sistema.
Este error indica que debe agregar una variable de entorno que proporcione la ubicación del almacén PKCS #11 en el archivo de servicio de AWS IoT Greengrass Core systemd.
Para obtener más información, consulte la sección Requisitos de la documentación del componente PKCSproveedor #11.
Greengrass core device stuck on nucleus v2.12.3
Si su dispositivo principal de Greengrass no revisa la implementación de la versión 2.12.3 de núcleo, es posible que tenga que descargar y reemplazar el archivo Greengrass.jar
por la versión 2.12.2 del núcleo de Greengrass. Haga lo siguiente:
-
Ejecute el siguiente comando en su dispositivo principal de Greengrass para detener el software de Greengrass Core.
-
En su dispositivo principal, descargue el AWS IoT Greengrass software a un archivo denominado
greengrass-2.12.2.zip
. -
Descomprime el software AWS IoT Greengrass principal en una carpeta de tu dispositivo.
GreengrassInstaller
Sustitúyalo por la carpeta que desee usar. -
Ejecute el siguiente comando para anular el archivo Greengrass de la versión 2.12.3 del núcleo por el archivo JAR Greengrass de la versión 2.12.2 del núcleo. JAR
-
Ejecute el siguiente comando para iniciar el software de Greengrass Core.
AWS IoT Greengrass problemas con la nube
Utilice la siguiente información para solucionar problemas con la AWS IoT Greengrass consola yAPI. Cada entrada corresponde a un mensaje de error que puede aparecer al realizar una acción.
An error occurred (AccessDeniedException) when calling the CreateComponentVersion operation: User: arn:aws:iam::123456789012:user/<username> is not authorized to perform: null
Es posible que aparezca este error al crear una versión de componente desde la AWS IoT Greengrass consola o durante la CreateComponentVersionoperación.
Este error indica que tu receta no es válida JSON oYAML. Compruebe la sintaxis de su receta, corrija cualquier problema de sintaxis e inténtelo de nuevo. Puedes usar un corrector online JSON o de YAML sintaxis para identificar los problemas de sintaxis de tu receta.
Invalid Input: Encountered following errors in Artifacts: {<s3ArtifactUri> = Specified artifact resource cannot be accessed}
Es posible que aparezca este error al crear una versión de un componente desde la AWS IoT Greengrass consola o durante la CreateComponentVersionoperación. Este error indica que un artefacto de S3 en la receta del componente no es válido.
Haga lo siguiente:
-
Compruebe que el depósito de S3 esté en el mismo Región de AWS lugar en el que creó el componente. AWS IoT Greengrass no admite solicitudes de artefactos de componentes entre regiones.
-
Comprueba que el artefacto URI es un objeto URL S3 válido y comprueba que el artefacto existe en ese objeto S3. URL
-
Comprueba que tienes Cuenta de AWS permiso para acceder al artefacto en su objeto S3. URL
INACTIVE deployment status
Es posible que obtengas un estado de INACTIVE
implementación si llamas a una empresa ListDeploymentsAPIsin las AWS IoT políticas dependientes requeridas. Debe tener los permisos necesarios para obtener un estado de implementación preciso. Puede encontrar las acciones dependientes consultando las acciones definidas por AWS IoT Greengrass V2 y siguiendo los permisos necesarios para ListDeployments
. Sin los AWS IoT permisos dependientes necesarios, seguirá viendo el estado de la implementación, pero es posible que vea un estado de implementación inexacto deINACTIVE
.
Problemas de implementación del dispositivo principal
Solución de problemas en las implementaciones de los dispositivos principales de Greengrass. Cada entrada corresponde a un mensaje de registro que puede que vea en su dispositivo principal.
Temas
- Error: com.aws.greengrass.componentmanager.exceptions.PackageDownloadException: Failed to download artifact
- Error: com.aws.greengrass.componentmanager.exceptions.ArtifactChecksumMismatchException: Integrity check for downloaded artifact failed. Probably due to file corruption.
- Error: com.aws.greengrass.componentmanager.exceptions.NoAvailableComponentVersionException: Failed to negotiate component <name> version with cloud and no local applicable version satisfying requirement <requirements>
- software.amazon.awssdk.services.greengrassv2data.model.ResourceNotFoundException: The latest version of Component <componentName> doesn't claim platform <coreDevicePlatform> compatibility
- 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
- 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
- Info: com.aws.greengrass.deployment.exceptions.RetryableDeploymentDocumentDownloadException: Greengrass Cloud Service returned an error when getting full deployment configuration
- Warn: com.aws.greengrass.deployment.DeploymentService: Failed to get thing group hierarchy
- Info: com.aws.greengrass.deployment.DeploymentDocumentDownloader: Calling Greengrass cloud to get full deployment configuration
- Caused by: software.amazon.awssdk.services.greengrassv2data.model.GreengrassV2DataException: null (Service: GreengrassV2Data, Status Code: 403, Request ID: <some_request_id>, Extended Request ID: null)
Error: com.aws.greengrass.componentmanager.exceptions.PackageDownloadException: Failed to download artifact
Es posible que aparezca este error cuando el software AWS IoT Greengrass principal no puede descargar un artefacto componente cuando el dispositivo principal realiza una implementación. La implementación falla como resultado de este error.
Cuando recibe este error, el registro también incluye un rastreo de pila que puede usar para identificar el problema específico. Cada una de las siguientes entradas corresponde a un mensaje que puede que vea en el rastreo de pila del mensaje de error Failed to download artifact
.
Temas
software.amazon.awssdk.services.s3.model.S3Exception: null (Service: S3, Status Code: 403, Request ID: null, ...)
El PackageDownloadException error puede incluir este rastreo de pila en los siguientes casos:
-
El artefacto del componente no está disponible en el objeto S3 URL que especificó en la receta del componente. Comprueba que has subido el artefacto al depósito S3 y que el artefacto URI coincide con el objeto S3 del artefacto URL del depósito.
-
La función de intercambio de fichas del dispositivo principal no permite que el software AWS IoT Greengrass Core descargue el artefacto componente del objeto S3 URL que especifiques en la receta del componente. Comprueba que la función de intercambio de fichas incluya
s3:GetObject
el objeto S3 en el URL que el artefacto esté disponible.
software.amazon.awssdk.services.s3.model.S3Exception: Access Denied (Service: S3, Status Code: 403, Request ID: <requestID>
El PackageDownloadException error puede incluir este rastreo de pila cuando el dispositivo principal no tiene permiso para llamars3:GetBucketLocation
. El mensaje de error incluye uno de los siguientes mensajes.
reason: Failed to determine S3 bucket location
Compruebe que el rol de intercambio de token permita s3:GetBucketLocation
para el bucket de S3 en la que el artefacto está disponible.
Error: com.aws.greengrass.componentmanager.exceptions.ArtifactChecksumMismatchException: Integrity check for downloaded artifact failed. Probably due to file corruption.
Es posible que aparezca este error cuando el software AWS IoT Greengrass principal no puede descargar un artefacto componente cuando el dispositivo principal realiza una implementación. La implementación falla porque la suma de verificación del archivo de artefacto descargado no coincide con la suma de verificación que AWS IoT Greengrass se calculó al crear el componente.
Haga lo siguiente:
-
Compruebe si el archivo de artefactos ha cambiado en el bucket de S3 donde lo aloja. Si el archivo ha cambiado desde que creó el componente, restáurelo a la versión anterior que esperaba el dispositivo principal. Si no puede restaurar el archivo a su versión anterior o si desea utilizar la nueva versión del archivo, cree una nueva versión del componente con el archivo de artefactos.
-
Compruebe la conexión a Internet del dispositivo principal. Este error puede producirse si el archivo del artefacto se daña mientras se descarga. Cree una implementación nueva e inténtelo de nuevo.
Error: com.aws.greengrass.componentmanager.exceptions.NoAvailableComponentVersionException: Failed to negotiate component <name> version with cloud and no local applicable version satisfying requirement <requirements>
Es posible que aparezca este error cuando un dispositivo principal no encuentre una versión de componente que cumpla con los requisitos de las implementaciones de ese dispositivo principal. El dispositivo principal comprueba el componente en el AWS IoT Greengrass servicio y en el dispositivo local. El mensaje de error incluye el destino de cada implementación y los requisitos de versión de esa implementación para el componente. El destino de la implementación puede ser un objeto, un grupo de objetos o LOCAL_DEPLOYMENT
, que represente la implementación local en el dispositivo principal.
Este error se puede producir en los siguientes escenarios:
-
El dispositivo principal es el objetivo de varias implementaciones que tienen requisitos de versión de componentes contradictorios. Por ejemplo, el dispositivo principal puede ser el objetivo de varias implementaciones que incluyen un componente
com.example.HelloWorld
, en las que una implementación requiere la versión 1.0.0 y la otra requiere la versión 1.0.1. Es imposible tener un componente que cumpla ambos requisitos, por lo que la implementación falla. -
La versión del componente no existe en el AWS IoT Greengrass servicio ni en el dispositivo local. Es posible que el componente se haya eliminado, por ejemplo.
-
Existen versiones de componentes que cumplen con los requisitos de la versión, pero ninguna es compatible con la plataforma del dispositivo principal.
-
La AWS IoT política del dispositivo principal no concede el
greengrass:ResolveComponentCandidates
permiso. BusqueStatus Code: 403
en el registro de errores para identificar este problema. Para resolver este problema, agregue el permisogreengrass:ResolveComponentCandidates
a la política AWS IoT del dispositivo principal. Para obtener más información, consulte Política mínima de AWS IoT para dispositivos principales de AWS IoT Greengrass V2.
Para resolver este problema, revise las implementaciones para incluir versiones de componentes compatibles o eliminar los incompatibles. Para obtener más información sobre cómo revisar las implementaciones en la nube, consulte Revisión de las implementaciones. Para obtener más información sobre cómo revisar las implementaciones locales, consulta el comando AWS IoT Greengrass CLIdeploy create.
software.amazon.awssdk.services.greengrassv2data.model.ResourceNotFoundException: The latest version of Component <componentName> doesn't claim platform <coreDevicePlatform> compatibility
Es posible que aparezca este error al implementar un componente en un dispositivo principal y el componente no muestre una plataforma que sea compatible con la plataforma del dispositivo principal. Realice una de las siguientes acciones:
-
Si el componente es un componente personalizado de Greengrass, puede actualizarlo para que sea compatible con el dispositivo principal. Agregue un nuevo manifiesto que coincida con la plataforma del dispositivo principal o actualice un manifiesto existente para que coincida con la plataforma del dispositivo principal. Para obtener más información, consulte AWS IoT Greengrass referencia de recetas de componentes.
-
Si el componente lo proporciona AWS, compruebe si otra versión del componente es compatible con el dispositivo principal. Si ninguna versión es compatible, póngase en contacto con nosotros mediante AWS re:Post
usando la etiqueta AWS IoT Greengrass o póngase en contacto con 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
Es posible que aparezca este error al implementar un componente que depende del núcleo de Greengrass y el dispositivo principal ejecute una versión del núcleo de Greengrass anterior a la última versión secundaria disponible. Este error se produce porque el software AWS IoT Greengrass principal intenta actualizar automáticamente los componentes a la última versión compatible. Sin embargo, el software AWS IoT Greengrass Core impide que el núcleo de Greengrass se actualice a una nueva versión secundaria, ya que varios de los componentes AWS proporcionados dependen de versiones secundarias específicas del núcleo de Greengrass. Para obtener más información, consulte Comportamiento de actualización del núcleo de Greengrass.
Debe revisar la implementación para especificar la versión del núcleo de Greengrass que quiere usar. Realice una de las siguientes acciones:
-
Revise la implementación para especificar la versión del núcleo de Greengrass que ejecuta actualmente el dispositivo principal.
-
Revise la implementación para especificar una versión secundaria posterior del núcleo de Greengrass. Si elige esta opción, también debe actualizar las versiones de todos los componentes AWS proporcionados que dependen de versiones secundarias específicas del núcleo de Greengrass. Para obtener más información, consulte Componentes proporcionados por AWS.
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
Es posible que vea este error cuando mueva un dispositivo de Greengrass de un grupo de objetos a otro y luego de vuelta al grupo original con implementaciones que requieren que Greengrass se reinicie.
Para resolver este problema, vuelva a crear el directorio de inicio del dispositivo. También recomendamos encarecidamente actualizar el núcleo de Greengrass a la versión 2.9.6 o posterior.
El siguiente es un script de Linux para recrear el directorio de inicio. Guarde el script en un archivo denominado 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
Para ejecutar el script, ejecute el siguiente comando:
[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
Es posible que aparezca este error cuando el dispositivo principal reciba un documento de implementación de gran tamaño, es decir, un documento de implementación de más de 7 KB (en el caso de las implementaciones dirigidas a objetos) o 31 KB (en el caso de las implementaciones dirigidas a grupos de objetos). Para recuperar un documento de despliegue de gran tamaño, la AWS IoT política del dispositivo principal debe permitir el greengrass:GetDeploymentConfiguration
permiso. Este error puede producirse cuando el dispositivo principal no tiene este permiso. Cuando se produce este error, la implementación se reintenta indefinidamente y su estado es En curso (IN_PROGRESS
).
Para resolver este problema, añade el greengrass:GetDeploymentConfiguration
permiso a la AWS IoT política del dispositivo principal. Para obtener más información, consulte Actualización de la política AWS IoT de un dispositivo principal.
Warn: com.aws.greengrass.deployment.DeploymentService: Failed to get thing group hierarchy
Es posible que veas esta advertencia cuando el dispositivo principal reciba una implementación y la AWS IoT política del dispositivo principal no permita el greengrass:ListThingGroupsForCoreDevice
permiso. Cuando crea una implementación, el dispositivo principal usa este permiso para identificar sus grupos de objetos y eliminar componentes de cualquier grupo de objetos que haya eliminado del dispositivo principal. Si el dispositivo principal ejecuta el núcleo de Greengrass versión 2.5.0, se produce un error en la implementación. Si el dispositivo principal ejecuta el núcleo de Greengrass versión 2.5.1 o posterior, la implementación continúa, pero no elimina los componentes. Para obtener más información acerca de comportamientos de eliminación de grupos de objeto, consulte Implementación de componentes de AWS IoT Greengrass en los dispositivos.
Para actualizar el comportamiento del dispositivo principal a fin de eliminar componentes de los grupos de cosas de los que se elimina el dispositivo principal, añada el greengrass:ListThingGroupsForCoreDevice
permiso a la AWS IoT política del dispositivo principal. Para obtener más información, consulte Actualización de la política AWS IoT de un dispositivo principal.
Info: com.aws.greengrass.deployment.DeploymentDocumentDownloader: Calling Greengrass cloud to get full deployment configuration
Es posible que vea este mensaje de información impreso varias veces sin ningún error, ya que el dispositivo principal registra el error a nivel de registro DEBUG
. Este problema puede producirse cuando el dispositivo principal recibe un documento de implementación de gran tamaño. Cuando se produce este error, la implementación se reintenta indefinidamente y su estado es En curso (IN_PROGRESS
). Para obtener más información sobre cómo resolver este problema, consulte esta entrada de solución de problemas.
Caused by: software.amazon.awssdk.services.greengrassv2data.model.GreengrassV2DataException: null (Service: GreengrassV2Data, Status Code: 403, Request ID: <some_request_id>, Extended Request ID: null)
Es posible que veas este error cuando un plano de datos API no tiene iot:Connect
permiso. Si no tiene la política correcta, recibirá un GreengrassV2DataException: 403
. Para crear una política de permisos, siga estas instrucciones: Creación de una política de AWS IoT.
Problemas con los componentes del dispositivo principal
Solución de problemas en los componentes de los dispositivos principales de Greengrass.
Temas
- Warn: '<command>' is not recognized as an internal or external command
- El script de Python no registra los mensajes
- La configuración de los componentes no se actualiza al cambiar la configuración predeterminada
- awsiot.greengrasscoreipc.model.UnauthorizedError
- com.aws.greengrass.authorization.exceptions.AuthorizationException: Duplicate policy ID "<id>" for principal "<componentList>"
- com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from TES (HTTP 400)
- com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from TES (HTTP 403)
- com.aws.greengrass.tes.CredentialsProviderError: Could not load credentials from any providers
- Received error when attempting to retrieve ECS metadata: Could not connect to the endpoint URL: "<tokenExchangeServiceEndpoint>"
- copyFrom: <configurationPath> is already a container, not a leaf
- com.aws.greengrass.componentmanager.plugins.docker.exceptions.DockerLoginException: Error logging into the registry using credentials - 'The stub received bad data.'
- java.io.IOException: Cannot run program "cmd" ...: [LogonUser] The password for this account has expired.
- aws.greengrass.StreamManager: Instant exceeds minimum or maximum instant
Warn: '<command>' is not recognized as an internal or external command
Es posible que veas este error en los registros de un componente de Greengrass cuando el software AWS IoT Greengrass principal no ejecute un comando en el script de ciclo de vida del componente. El estado del componente pasa a ser BROKEN
, resultado de este error. Este error puede producirse si el usuario del sistema que ejecuta el componente, por ejemploggc_user
, no encuentra el archivo ejecutable del comando en las carpetas de. PATH
En los dispositivos Windows, compruebe que la carpeta que contiene el ejecutable pertenece a la PATH
del sistema que ejecuta el componente. Si no aparece en la PATH
, realice una de las siguientes opciones:
-
Agregue la carpeta del ejecutable a la variable del sistema
PATH
, que está disponible para todos los usuarios. A continuación, reinicie el componente.Si ejecuta Greengrass nucleus 2.5.0, después de actualizar la variable de
PATH
sistema, debe reiniciar el software AWS IoT Greengrass Core para ejecutar los componentes con la actualización.PATH
Si el software AWS IoT Greengrass principal no utiliza la actualizaciónPATH
después de reiniciar el software, reinicie el dispositivo e inténtelo de nuevo. Para obtener más información, consulte Ejecución del software AWS IoT Greengrass Core. -
Agregue la carpeta del ejecutable a la variable de usuario
PATH
del sistema que ejecuta el componente.
El script de Python no registra los mensajes
Los dispositivos principales de Greengrass recopilan registros que puede utilizar para identificar problemas con los componentes. Si los mensajes del script stdout
y stderr
de Python no aparecen en los registros de sus componentes, es posible que deba vaciar el búfer o deshabilitar el almacenamiento en búfer para estos flujos de salida estándar en Python. Realice uno de los siguientes procedimientos:
-
Ejecute Python con el argumento -u
para deshabilitar el almacenamiento en búfer en stdout
ystderr
. -
Use Setenv en la receta de su componente para establecer la variable de PYTHONUNBUFFERED
entorno en una cadena que no esté vacía. Esta variable de entorno deshabilita el almacenamiento en búfer en stdout
ystderr
. -
Vacíe el búfer de los flujos
stdout
ostderr
. Realice una de las siguientes acciones:-
Vacíe un mensaje al imprimirlo.
import sys print('Hello, error!', file=sys.stderr, flush=True)
-
Vacíe un mensaje después de imprimirlo. Puede enviar varios mensajes antes de vaciar el flujo.
import sys print('Hello, error!', file=sys.stderr) sys.stderr.flush()
-
Para obtener más información acerca de cómo verificar que el script de Python genera mensajes de registro, consulte Supervisión de los registros de AWS IoT Greengrass.
La configuración de los componentes no se actualiza al cambiar la configuración predeterminada
Al cambiar la DefaultConfiguration
en la receta de un componente, la nueva configuración predeterminada no sustituirá a la configuración existente del componente durante la implementación. Para aplicar la nueva configuración predeterminada, debe restablecer la configuración del componente a sus valores predeterminados. Al implementar el componente, especifique una sola cadena vacía como restablecimiento de actualización.
awsiot.greengrasscoreipc.model.UnauthorizedError
Es posible que veas este error en los registros de un componente de Greengrass cuando el componente no tiene permiso para realizar una IPC operación en un recurso. Para conceder permiso a un componente para llamar a una IPC operación, defina una política de IPC autorización en la configuración del componente. Para obtener más información, consulte Autoriza a los componentes a realizar IPC operaciones.
sugerencia
Si cambia DefaultConfiguration
en la receta de un componente, debe restablecer la configuración del componente a su nueva configuración predeterminada. Al implementar el componente, especifique una sola cadena vacía como restablecimiento de actualización. Para obtener más información, consulte La configuración de los componentes no se actualiza al cambiar la configuración predeterminada.
com.aws.greengrass.authorization.exceptions.AuthorizationException: Duplicate policy ID "<id>" for principal "<componentList>"
Es posible que aparezca este error si varias políticas de IPC autorización, incluidas las de todos los componentes del dispositivo principal, utilizan el mismo identificador de política.
Comprueba las políticas de IPC autorización de tus componentes, corrige los duplicados e inténtalo de nuevo. Para crear una política únicaIDs, le recomendamos que combine el nombre del componente, el nombre del IPC servicio y un contador. Para obtener más información, consulte Autoriza a los componentes a realizar IPC operaciones.
sugerencia
Si cambia DefaultConfiguration
en la receta de un componente, debe restablecer la configuración del componente a su nueva configuración predeterminada. Al implementar el componente, especifique una sola cadena vacía como restablecimiento de actualización. Para obtener más información, consulte La configuración de los componentes no se actualiza al cambiar la configuración predeterminada.
com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from TES (HTTP 400)
Es posible que aparezca este error cuando un dispositivo principal no pueda obtener AWS las credenciales del servicio de intercambio de fichas. El código de estado HTTP 400 indica que este error se produjo porque la IAMfunción de intercambio de fichas del dispositivo principal no existe o no tiene una relación de confianza que permita al proveedor de AWS IoT credenciales asumirla.
Haga lo siguiente:
-
Identifique la función de intercambio de token que utiliza el dispositivo principal. El mensaje de error incluye el alias de la AWS IoT función del dispositivo principal, que apunta a la función de intercambio de fichas. Ejecuta el siguiente comando en tu ordenador de desarrollo y
MyGreengrassCoreTokenExchangeRoleAlias
sustitúyelo por el nombre del alias del AWS IoT rol que aparece en el mensaje de error.aws iot describe-role-alias --role-alias
MyGreengrassCoreTokenExchangeRoleAlias
La respuesta incluye el nombre del recurso de Amazon (ARN) de la IAM función de intercambio de fichas.
{ "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" } }
-
Compruebe si el rol existe. Ejecute el siguiente comando y
MyGreengrassV2TokenExchangeRole
sustitúyalo por el nombre de la función de intercambio de tokens.aws iam get-role --role-name
MyGreengrassV2TokenExchangeRole
Si el comando devuelve un error
NoSuchEntity
, el rol no existe y debe crearlo. Para obtener más información acerca de cómo crear y configurar el rol, consulte Autorización de los dispositivos principales para interactuar con los servicios de AWS. -
Compruebe que el rol tenga una relación de confianza que permita al proveedor de AWS IoT credenciales asumirlo. La respuesta del paso anterior contiene un
AssumeRolePolicyDocument
, que define las relaciones de confianza del rol. El rol debe definir una relación de confianza que permite acredentials.iot.amazonaws.com
asumir el rol. Este documento debería verse similar al siguiente ejemplo.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Si las relaciones de confianza del rol no permiten asumir
credentials.iot.amazonaws.com
, debe agregar esta relación de confianza al rol. Para obtener más información, consulte Modificación de un rol en la Guía del usuario de AWS Identity and Access Management .
com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from TES (HTTP 403)
Es posible que aparezca este error cuando un dispositivo principal no puede obtener AWS las credenciales del servicio de intercambio de fichas. El código de estado HTTP 403 indica que este error se produjo porque las AWS IoT políticas del dispositivo principal no conceden el iot:AssumeRoleWithCertificate
permiso para el alias de AWS IoT rol del dispositivo principal.
Revisa las AWS IoT políticas del dispositivo principal y añade el iot:AssumeRoleWithCertificate
permiso para el alias de AWS IoT rol del dispositivo principal. El mensaje de error incluye el alias de AWS IoT rol actual del dispositivo principal. Para obtener más información sobre este permiso y sobre cómo actualizar las AWS IoT políticas del dispositivo principal, consulte Política mínima de AWS IoT para dispositivos principales de AWS IoT Greengrass V2 yActualización de la política AWS IoT de un dispositivo principal.
com.aws.greengrass.tes.CredentialsProviderError: Could not load credentials from any providers
Es posible que aparezca este error cuando el componente intente solicitar AWS credenciales y no pueda conectarse al servicio de intercambio de fichas.
Haga lo siguiente:
-
Compruebe que el componente declara una dependencia del componente del servicio de intercambio de token,
aws.greengrass.TokenExchangeService
. Si no es así, agregue la dependencia y vuelva a implementar el componente. -
Si el componente se ejecuta en docker, asegúrese de aplicar la configuración de red y las variables de entorno correctas, según Utilice AWS las credenciales en los componentes del contenedor de Docker (Linux).
-
Si el componente está escrito en Nodejs, configure dns. setDefaultResultOrdene para
. ipv4first
-
Compruebe si hay
/etc/hosts
para una entrada que comience por::1
y contengalocalhost
. Elimine la entrada para ver si provocó que el componente se conectara al servicio de intercambio de token en una dirección incorrecta.
Received error when attempting to retrieve ECS metadata: Could not connect to the endpoint URL: "<tokenExchangeServiceEndpoint>"
Es posible que aparezca este error cuando el componente no ejecuta el servicio de intercambio de fichas y un componente intenta solicitar AWS credenciales.
Haga lo siguiente:
-
Compruebe que el componente declara una dependencia del componente del servicio de intercambio de token,
aws.greengrass.TokenExchangeService
. Si no es así, agregue la dependencia y vuelva a implementar el componente. -
Compruebe si el componente utiliza AWS credenciales
install
durante su ciclo de vida. AWS IoT Greengrass no garantiza la disponibilidad del servicio de intercambio de fichas durante elinstall
ciclo de vida. Actualice el componente para trasladar el código que usa las credenciales de AWS en el ciclo de vidastartup
orun
, a continuación, vuelva a implementar el componente.
copyFrom: <configurationPath> is already a container, not a leaf
Es posible que aparezca este error al cambiar un valor de configuración de un tipo de contenedor (una lista o un objeto) a un tipo que no es de contenedor (cadena, número o booleano). Haga lo siguiente:
-
Compruebe la receta del componente para ver si su configuración predeterminada establece ese valor de configuración en una lista o un objeto. Si es así, elimine o cambie ese valor de configuración.
-
Cree una implementación para restablecer ese valor de configuración a su valor predeterminado. Para obtener más información, consulte Crear implementaciones y Actualización de las configuraciones de los componentes.
A continuación, puede establecer ese valor de configuración en una cadena, un número o un booleano.
com.aws.greengrass.componentmanager.plugins.docker.exceptions.DockerLoginException: Error logging into the registry using credentials - 'The stub received bad data.'
Es posible que vea este error en los registros del núcleo de Greengrass cuando el componente del administrador de aplicaciones de Docker intenta descargar una imagen de Docker de un repositorio privado de Amazon Elastic Container Registry (Amazon). ECR Este error se produce si utiliza el ayudante de credenciales de Dockerdocker-credential-wincred
) wincred
. Como resultado, Amazon ECR no puede almacenar las credenciales de inicio de sesión.
Realice una de las siguientes acciones:
-
Si no utiliza el ayudante de credenciales de Docker
wincred
, elimine el programadocker-credential-wincred
del dispositivo principal. -
Si utiliza el ayudante de credenciales de Docker
wincred
, haga lo siguiente:-
Cambie el nombre del programa
docker-credential-wincred
en el dispositivo principal. Sustituyawincred
por un nombre nuevo para el ayudante de credenciales de Docker de Windows. Por ejemplo, puede cambiarle el nombre adocker-credential-wincredreal
. -
Actualice la opción
credsStore
en el archivo de configuración de Docker (.docker/config.json
) para usar el nuevo nombre del ayudante de credenciales de Docker de Windows. Por ejemplo, si ha cambiado el nombre del programa adocker-credential-wincredreal
, actualice la opcióncredsStore
awincredreal
.{ "credsStore": "
wincredreal
" }
-
java.io.IOException: Cannot run program "cmd" ...: [LogonUser] The password for this account has expired.
Es posible que aparezca este error en un dispositivo principal de Windows cuando el usuario del sistema que ejecuta los procesos del componente, por ejemplo ggc_user
, tiene una contraseña caducada. Como resultado, el software AWS IoT Greengrass Core no puede ejecutar los procesos de los componentes como ese usuario del sistema.
Cómo actualizar la contraseña de un usuario del sistema de Greengrass
-
Ejecute el siguiente comando como administrador para establecer la contraseña del usuario.
ggc_user
Sustitúyalo por el usuario del sistema ypassword
sustitúyalo por la contraseña que desee configurar.net user
ggc_user
password
-
Utilice la PsExec utilidad
para almacenar la nueva contraseña del usuario en la instancia de Credential Manager de la LocalSystem cuenta. password
Sustitúyala por la contraseña de usuario que hayas establecido.psexec -s cmd /c cmdkey /generic:ggc_user /user:ggc_user /pass:password
sugerencia
Según su configuración de Windows, es posible que la contraseña del usuario caduque en una fecha futura. Para garantizar que sus aplicaciones de Greengrass sigan funcionando, controle cuándo caduca la contraseña y actualícela antes de que caduque. También puede configurar la contraseña del usuario para que nunca caduque.
-
Para comprobar cuándo caducan un usuario y su contraseña, ejecute el siguiente comando.
net user
ggc_user
| findstr /C:expires -
Para configurar la contraseña de un usuario para que no caduque nunca, ejecute el siguiente comando.
wmic UserAccount where "Name='
ggc_user
'" set PasswordExpires=False -
Si utilizas Windows 10 o una versión posterior, donde el
wmic
comando está en desuso, ejecuta el siguiente PowerShell comando. 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
Al actualizar la versión 2.0.7 del administrador de flujos a una versión entre la versión 2.0.8 y la versión 2.0.11, es posible que aparezca el siguiente error en los registros del componente administrador de flujos si el componente no se inicia.
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 implementó el administrador de flujos versión 2.0.7 y desea actualizar a una versión posterior, debe actualizar al administrador de flujos versión 2.0.12 directamente. Para obtener más información sobre el componente administrador de flujos, consulte Administrador de flujos.
Problemas con los componentes de la función de Lambda del dispositivo principal
Solución de problemas con los componentes de la función de Lambda en los dispositivos principales.
Temas
The following cgroup subsystems are not mounted: devices, memory
Es posible que vea este error al ejecutar una función de Lambda en contenedores en los siguientes casos:
-
El dispositivo principal no tiene cgroup v1 activado para la memoria o los cgroups del dispositivo.
-
El dispositivo principal tiene habilitada la versión 2 de cgroups. Las funciones de Lambda de Greengrass requieren cgroups v1 y los cgroups v1 y v2 se excluyen mutuamente.
Para habilitar cgroups v1, inicie el dispositivo con los siguientes parámetros del kernel de Linux.
cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0
sugerencia
En una Raspberry Pi, edite el archivo /boot/cmdline.txt
para configurar los parámetros del núcleo del dispositivo.
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>
Es posible que aparezca este error al ejecutar una función Lambda V1, que utiliza el AWS IoT Greengrass CoreSDK, en un dispositivo de núcleo V2 sin especificar una suscripción en el componente del router de suscripciones heredado. Para solucionar este problema, implemente y configure el enrutador de suscripciones antiguo para especificar las suscripciones necesarias. Para obtener más información, consulte Cómo importar una función de Lambda V1.
Versión del componente descontinuada
Es posible que veas una notificación en tu Personal Health Dashboard (PHD) cuando se deje de fabricar una versión de un componente de tu dispositivo principal. La versión del componente le envía esta notificación a los 60 PHD minutos de haber dejado de fabricarse.
Para ver qué implementaciones necesita revisar, haga lo siguiente mediante la AWS Command Line Interface:
-
Ejecute el siguiente comando para obtener una lista de sus dispositivos principales.
aws greengrassv2 list-core-devices
-
Ejecute el siguiente comando para recuperar el estado de los componentes en cada dispositivo principal del Paso 1. Reemplace
con el nombre de cada dispositivo principal para consultar.coreDeviceName
aws greengrassv2 list-installed-components --core-device-thing-name
coreDeviceName
-
Reúna los dispositivos principales con la versión de componentes discontinuada instalada en los pasos anteriores.
-
Ejecute el siguiente comando para recuperar el estado de todos los trabajos de implementación para un dispositivo principal del Paso 3. Reemplace
por el nombre del dispositivo principal que se va a consultar.coreDeviceName
aws greengrassv2 list-effective-deployments --core-device-thing-name
coreDeviceName
La respuesta contiene la lista de trabajos de implementación para el dispositivo principal. Puede revisar la implementación para elegir otra versión del componente. Para obtener información sobre cómo revisar las implementaciones, consulte Revisar las implementaciones.
Problemas con la interfaz de la línea de comandos de Greengrass
Solucione problemas con el Greengrass CLI.
java.lang.RuntimeException: Unable to create ipc client
Es posible que aparezca este error al ejecutar un CLI comando de Greengrass y especificar una carpeta raíz diferente a la que está instalado el software AWS IoT Greengrass principal.
Realice una de las siguientes acciones para establecer la ruta raíz y
sustitúyala por la ruta a la instalación del software AWS IoT Greengrass principal:/greengrass/v2
-
Establezca la variable de entorno
GGC_ROOT_PATH
en
./greengrass/v2
-
Agregue los argumentos
--ggcRootPath
a su comando como se muestra en el siguiente ejemplo./greengrass/v2
greengrass-cli --ggcRootPath
<command> <subcommand> [arguments]/greengrass/v2
AWS Command Line Interface problemas
Solucionar AWS CLI problemas para. AWS IoT Greengrass V2
Error: Invalid choice: 'greengrassv2'
Es posible que aparezca este error al ejecutar un AWS IoT Greengrass V2 comando con AWS CLI (por ejemplo,aws greengrassv2 list-core-devices
).
Este error indica que tienes una versión de la AWS CLI que no es compatible AWS IoT Greengrass V2. Para AWS IoT Greengrass V2 utilizarla con AWS CLI, debe tener una de las siguientes versiones o una posterior:
-
Versión AWS CLI V1 mínima: v1.18.197
-
Versión AWS CLI V2 mínima: v2.1.11
sugerencia
Puede ejecutar el siguiente comando para comprobar la versión de la AWS CLI que dispone.
aws --version
Para resolver este problema, actualícelo AWS CLI a una versión posterior que sea compatible AWS IoT Greengrass V2. Para obtener más información, consulte Instalar, actualizar y desinstalar la AWS CLI en la Guía del usuario de AWS Command Line Interface .