Solución de problemas AWS IoT Greengrass V2 - AWS IoT Greengrass

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

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 ayudarle a identificar problemas con los componentes, las implementaciones y los dispositivos principales. Para obtener más información, consulte Supervisar AWS IoT Greengrass registros.

AWS IoT Greengrass Problemas principales de software

Solucionar problemas AWS IoT Greengrass de software principal.

Temas

No se pudo 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 Desinstale el software AWS IoT Greengrass principal.

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 entorno PATH (Linux) o en la variable de sistema PATH (Windows).

No se puede configurar Nucleus como un servicio del sistema

Es posible que aparezca este error si el instalador del software AWS IoT Greengrass Core 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. El instalador puede configurar correctamente el software AWS IoT Greengrass principal aunque no pueda configurar el servicio del sistema.

Realice una de las acciones siguientes:

No se puede conectar a AWS IoT Core

Es posible que aparezca este error cuando el software AWS IoT Greengrass principal 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 permisos iot:Connect iot:Publishiot:Receive,, y.

  • Si tu dispositivo principal usa un proxy de red, comprueba que el dispositivo principal tenga una función de dispositivo y que esta función permita los iot:Subscribe permisos iot:Connect iot:Publishiot:Receive,, y.

Error de memoria insuficiente

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 tengas 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 las opciones de JVM.

No se puede instalar la CLI de Greengrass

Es posible que vea 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 componente CLI de 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 componente CLI de Greengrass (aws.greengrass.Cli) en el dispositivo para instalar la CLI de Greengrass. Para obtener más información, consulte Instalación de la CLI de Greengrass.

User root is not allowed to execute

Es posible que aparezca este error cuando el usuario que ejecuta el software AWS IoT Greengrass principal (normalmenteroot) no tiene permiso para ejecutar sudo con ningún usuario o grupo. Para el usuario predeterminado ggc_user 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 /etc/sudoers archivo da permiso al usuario para ejecutarse sudo como otros grupos. El permiso de entrada del usuario /etc/sudoers debería tener el aspecto que se muestra en 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 Configure el usuario que ejecuta los componentes y Configure el usuario del componente predeterminado.

Failed to map segment from shared object: operation not permitted

Es posible que aparezca 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) usa la /tmp carpeta de forma predeterminada.

Realice una de las acciones siguientes:

  • Ejecute el siguiente comando para volver a montar la /tmp carpeta con exec permisos e inténtelo de nuevo.

    sudo mount -o remount,exec /tmp
  • Si ejecuta Greengrass nucleus v2.5.0 o posterior, puede configurar una opción de JVM para cambiar la carpeta que utiliza la biblioteca CRT. AWS 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. Sustituya /path/to/use por la ruta a una carpeta que pueda usar la AWS biblioteca CRT.

    { "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 usar Windows 2016, puede hacer lo siguiente:

  1. Descomprima el archivo de instalación AWS IoT Greengrass de Core descargado

  2. Abre el bin/greengrass.xml.template archivo en el Greengrass directorio.

  3. Añada la <autoRefresh> etiqueta al final del archivo justo antes de la </service> etiqueta.

    </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 principal 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 rootCaPath parámetro 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 aparezca este mensaje de advertencia cuando el dispositivo principal no pueda conectarse para suscribirse AWS IoT Core a las notificaciones de los trabajos de despliegue. 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 sobre los terminales que utilizan los dispositivos principales, consultePermitir 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 cuando instale el software AWS IoT Greengrass principal con aprovisionamiento automático y el instalador utilice un token de AWS sesión que no es válido. Haga lo siguiente:

  • Si utilizas credenciales de seguridad temporales, comprueba que el token de sesión es correcto y que estás copiando y pegando el token de sesión completo.

  • Si utilizas credenciales de seguridad de larga duración, comprueba que el dispositivo no tenga un token de sesión de una época en la que utilizaste anteriormente credenciales temporales. Haga lo siguiente:

    1. Ejecute el siguiente comando para desconfigurar la variable de entorno del token de sesión.

      Linux or Unix
      unset AWS_SESSION_TOKEN
      Windows Command Prompt (CMD)
      set AWS_SESSION_TOKEN=
      PowerShell
      Remove-Item Env:\AWS_SESSION_TOKEN
    2. 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, consultePolítica de IAM mínima para que el instalador aprovisione recursos.

Compruebe los permisos de la identidad de IAM de las credenciales y otorgue a la identidad de IAM los permisos necesarios que falten.

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

Es posible que aparezca este error cuando utilice 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 concede permiso para 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 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 más información, consulte los siguientes temas:

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 requerido AWS 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.

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

Es posible que veas este error en el archivo de registro del administrador de transmisiones (aws.greengrass.StreamManager.log) cuando configuras el administrador de transmisiones 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, consulta la sección 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 principal 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 el HSM mediante la ranura, el PIN de usuario 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 en el HSM.

  • Si su HSM admite identificadores de objeto, compruebe que la clave privada y el certificado utilicen el mismo identificador de objeto en el HSM.

Consulte la documentación de su HSM para obtener información sobre cómo consultar los detalles sobre los tokens de seguridad del HSM. Si necesitas cambiar la ranura, la etiqueta del objeto o el ID del objeto por un token de seguridad, consulta la documentación de tu HSM para obtener información sobre 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 implementar un AWS Secrets Manager secreto. Si la función de IAM 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.

Para autorizar a un dispositivo principal a descargar un secreto
  1. Agrega el secretsmanager:GetSecretValue permiso a la función de intercambio de fichas del dispositivo principal. El siguiente ejemplo de declaración de política otorga 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 Autorizar a los dispositivos principales a interactuar con AWS los servicios.

  2. Vuelva a aplicar la implementación al dispositivo principal. Realice una de las acciones siguientes:

    • 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 Revisar las implementaciones.

    • Reinicie el software AWS IoT Greengrass principal para volver a intentar la implementación. Para más información, consulte Ejecute el software AWS IoT Greengrass principal

    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 función de IAM 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, añada el kms:Decrypt permiso a la función de intercambio de fichas del dispositivo principal. Para más información, consulte los siguientes temas:

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 Greengrass nucleus v2.5.3 o posterior.

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

Es posible que aparezca este error cuando utilice la biblioteca TPM2 al ejecutar 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 AWS IoT Greengrass Core systemd.

Para obtener más información, consulte la sección de requisitos de la documentación del Proveedor PKCS #11 componente.

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 nucleus, es posible que tenga que descargar y reemplazar el archivo Greengrass.jar por la versión 2.12.2 de Greengrass nucleus. Haga lo siguiente:

  1. En su dispositivo principal de Greengrass, ejecute el siguiente comando para detener el software Greengrass Core.

    Linux or Unix
    sudo systemctl stop greengrass
    Windows Command Prompt (CMD)
    sc stop "greengrass"
    PowerShell
    Stop-Service -Name "greengrass"
  2. En su dispositivo principal, descargue el AWS IoT Greengrass software en un archivo denominado. 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. Descomprime el software AWS IoT Greengrass principal en una carpeta de tu dispositivo. GreengrassInstallerSustitúyalo por la carpeta que desee usar.

    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. Ejecute el siguiente comando para anular el archivo JAR de Greengrass de la versión 2.12.3 del núcleo por el archivo JAR de Greengrass de la versión 2.12.2 del núcleo.

    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. Ejecute el siguiente comando para iniciar el software Greengrass Core.

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

AWS IoT Greengrass problemas con la nube

Usa la siguiente información para solucionar problemas con la AWS IoT Greengrass consola y la API. 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 en formato JSON o YAML. Comprueba la sintaxis de la receta, corrige cualquier problema de sintaxis y vuelve a intentarlo. Puedes usar un corrector de sintaxis JSON o YAML en línea para identificar los problemas de sintaxis en tu receta.

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

Es posible que veas 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 URI del artefacto es una URL de objeto S3 válida y comprueba que el artefacto existe en esa URL de objeto S3.

  • Comprueba que tienes Cuenta de AWS permiso para acceder al artefacto en la URL del objeto de S3.

INACTIVE deployment status

Es posible que obtengas un estado de INACTIVE implementación cuando llames a la ListDeploymentsAPI sin 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 necesariosListDeployments. 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 principales de implementación de dispositivos

Solucione problemas de implementación en 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

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 veas en el seguimiento de la pila del mensaje de Failed to download artifact error.

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 la URL del objeto S3 que especificó en la receta del componente. Comprueba que has subido el artefacto al depósito de S3 y que el URI del artefacto coincide con la URL del objeto de S3 del artefacto del depósito.

  • La función de intercambio de fichas del dispositivo principal no permite que el software AWS IoT Greengrass principal descargue el artefacto componente desde la URL del objeto S3 que especifiques en la receta del componente. Comprueba que la función de intercambio de fichas permita s3:GetObject la URL del objeto S3 en la que está disponible el artefacto.

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 también incluye el siguiente mensaje.

reason: Failed to determine S3 bucket location

Comprueba que la función de intercambio de fichas del dispositivo principal permita s3:GetBucketLocation el depósito S3 en el que está disponible el artefacto.

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 pueda descargar un artefacto componente cuando el dispositivo principal realice 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 depósito de S3 en el que 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.

  • Comprueba 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 nueva implementación 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 busca 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 objetivo de despliegue puede ser una cosa, un grupo de cosas o bien LOCAL_DEPLOYMENT representar la implementación local en el dispositivo principal.

Este problema puede producirse en los siguientes casos:

  • 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 com.example.HelloWorld componente, 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. Busca Status Code: 403 en el registro de errores para identificar este problema. Para resolver este problema, añade el greengrass:ResolveComponentCandidates permiso a la AWS IoT política del dispositivo principal. Para obtener más información, consulte AWS IoTPolítica mínima para los dispositivos AWS IoT Greengrass V2 principales.

Para resolver este problema, revise las implementaciones para incluir versiones de componentes compatibles o eliminar las incompatibles. Para obtener más información sobre cómo revisar las implementaciones en la nube, consulte. Revisar las implementaciones Para obtener más información sobre cómo revisar las implementaciones locales, consulte el comando 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

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 acciones siguientes:

  • 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 AWS re:Postmediante la AWS IoT Greengrass etiqueta o póngase en contacto con nosotros 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

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 Core 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 acciones siguientes:

  • Revise la implementación para especificar la versión del núcleo de Greengrass que ejecuta actualmente el dispositivo principal.

  • Revise el despliegue 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 AWS-componentes proporcionados.

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 aparezca este error al mover un dispositivo Greengrass de un grupo de cosas a otro y, después, volver al grupo original con implementaciones que requieren el reinicio de Greengrass.

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 llamadofix_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 despliegue de gran tamaño, es decir, un documento de despliegue de más de 7 KB (en el caso de las implementaciones orientadas a objetos) o 31 KB (en el caso de las implantaciones 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 política del AWS IoT dispositivo principal. Para obtener más información, consulte Actualice la política de un dispositivo principal AWS IoT.

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. Al crear una implementación, el dispositivo principal usa este permiso para identificar sus grupos de cosas y eliminar los componentes de cualquier grupo de cosas de los que haya eliminado el dispositivo principal. Si el dispositivo principal ejecuta Greengrass nucleus v2.5.0, se produce un error en la implementación. Si el dispositivo principal ejecuta Greengrass nucleus v2.5.1 o posterior, la implementación continúa pero no elimina los componentes. Para obtener más información sobre el comportamiento de eliminación de grupos de cosas, consulte. Implemente AWS IoT Greengrass componentes 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 Actualice la política de un dispositivo principal AWS IoT.

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

Es posible que veas este mensaje de información impreso varias veces sin que se produzca ningún error, ya que el dispositivo principal registra el error a nivel de DEBUG registro. Este problema puede producirse cuando el dispositivo principal recibe un documento de implementación de gran tamaño. Cuando se produce este problema, 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 una API de plano de datos no tiene iot:Connect permiso. Si no tienes la política correcta, recibirás unGreengrassV2DataException: 403. Para crear una política de permisos, sigue estas instrucciones:Creación de una política de AWS IoT.

Problemas con los componentes principales del dispositivo

Solucione los problemas de los componentes de Greengrass en los dispositivos principales.

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 el BROKEN resultado de este error. Este error puede producirse si el usuario del sistema que ejecuta el componente, por ejemploggc_user, no encuentra el ejecutable del comando en las carpetas de la PATH.

En los dispositivos Windows, compruebe que la carpeta que contiene el ejecutable pertenece al PATH usuario del sistema que ejecuta el componente. Si falta en elPATH, realice una de las siguientes acciones:

  • Añada la carpeta del ejecutable a la variable de PATH sistema, 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ón PATH después de reiniciar el software, reinicie el dispositivo e inténtelo de nuevo. Para obtener más información, consulte Ejecute el software AWS IoT Greengrass principal.

  • Añada la carpeta del ejecutable a la PATH variable de usuario 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 el script stdout y stderr los mensajes 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 y. stdout stderr

    Linux or Unix
    python3 -u hello_world.py
    Windows
    py -3 -u hello_world.py
  • Utilice Setenv en la receta de su componente para establecer la variable de entorno PYTHONUNBUFFERED en una cadena que no esté vacía. Esta variable de entorno stdout stderr desactiva el almacenamiento en búfer en y.

  • Vacíe el búfer de las transmisiones o. stdout stderr Realice una de las acciones siguientes:

    • Vacíe un mensaje al imprimirlo.

      import sys print('Hello, error!', file=sys.stderr, flush=True)
    • Vacíe un mensaje después de imprimirlo. Puedes enviar varios mensajes antes de vaciar la transmisión.

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

Para obtener más información sobre cómo comprobar que el script de Python genera mensajes de registro, consulteSupervisar AWS IoT Greengrass registros.

La configuración de los componentes no se actualiza al cambiar la configuración predeterminada

Al cambiar la receta DefaultConfiguration 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 actualización de restablecimiento.

Console
Restablezca las rutas
[""]
AWS CLI

El siguiente comando crea una implementación en un dispositivo principal.

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

El reset-configuration-deployment.json archivo contiene el siguiente documento JSON.

{ "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

El siguiente comando CLI de Greengrass crea una implementación local en un dispositivo principal.

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

El reset-configuration-deployment.json archivo contiene el siguiente documento JSON.

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

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 operación de IPC en un recurso. Para conceder permiso a un componente para llamar a una operación de IPC, defina una política de autorización de IPC en la configuración del componente. Para obtener más información, consulte Autorice a los componentes a realizar operaciones de IPC.

sugerencia

Si cambia la receta DefaultConfiguration 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 actualización de restablecimiento. 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 autorización de IPC, incluidos todos los componentes del dispositivo principal, utilizan el mismo identificador de política.

Compruebe las políticas de autorización de IPC de sus componentes, corrija los duplicados e inténtelo de nuevo. Para crear identificadores de política únicos, le recomendamos que combine el nombre del componente, el nombre del servicio de IPC y un contador. Para obtener más información, consulte Autorice a los componentes a realizar operaciones de IPC.

sugerencia

Si cambia la receta DefaultConfiguration 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 actualización de restablecimiento. 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 puede 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 función de IAM 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:

  1. Identifique la función de intercambio de fichas 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 MyGreengrassCoreTokenExchangeRoleAliassustitú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 de recurso de Amazon (ARN) de la función de IAM de intercambio de tokens.

    { "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. Compruebe que el rol existe. Ejecute el siguiente comando y sustituya MyGreengrassV2 TokenExchangeRole por el nombre de la función de intercambio de fichas.

    aws iam get-role --role-name MyGreengrassV2TokenExchangeRole

    Si el comando devuelve un NoSuchEntity error, el rol no existe y debes crearlo. Para obtener más información sobre cómo crear y configurar este rol, consulteAutorizar a los dispositivos principales a interactuar con AWS los servicios.

  3. 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 unaAssumeRolePolicyDocument, que define las relaciones de confianza del rol. El rol debe definir una relación de confianza que credentials.iot.amazonaws.com permita asumirla. Este documento debe tener un aspecto 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 credentials.iot.amazonaws.com permiten asumirlo, 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 AWS IoTPolítica mínima para los dispositivos AWS IoT Greengrass V2 principales yActualice la política de un dispositivo principal AWS IoT.

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:

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 fichas,aws.greengrass.TokenExchangeService. Si no es así, añada la dependencia y vuelva a implementar el componente.

  • Compruebe si el componente utiliza AWS credenciales durante su install ciclo de vida. AWS IoT Greengrass no garantiza la disponibilidad del servicio de intercambio de fichas durante el install ciclo de vida. Actualice el componente para trasladar el código que usa AWS las credenciales al run ciclo de vida startup o, 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:

  1. 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.

  2. 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 Actualizar 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 aparezca este error en los registros del núcleo de Greengrass cuando el componente gestor 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 asistente de credenciales de wincred Docker (). docker-credential-wincred Como resultado, Amazon ECR no puede almacenar las credenciales de inicio de sesión.

Realice una de las siguientes acciones:

  • Si no usa el asistente de credenciales de wincred Docker, elimine el docker-credential-wincred programa del dispositivo principal.

  • Si utilizas el asistente de credenciales de wincred Docker, haz lo siguiente:

    1. Cambie el nombre del docker-credential-wincred programa en el dispositivo principal. wincredSustitúyalo por un nombre nuevo para el asistente de credenciales de Docker de Windows. Por ejemplo, puede cambiarle el nombre a. docker-credential-wincredreal

    2. Actualice la credsStore opción en el archivo de configuración de Docker (.docker/config.json) para usar el nuevo nombre del asistente de credenciales de Docker de Windows. Por ejemplo, si ha cambiado el nombre del programa adocker-credential-wincredreal, actualice la opción a. credsStore wincredreal

      { "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 básico de Windows cuando el usuario del sistema que ejecuta los procesos del componente, por ejemploggc_user, tiene una contraseña caducada. Como resultado, el software AWS IoT Greengrass principal no puede ejecutar los procesos de los componentes como ese usuario del sistema.

Para actualizar la contraseña de un usuario del sistema Greengrass
  1. Ejecute el siguiente comando como administrador para establecer la contraseña del usuario. Sustituya ggc_user por el usuario del sistema y sustituya la contraseña por la contraseña que desee configurar.

    net user ggc_user password
  2. Utilice la PsExec utilidad para almacenar la nueva contraseña del usuario en la instancia de Credential Manager de la cuenta. LocalSystem Sustituya la contraseña por la contraseña del usuario que haya establecido.

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

Según la 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 caduque 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, ejecuta 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 wmiccomando está obsoleto, 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 Stream Manager v2.0.7 a una versión entre la v2.0.8 y la v2.0.11, es posible que aparezca el siguiente error en los registros del componente de Stream Manager 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 has implementado la versión 2.0.7 de Stream Manager y quieres actualizarla a una versión posterior, debes actualizar directamente a la versión 2.0.12 de Stream Manager. Para obtener más información sobre el componente de administrador de transmisiones, consulte. Administrador de transmisiones

Problemas con los componentes de la función Lambda del dispositivo principal

Solucione problemas con los componentes de la función Lambda en los dispositivos principales.

The following cgroup subsystems are not mounted: devices, memory

Es posible que aparezca este error al ejecutar una función Lambda en un contenedor en los siguientes casos:

  • El dispositivo principal no tiene cgroup v1 activado para la memoria o los cgroups del dispositivo.

  • El dispositivo principal tiene cgroups v2 activado. Las funciones Lambda de Greengrass requieren cgroups v1, y los cgroups v1 y v2 se excluyen mutuamente.

Para habilitar cgroups v1, arranque el dispositivo con los siguientes parámetros del núcleo de Linux.

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

En una Raspberry Pi, edite el /boot/cmdline.txt archivo 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 de la versión 1, que utiliza el SDK AWS IoT Greengrass principal, en un dispositivo principal de la versión 2 sin especificar una suscripción en el componente del router de suscripciones anterior. Para solucionar este problema, implementa y configura el router de suscripciones antiguo para especificar las suscripciones necesarias. Para obtener más información, consulte Importación de funciones Lambda V1.

Versión del componente discontinuada

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 componente envía esta notificación a su médico en un plazo de 60 minutos desde su descatalogación.

Para ver qué implementaciones necesita revisar, haga lo siguiente mediante: AWS Command Line Interface

  1. Ejecute el siguiente comando para obtener una lista de sus dispositivos principales.

    aws greengrassv2 list-core-devices
  2. Ejecute el siguiente comando para recuperar el estado de los componentes de cada dispositivo principal del paso 1. coreDeviceNameSustitúyalo por el nombre de cada dispositivo principal que desee realizar la consulta.

    aws greengrassv2 list-installed-components --core-device-thing-name coreDeviceName
  3. Reúna los dispositivos principales con la versión de componentes discontinuada instalada en los pasos anteriores.

  4. Ejecute el siguiente comando para recuperar el estado de todos los trabajos de implementación de cada dispositivo principal del paso 3. coreDeviceNameSustitúyalo por el nombre del dispositivo principal que se va a consultar.

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

    La respuesta contiene la lista de trabajos de implementación del dispositivo principal. Puede revisar la implementación para elegir otra versión del componente. Para obtener más información sobre cómo revisar un despliegue, consulte Revisar despliegues.

Problemas con la interfaz de línea de comandos de Greengrass

Solucione problemas con la CLI de Greengrass.

java.lang.RuntimeException: Unable to create ipc client

Es posible que aparezca este error al ejecutar un comando de la CLI 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 /greengrass/v2 sustitúyala por la ruta a la instalación del software AWS IoT Greengrass principal:

  • Establezca la variable de entorno GGC_ROOT_PATH en /greengrass/v2.

  • Añada el --ggcRootPath /greengrass/v2 argumento al comando, tal y como se muestra en el siguiente ejemplo.

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

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 .