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

ThrottlingExceptionde ListDeploymentsAPI: 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 DescribeJobAPI. 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. El instalador puede configurar correctamente el software AWS IoT Greengrass principal aunque no pueda configurar el servicio del sistema.

Realice una de las siguientes acciones:

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 permisos iot:Connect iot:Publishiot: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 y iot: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) usa la /tmp carpeta de forma predeterminada.

Realice una de las siguientes acciones:

  • Ejecute el siguiente comando para volver a montar la carpeta /tmp con permisos exec 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/useSustitú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:

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

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

  3. 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:

    1. Ejecute el siguiente comando para anular la configuración de 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, 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:

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.

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

  2. 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:

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:

  1. Ejecute el siguiente comando en su dispositivo principal de Greengrass para detener el software de 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 a un archivo denominadogreengrass-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 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

    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 de 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

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

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.

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. Busque Status Code: 403 en el registro de errores para identificar este problema. Para resolver este problema, agregue el permiso greengrass: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.

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ón PATH 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 y stderr.

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

  • Vacíe el búfer de los flujos stdout o stderr. 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.

Console
Restablecer las rutas
[""]
AWS CLI

El siguiente comando crea una implementación a 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 CLI comando 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 JSON documento.

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

  1. 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" } }
  2. 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.

  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 un AssumeRolePolicyDocument, que define las relaciones de confianza del rol. El rol debe definir una relación de confianza que permite a credentials.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:

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 el install ciclo de vida. Actualice el componente para trasladar el código que usa las credenciales de AWS en el ciclo de vida startup o run, 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 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 Docker (docker-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 programa docker-credential-wincred del dispositivo principal.

  • Si utiliza el ayudante de credenciales de Docker wincred, haga lo siguiente:

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

    2. 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 a docker-credential-wincredreal, actualice la opción credsStore a 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 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
  1. Ejecute el siguiente comando como administrador para establecer la contraseña del usuario. ggc_userSustitúyalo por el usuario del sistema y password sustitúyalo 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 LocalSystem cuenta. passwordSustitú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 wmiccomando 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.

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:

  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 en cada dispositivo principal del Paso 1. Reemplace coreDeviceName con el nombre de cada dispositivo principal para consultar.

    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 para un dispositivo principal del Paso 3. Reemplace coreDeviceName 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 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 /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.

  • Agregue los argumentos --ggcRootPath /greengrass/v2 a su comando 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 .