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

AWS IoT Greengrass Version 1 entró en la fase de vida útil prolongada el 30 de junio de 2023. Para obtener más información, consulte la política de mantenimiento de AWS IoT Greengrass V1 Después de esta fecha, AWS IoT Greengrass V1 no se publicarán actualizaciones que proporcionen funciones, mejoras, correcciones de errores o parches de seguridad. Los dispositivos que se ejecuten AWS IoT Greengrass V1 no se verán afectados y seguirán funcionando y conectándose a la nube. Le recomendamos encarecidamente que migre a AWS IoT Greengrass Version 2, ya que añade importantes funciones nuevas y es compatible con plataformas adicionales.

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

En esta sección, se proporciona información de solución de problemas y posibles soluciones para ayudar a resolver problemas que pueden presentarse en AWS IoT Greengrass.

Para obtener información acerca de las cuotas (límites) de AWS IoT Greengrass, consulte Cuotas de servicio en la Referencia general de Amazon Web Services.

Problemas de AWS IoT Greengrass Core

Si el software de AWS IoT Greengrass Core no se inicia, pruebe los siguientes pasos generales de solución de problemas:

Busque en los síntomas y errores siguientes para encontrar información que le ayudará a solucionar problemas con un core AWS IoT Greengrass.

Problemas

 

Error: al archivo de configuración le falta el CaPath, CertPath o KeyPath. The Greengrass daemon process with [pid = <pid>] died.

Solución: Es posible que vea este error en crash.log cuando el software de AWS IoT Greengrass Core no se inicia. Esto puede ocurrir si está ejecutando la versión 1.6 o una anterior. Realice una de las acciones siguientes:

  • Actualice a versión 1.7 o posterior. Le recomendamos que siempre ejecute la versión más reciente del software de AWS IoT Greengrass Core. Para obtener información sobre descargas, consulte Software AWS IoT Greengrass Core.

  • Utilice el formato config.json correcto para la versión del software de AWS IoT Greengrass Core. Para obtener más información, consulte Archivo de configuración de AWS IoT Greengrass Core.

    nota

    Para encontrar la versión del software de AWS IoT Greengrass Core instalada en el dispositivo del núcleo, ejecute los siguientes comandos en el terminal del dispositivo.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd --version

 

Error: Failed to parse /<greengrass-root>/config/config.json.

Solución: Es posible que vea este error cuando el software de AWS IoT Greengrass Core no se inicia. Asegúrese de que el archivo de configuración de Greengrass está utilizando un formato de JSON válido.

Abra config.json (que se encuentra en /greengrass-root/config) y compruebe el formato JSON. Por ejemplo, compruebe que las comas se hayan utilizado correctamente.

 

Error: se ha producido un error al generar la configuración de TLS: ErrUnknown URIScheme

Solución: Es posible que vea este error cuando el software de AWS IoT Greengrass Core no se inicia. Asegúrese de que las propiedades de la sección crypto del archivo de configuración de Greengrass sean válidas. El mensaje de error debe aportar más información.

Abra config.json (que se encuentra en /greengrass-root/config) y compruebe la sección crypto. Por ejemplo, las rutas de certificados y claves deben utilizar el formato de URI correcto e indicar la ubicación correcta.

 

Error: Runtime failed to start: unable to start workers: container test timed out.

Solución: Es posible que vea este error cuando el software de AWS IoT Greengrass Core no se inicia. Establezca la propiedad postStartHealthCheckTimeout en el archivo de configuración de Greengrass. Esta propiedad opcional configura la cantidad de tiempo (en milisegundos) que el daemon de Greengrass esperará a que finalice la comprobación de estado posterior al inicio. El valor predeterminado es de 30 segundos.

Abra config.json (que se encuentra en /greengrass-root/config). En el objeto runtime, añada la propiedad postStartHealthCheckTimeout y establezca su valor en un número superior a 30000. Añada una coma donde sea necesario para crear un documento JSON válido. Por ejemplo:

... "runtime" : { "cgroup" : { "useSystemd" : "yes" }, "postStartHealthCheckTimeout" : 40000 }, ...

 

<address>Error: no se pudo invocar PutLogEvents en un Cloudwatch local, LogGroup:/GreengrassSystem/connection_manager, error:: error al enviar la solicitud debido a: Post http RequestError://<path>/cloudwatch/logs/: dial tcp: getsockopt: conexión rechazada, respuesta: {}.

Solución: Es posible que vea este error cuando el software de AWS IoT Greengrass Core no se inicia. Esto puede ocurrir si está ejecutando AWS IoT Greengrass en un Raspberry Pi y no se ha completado la configuración de memoria necesaria. Para obtener más información, consulte este paso.

 

Error: Unable to create server due to: failed to load group: chmod /<greengrass-root>/ggc/deployment/lambda/arn:aws:lambda:<region>:<account-id>:function:<function-name>:<version>/<file-name>: no such file or directory.

Solución: Es posible que vea este error cuando el software de AWS IoT Greengrass Core no se inicia. Si ha implementado un Lambda ejecutable en el núcleo, compruebe la propiedad Handler de la función en el archivo group.json (localizado en /greengrass-root/ggc/deployment/group). Si el controlador no tiene el nombre exacto del ejecutable compilado, reemplace el contenido del archivo group.json por un objeto JSON vacío ({}) y ejecute los siguientes comandos para iniciar AWS IoT Greengrass:

cd /greengrass/ggc/core/ sudo ./greengrassd start

A continuación, utilice la API de AWS Lambda para actualizar el parámetro handler de la configuración de la función, publique la nueva característica y actualice el alias. Para obtener más información, consulte este artículo sobre el control de versiones y los alias de las funciones de AWS Lambda.

Suponiendo que haya añadido la función a su grupo de Greengrass por alias (recomendado), ahora puede volver a implementar su grupo. (Si no, debe apuntar a la nueva versión o alias de la función en su definición y suscripciones del grupo antes de implementar el grupo).

 

El software de AWS IoT Greengrass Core no se inicia después de cambiar de ejecutarlo sin creación de contenedores a ejecutarlo en un contenedor de Greengrass.

Solución: Compruebe que no faltan dependencias de contenedor.

 

Error: Spool size should be at least 262144 bytes.

Solución: Es posible que vea este error cuando el software de AWS IoT Greengrass Core no se inicia. Abra el archivo group.json (que se encuentra en /greengrass-root/ggc/deployment/group), sustituya el contenido del archivo por un objeto JSON vacío ({}) y ejecute los comandos siguientes para iniciar AWS IoT Greengrass:

cd /greengrass/ggc/core/ sudo ./greengrassd start

A continuación, siga los pasos que se indican en el procedimiento Para almacenar los mensajes en la caché local. Para la función GGCloudSpooler, asegúrese de especificar un valor GG_CONFIG_MAX_SIZE_BYTES mayor o igual que 262144.

 

Error: [ERROR]-Cloud messaging error: Error occurred while trying to publish a message. {"errorString": "operation timed out"}

Solución: es posible que vea este error en GGCloudSpooler.log cuando el núcleo de Greengrass no puede enviar mensajes MQTT a AWS IoT Core. Esto puede ocurrir si el entorno de núcleo tiene un ancho de banda limitado y alta latencia. Si está ejecutando AWS IoT Greengrass v1.10.2 o posterior, pruebe a incrementar el valor mqttOperationTimeout en el archivo config.json. Si la propiedad no está presente, agréguela al objeto coreThing. Por ejemplo:

{ "coreThing": { "mqttOperationTimeout": 10, "caPath": "root-ca.pem", "certPath": "hash.cert.pem", "keyPath": "hash.private.key", ... }, ... }

El valor predeterminado es 5 y el valor mínimo es 5.

 

Error: container_linux.go:344: starting container process caused "process_linux.go:424: container init caused \"rootfs_linux.go:64: mounting \\\"/greengrass/ggc/socket/greengrass_ipc.sock\\\" to rootfs \\\"/greengrass/ggc/packages/<version>/rootfs/merged\\\" at \\\"/greengrass_ipc.sock\\\" caused \\\"stat /greengrass/ggc/socket/greengrass_ipc.sock: permission denied\\\"\"".

Solución: Es posible que vea este error en runtime.log cuando el software de AWS IoT Greengrass Core no se inicia. Esto se produce si umask es superior a 0022. Para resolver este problema, debe establecer umask en 0022 o menor. Un valor de 0022 concede a todos los usuarios permiso de lectura a los nuevos archivos de forma predeterminada.

 

Error: Greengrass daemon running with PID: <id-de-proceso>. Algunos componentes del sistema no se han iniciado. Compruebe si hay errores en ”runtime.log”.

Solución: Es posible que vea este error cuando el software de AWS IoT Greengrass Core no se inicia. Busque información específica de los errores en runtime.log y crash.log. Para obtener más información, consulte Solución de problemas con los registros.

 

La sombra del dispositivo no se sincroniza con la nube.

Solución: Asegúrese de que AWS IoT Greengrass tiene permisos para las acciones iot:UpdateThingShadow y iot:GetThingShadow en el rol de servicio de Greengrass. Si el rol de servicio utiliza la política administrada AWSGreengrassResourceAccessRolePolicy, estos permisos se incluyen de forma predeterminada.

Consulte Solución de problemas con los tiempos de espera de la sincronización de sombras.

 

ERROR: unable to accept TCP connection. accept tcp [::]:8000: accept4: too many open files.

Solución: Es posible que vea este error en la salida del script greengrassd. Esto puede ocurrir si el límite del descriptor de archivos para el software AWS IoT Greengrass Core ha alcanzado el umbral y debe incrementarse.

Utilice el comando siguiente y reinicie el software de AWS IoT Greengrass Core.

ulimit -n 2048
nota

En este ejemplo, el límite se aumenta a 2048. Elija un valor adecuado para su caso de uso.

 

Error: Runtime execution error: unable to start lambda container. container_linux.go:259: starting container process caused "process_linux.go:345: container init caused \"rootfs_linux.go:50: preparing rootfs caused \\\"permission denied\\\"\"".

Solución: Instale AWS IoT Greengrass directamente en el directorio raíz o asegúrese de que el directorio donde está instalado el software de AWS IoT Greengrass Core y sus directorios principales tienen permisos execute para todo el mundo.

 

Advertencia: [WARN] - [5] GK Remote: error al recuperar los datos de la clave pública: la clave privada no está configurada. ErrPrincipalNotConfigured MqttCertificate

Solución: AWS IoT Greengrass utiliza un controlador común para validar las propiedades de todas las entidades principales de seguridad. Cabe esperar que se produzca esta advertencia en runtime.log, a no ser que se haya especificado una clave privada personalizada para el servidor MQTT local. Para obtener más información, consulte AWS IoT Greengrass principios básicos de seguridad.

 

Error: Permission denied when attempting to use role arn:aws:iam::<account-id>:role/<role-name> to access s3 url https://<region>-greengrass-updates.s3.<region>.amazonaws.com/core/<architecture>/greengrass-core-<distribution-version>.tar.gz.

Solución: es posible que aparezca este error cuando se produce un error en una actualización over-the-air (OTA). En la política de rol de firma, añada la Región de AWS de destino como Resource. El rol de firmante se utiliza para prefirmar la URL de S3 para la actualización de software de AWS IoT Greengrass. Para obtener más información, consulte Rol de firmante de URL de S3.

 

El núcleo AWS IoT Greengrass está configurado para utilizar un proxy de red y su función de Lambda no puede realizar conexiones salientes.

Solución: en función del tiempo de ejecución y los ejecutables usados por la función de Lambda para crear las conexiones, es posible que reciba los errores de tiempo de espera de las conexiones. Asegúrese de que sus funciones de Lambda utilicen la configuración de proxy adecuada para conectarse a través del proxy de red. AWS IoT Greengrass pasa la configuración del proxy a las funciones de Lambda definidas por el usuario a través de las variables de entorno http_proxy, https_proxy y no_proxy. Se puede obtener acceso a ellas, tal y como se muestra en el siguiente fragmento de Python.

import os print(os.environ['http_proxy'])

Use el mismo formato de mayúsculas/minúsculas que la variable definida en su entorno, por ejemplo, todo en minúsculas http_proxy o todo en mayúsculas HTTP_PROXY. Para estas variables, AWS IoT Greengrass admite ambos.

nota

La mayoría de las bibliotecas comunes utilizadas para establecer una conexión (como boto3 o cURL y los paquetes requests de python) usan estas variables de entorno de forma predeterminada.

 

El núcleo se encuentra en un bucle infinito de conexión-desconexión. El archivo runtime.log contiene una serie continua de entradas de conexión y desconexión.

Solución: Esto puede ocurrir si otro dispositivo está codificado para utilizar el nombre del objeto del núcleo como ID de cliente para conexiones MQTT a AWS IoT. Las conexiones simultáneas en la misma Región de AWS y Cuenta de AWS deben utilizar ID de cliente únicos. De forma predeterminada, el núcleo utiliza el nombre del objeto del núcleo como ID de cliente para estas conexiones.

Para solucionar este problema, puede cambiar el ID de cliente que utiliza el otro dispositivo para la conexión (recomendado) o anular el valor predeterminado del núcleo.

Para anular el ID de cliente predeterminado del dispositivo del núcleo
  1. Ejecute el siguiente comando para detener el daemon de Greengrass.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. Abra greengrass-root/config/config.json para editarlo como usuario.

  3. En el objeto coreThing, añada la propiedad coreClientId y establezca el valor en su ID de cliente personalizado. El valor debe tener entre 1 y 128 caracteres. Debe ser único en la Región de AWS actual para la Cuenta de AWS.

    "coreClientId": "MyCustomClientId"
  4. Inicie el daemon.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

 

Error: unable to start lambda container. container_linux.go:259: starting container process caused "process_linux.go:345: container init caused \"rootfs_linux.go:62: mounting \\\"proc\\\" to rootfs \\\"

Solución: en algunas plataformas, es posible que vea este error en runtime.log cuando AWS IoT Greengrass intenta montar el sistema de archivos /proc para crear un contenedor de Lambda. O bien, es posible que vea errores similares, como operation not permitted o EPERM. Estos errores pueden producirse incluso si se superan las pruebas ejecutadas en la plataforma por el script del comprobador de dependencias.

Pruebe una de las siguientes soluciones posibles:

  • Habilite la opción CONFIG_DEVPTS_MULTIPLE_INSTANCES en el kernel de Linux.

  • Establezca las opciones de montaje /proc en el host rw,relatim únicamente.

  • Actualice el kernel de Linux a 4.9 o posterior.

nota

Este problema no está relacionado con el montaje de /proc para el acceso a recursos locales.

 

[ERROR] en tiempo de ejecución: no se puede iniciar el contenedor lambda. {"errorString": "error al inicializar los montajes de contenedor: error al enmascarar la raíz de greengrass en directorio superior superpuesto: error al crear el dispositivo de enmascaramiento en el directorio <ggc-path>: el archivo ya existe"}

Solución: Es posible que vea este error en runtime.log cuando la implementación no se realiza correctamente. Este error se produce si una función de Lambda del grupo AWS IoT Greengrass no puede acceder al directorio /usr del sistema de archivos del núcleo.

Para resolverlo, agregue un recurso de volumen local al grupo e implemente el grupo. El recurso debe:

  • Especificar /usr como ruta de origen y ruta de destino.

  • Agregar automáticamente los permisos del SO para el grupo de Linux propietario del recurso.

  • Estar afiliado a la función de Lambda y permitir el acceso de solo lectura.

 

[ERROR]-Deployment failed. {"deploymentId": "<deployment-id>", "errorString": "container test process with pid <pid> failed: container process state: exit status 1"}

Solución: Es posible que vea este error en runtime.log cuando la implementación no se realiza correctamente. Este error se produce si una función de Lambda del grupo AWS IoT Greengrass no puede acceder al directorio /usr del sistema de archivos del núcleo.

Puede confirmar que este es el caso comprobando GGCanary.log para ver si hay errores adicionales. Si la función de Lambda no puede acceder al directorio /usr, GGCanary.log contendrá el siguiente error:

[ERROR]-standard_init_linux.go:207: exec user process caused "no such file or directory"

Para resolverlo, agregue un recurso de volumen local al grupo e implemente el grupo. El recurso debe:

  • Especificar /usr como ruta de origen y ruta de destino.

  • Agregar automáticamente los permisos del SO para el grupo de Linux propietario del recurso.

  • Estar afiliado a la función de Lambda y permitir el acceso de solo lectura.

 

Solución: Es posible que vea este error en runtime.log cuando el software de AWS IoT Greengrass Core no se inicia. Este problema podría ser más común en los sistemas operativos Debian.

Para resolver este problema, siga estos pasos:

  1. Actualice el software de AWS IoT Greengrass Core a la versión 1.9.3 o posterior. Esto debería resolver este problema automáticamente.

  2. Si sigue apareciendo este error después de actualizar el software AWS IoT Greengrass de Core, defina la propiedad system.useOverlayWithTmpfs como true en el archivo config.json.

    ejemplo Ejemplo
    { "system": { "useOverlayWithTmpfs": true }, "coreThing": { "caPath": "root-ca.pem", "certPath": "cloud.pem.crt", "keyPath": "cloud.pem.key", ... }, ... }
nota

La versión del software de AWS IoT Greengrass Core se muestra en el mensaje de error. Para encontrar la versión del kernel de Linux, ejecute uname -r.

 

Error: [DEBUG]: no se pudieron obtener rutas. Se va a descartar el mensaje.

Solución: compruebe las suscripciones del grupo y asegúrese de que la suscripción que aparece en el mensaje [DEBUG] existe.

 

Error: [Errno 24] Too many open <lambda-function>,[Errno 24] Too many open files

Solución: es posible que vea este error en su archivo de registro de función de Lambda si la función crea instancias StreamManagerClient en el controlador de funciones. Le recomendamos que cree el cliente fuera del controlador. Para obtener más información, consulte Utilizar StreamManagerClient para trabajar con secuencias.

 

Error: ds server failed to start listening to socket: listen unix <ggc-path>/ggc/socket/greengrass_ipc.sock: bind: invalid argument

Solución: Es posible que vea este error cuando el software de AWS IoT Greengrass Core no se inicia. Este error se produce cuando el software AWS IoT Greengrass de Core se instala en una carpeta con una ruta de archivo larga. Vuelva a instalar el software AWS IoT Greengrass de Core en una carpeta cuya ruta de archivo tenga menos de 79 bytes, si no utiliza un directorio de escritura, o de 83 bytes, si sí utiliza un directorio de escritura.

[INFORMACIÓN] (Copiadora) aws.greengrass. StreamManager: stdout. Causado por: com.fasterxml.jackson.databind. JsonMappingException: El instante supera el instante mínimo o máximo

Al actualizar el software AWS IoT Greengrass core a la versión 1.11.3, es posible que aparezca el siguiente error en los registros del administrador de secuencias si el administrador de transmisiones 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 utilizas una versión del software AWS IoT Greengrass core anterior a la 1.11.3 y quieres actualizarla a una versión posterior, utiliza una actualización de OTA para actualizar a la versión 1.11.4.

GPG error: https://dnw9lb6lzp2d8.cloudfront.net stable InRelease: The following signatures were invalid: EXPKEYSIG 68D644ABD2327D47 AWS Greengrass Master Key

Si utiliza un dispositivo apt update en el que ha instalado el software AWS IoT Greengrass Core desde un repositorio de APT, es posible que aparezca el siguiente error.

Err:4 https://dnw9lb6lzp2d8.cloudfront.net stable InRelease The following signatures were invalid: EXPKEYSIG 68D644ABD2327D47 AWS Greengrass Master Key Reading package lists... Done W: GPG error: https://dnw9lb6lzp2d8.cloudfront.net stable InRelease: The following signatures were invalid: EXPKEYSIG 68D644ABD2327D47 AWS Greengrass Master Key

Este error se produce porque ya AWS IoT Greengrass no ofrece la opción de instalar o actualizar el software AWS IoT Greengrass Core desde el repositorio de APT. Para que se ejecute correctamenteapt update, elimine el repositorio AWS IoT Greengrass de la lista de fuentes del dispositivo.

sudo rm /etc/apt/sources.list.d/greengrass.list sudo apt update

Problemas de implementación

Utilice la información siguiente como ayuda para solucionar problemas de implementación.

Problemas

 

La implementación actual no funciona y desea volver a una implementación funcional anterior.

Solución: utilice la consola AWS IoT o la API AWS IoT Greengrass para volver a realizar una implementación de trabajo anterior. Se implementa la versión del grupo correspondiente en su dispositivo principal.

Para volver realizar una implementación (consola), efectúe el siguiente procedimiento:
  1. En la página de configuración de grupo, elija Implementar. En esta página se muestra el historial de implementaciones del grupo, incluida la fecha y la hora, la versión del grupo y el estado de cada intento de implementación.

  2. Busque la fila que contiene la implementación que desee volver a implementar. Seleccione la implementación que desea volver a implementar y elija Reimplementar.

    Página Deployments (Implementaciones) que muestra la acción Re-deploy (Volver a implementar) para una implementación.
Para volver a implementar una implementación (CLI), realice el siguiente procedimiento:
  1. ListDeploymentsÚselo para buscar el ID de la implementación que desea volver a implementar. Por ejemplo:

    aws greengrass list-deployments --group-id 74d0b623-c2f2-4cad-9acc-ef92f61fcaf7

    El comando devuelve la lista de implementaciones para el grupo.

    { "Deployments": [ { "DeploymentId": "8d179428-f617-4a77-8a0c-3d61fb8446a6", "DeploymentType": "NewDeployment", "GroupArn": "arn:aws:greengrass:us-west-2:123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/versions/8dd1d899-4ac9-4f5d-afe4-22de086efc62", "CreatedAt": "2019-07-01T20:56:49.641Z" }, { "DeploymentId": "f8e4c455-8ac4-453a-8252-512dc3e9c596", "DeploymentType": "NewDeployment", "GroupArn": "arn:aws:greengrass:us-west-2::123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/versions/4ad66e5d-3808-446b-940a-b1a788898382", "CreatedAt": "2019-07-01T20:41:47.048Z" }, { "DeploymentId": "e4aca044-bbd8-41b4-b697-930ca7c40f3e", "DeploymentType": "NewDeployment", "GroupArn": "arn:aws:greengrass:us-west-2::123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/versions/1f3870b6-850e-4c97-8018-c872e17b235b", "CreatedAt": "2019-06-18T15:16:02.965Z" } ] }
    nota

    Estos comandos AWS CLI utilizan valores de ejemplo para el grupo y el ID de implementación. Cuando ejecute los comandos, asegúrese de sustituir los valores de ejemplo.

  2. Se utiliza CreateDeploymentpara volver a implementar la implementación de destino. Establezca el tipo de implementación en Redeployment. Por ejemplo:

    aws greengrass create-deployment --deployment-type Redeployment \ --group-id 74d0b623-c2f2-4cad-9acc-ef92f61fcaf7 \ --deployment-id f8e4c455-8ac4-453a-8252-512dc3e9c596

    El comando devuelve el ARN y el ID de la nueva implementación.

    { "DeploymentId": "f9ed02b7-c28e-4df6-83b1-e9553ddd0fc2", "DeploymentArn": "arn:aws:greengrass:us-west-2::123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/deployments/f9ed02b7-c28e-4df6-83b1-e9553ddd0fc2" }
  3. Se utiliza GetDeploymentStatuspara obtener el estado de la implementación.

 

Aparece el error 403 Forbidden en la implementación en los registros.

Solución: Asegúrese de que la política del núcleo AWS IoT Greengrass en la nube incluya "greengrass:*" como acción permitida.

 

Se produce un ConcurrentDeployment error al ejecutar el comando create-deployment por primera vez.

Solución: Es posible que haya una implementación en curso. Puede ejecutar get-deployment-status para ver si se ha creado una implementación. En caso contrario, intente volver a crear la implementación.

 

Error: Greengrass is not authorized to assume the Service Role associated with this account, o el error: Failed: TES service role is not associated with this account.

Solución: Es posible que vea este error cuando la implementación no se realiza correctamente. Compruebe que un rol de servicio de Greengrass esté asociado a su Cuenta de AWS en la Región de AWS actual. Para obtener más información, consulte Administración del rol de servicio de Greengrass (CLI) o Administración del rol de servicio de Greengrass (consola).

 

Error: unable to execute download step in deployment. error while downloading: error while downloading the Group definition file: ... x509: certificate has expired or is not yet valid

Solución: Es posible que vea este error en runtime.log cuando la implementación no se realiza correctamente. Si recibe un error Deployment failed con el mensaje x509: certificate has expired or is not yet valid, compruebe el reloj del dispositivo. Los certificados TLS y X.509 proporcionan una base segura para crear sistemas IoT, pero requieren que los tiempos sean precisos en servidores y clientes. Los dispositivos IoT deben tener la hora correcta (con un margen de 15 minutos) antes de intentar conectarse a AWS IoT Greengrass o a otros servicios de TLS que utilicen certificados de servidor. Para obtener más información, consulte Uso de la hora del dispositivo para validar certificados de servidor AWS IoT en El Internet de las cosas en el blog oficial de AWS.

 

La implementación no finaliza.

Solución: Haga lo siguiente:

  • Asegúrese de que el daemon de AWS IoT Greengrass se está ejecutando en su dispositivo del núcleo. En el terminal de su dispositivo central, ejecute los siguientes comandos para comprobar si el daemon se está ejecutando e inícielo, si es necesario.

    1. Para comprobar si el daemon está en ejecución:

      ps aux | grep -E 'greengrass.*daemon'

      Si la salida contiene una entrada root para /greengrass/ggc/packages/1.11.6/bin/daemon, el daemon está en ejecución.

      La versión que figura en la ruta depende de la versión del software AWS IoT Greengrass Core que esté instalada en el dispositivo del núcleo.

    2. Iniciar el daemon:

      cd /greengrass/ggc/core/ sudo ./greengrassd start
  • Asegúrese de que el dispositivo del núcleo está conectado y los puntos de enlace del núcleo se han configurado correctamente.

 

Error: no se pueden encontrar los ejecutables de java o java8, o error: error <deployment-id>de implementación del tipo NewDeployment para el grupo<group-id>: error de trabajo al no <worker-id>poder inicializarse por el motivo La versión de Java instalada debe ser mayor o igual a 8

Solución: si el administrador de secuencias está habilitado para el núcleo AWS IoT Greengrass, debe instalar el tiempo de ejecución Java 8 en el dispositivo principal antes de implementar el grupo. Para obtener más información, consulte los requisitos del administrador de secuencias. El administrador de secuencias estará habilitado de forma predeterminada siempre que se utilice el flujo de trabajo de Creación predeterminada de grupos en la consola AWS IoT para crear un grupo.

O deshabilite el administrador de secuencias y, a continuación, implemente el grupo. Para obtener más información, consulte Configuración del administrador de secuencias (consola).

 

La implementación no finaliza y runtime.log contiene varias entradas "wait 1s for container to stop".

Solución: Ejecute los comandos siguientes en el terminal del dispositivo del núcleo para reiniciar el daemon de AWS IoT Greengrass.

cd /greengrass/ggc/core/ sudo ./greengrassd stop sudo ./greengrassd start

 

La implementación no finaliza y runtime.log contiene "[ERROR]-Greengrass deployment error: failed to report deployment status back to cloud {"deploymentId": "<deployment-id>", "errorString": "Failed to initiate PUT, endpoint: https://<deployment-status>, error: Put https://<deployment-status>: proxyconnect tcp: x509: certificate signed by unknown authority"}"

Solución: puede ver este error en runtime.log cuando el núcleo de Greengrass está configurado para usar una conexión proxy HTTPS y la cadena de certificados del servidor proxy no es de confianza en el sistema. Para intentar resolver este problema, agregue la cadena de certificados al certificado de entidad de certificación raíz. El núcleo de Greengrass agrega los certificados desde este archivo al grupo de certificados utilizado para la autenticación TLS en conexiones HTTPS y MQTT con AWS IoT Greengrass.

En el ejemplo siguiente se muestra un certificado de entidad de certificación de servidor proxy agregado al archivo de certificado de entidad de certificación raíz:

# My proxy CA -----BEGIN CERTIFICATE----- MIIEFTCCAv2gAwIQWgIVAMHSAzWG/5YVRYtRQOxXUTEpHuEmApzGCSqGSIb3DQEK \nCwUAhuL9MQswCQwJVUzEPMAVUzEYMBYGA1UECgwP1hem9uLmNvbSBJbmMuMRww ... content of proxy CA certificate ... +vHIRlt0e5JAm5\noTIZGoFbK82A0/nO7f/t5PSIDAim9V3Gc3pSXxCCAQoFYnui GaPUlGk1gCE84a0X\n7Rp/lND/PuMZ/s8YjlkY2NmYmNjMCAXDTE5MTEyN2cM216 gJMIADggEPADf2/m45hzEXAMPLE= -----END CERTIFICATE----- # Amazon Root CA 1 -----BEGIN CERTIFICATE----- MIIDQTCCAimgF6AwIBAgITBmyfz/5mjAo54vB4ikPmljZKyjANJmApzyMZFo6qBg ADA5MQswCQYDVQQGEwJVUzEPMA0tMVT8QtPHRh8jrdkGA1UEChMGDV3QQDExBBKW ... content of root CA certificate ... o/ufQJQWUCyziar1hem9uMRkwFwYVPSHCb2XV4cdFyQzR1KldZwgJcIQ6XUDgHaa 5MsI+yMRQ+hDaXJiobldXgjUka642M4UwtBV8oK2xJNDd2ZhwLnoQdeXeGADKkpy rqXRfKoQnoZsG4q5WTP46EXAMPLE -----END CERTIFICATE-----

De forma predeterminada, el archivo de certificado de entidad de certificación raíz se encuentra en /greengrass-root/certs/root.ca.pem. Para encontrar la ubicación en su dispositivo principal, compruebe la propiedad crypto.caPath en config.json.

nota

greengrass-root representa la ruta donde está instalado el software de AWS IoT Greengrass Core en su dispositivo. Normalmente, este es el directorio /greengrass.

 

<path>Error: error al implementar el <deployment-id>tipo NewDeployment para el grupo<group-id>: error durante el procesamiento. la configuración del grupo no es válida: 112 o [119 0] no tienen el permiso rw en el archivo:.

Solución: Asegúrese de que el grupo propietario del directorio <path> tiene permisos de lectura y escritura en el directorio.

 

Error: < list-of-function-arns > están configurados para ejecutarse como root, pero Greengrass no está configurado para ejecutar funciones de Lambda con permisos de root.

Solución: Es posible que vea este error en runtime.log cuando la implementación no se realiza correctamente. Asegúrese de que ha configurado AWS IoT Greengrass para permitir a las funciones de Lambda funcionar con permisos raíz. Cambie el valor de allowFunctionsToRunAsRoot en greengrass_root/config/config.json a yes o cambie la función de Lambda para que se ejecute como otro usuario/grupo. Para obtener más información, consulte Ejecución de una función de Lambda como raíz.

 

Error: error en el despliegue <deployment-id>del tipo NewDeployment para el grupo <group-id>Error: error de despliegue de Greengrass: no se pudo ejecutar el paso de descarga en la implementación. Error durante el procesamiento: no se pudo cargar el archivo de grupo descargado: no se pudo encontrar el UID basado en el nombre de usuario, Nombre de usuario: ggc_user: usuario desconocido ggc_user.

Solución: si la identidad de acceso predeterminada del grupo AWS IoT Greengrass utiliza las cuentas estándar del sistema, el usuario ggc_user y el grupo ggc_group deben estar presentes en el dispositivo. Para obtener instrucciones que muestran cómo añadir el usuario y el grupo, consulte este paso. Asegúrese de escribir los nombres exactamente tal y como se muestra.

 

Error: error [ERROR] en tiempo de ejecución: no se puede iniciar el contenedor lambda. {"errorString": "error al inicializar los montajes de contenedor: error al enmascarar la raíz de greengrass en directorio superior superpuesto: error al crear el dispositivo de enmascaramiento en el directorio <ggc-path>: el archivo ya existe"}

Solución: Es posible que vea este error en runtime.log cuando la implementación no se realiza correctamente. Este error se produce si una función de Lambda del grupo de Greengrass no puede acceder al directorio /usr del sistema de archivos del núcleo. Para resolverlo, agregue un recurso de volumen local al grupo e implemente el grupo. El recurso debe:

  • Especificar /usr como ruta de origen y ruta de destino.

  • Agregar automáticamente los permisos del SO para el grupo de Linux propietario del recurso.

  • Estar afiliado a la función de Lambda y permitir el acceso de solo lectura.

 

Error: error en <deployment-id>la implementación del tipo NewDeployment para el grupo <group-id>Error: error al iniciar el proceso: container_linux.go:259: al iniciar el proceso contenedor se produjo «process_linux.go:250: al ejecutar exec setns process for init se produjo\" wait: no hay procesos secundarios\ "».

Solución: Es posible que vea este error cuando la implementación no se realiza correctamente. Reintente la implementación.

 

Error: [WARN]-MQTT[client] dial tcp: lookup <host-prefix>-ats.iot.<region>.amazonaws.com: no existe ete host … [ERROR] -Error de implementación de Greengrass: no se pudo informar del estado de la implementación a la nube... net/http: solicitud cancelada mientras se esperaba la conexión (se superó el tiempo de espera de Client.Timeout mientras se esperaban los encabezados)

Solución: es posible que vea este error si utiliza systemd-resolved, que habilita la configuración DNSSEC de forma predeterminada. Como resultado, no se reconocen muchos dominios públicos. Los intentos de alcanzar el punto de enlace AWS IoT Greengrass no pueden encontrar el host, por lo que las implementaciones permanecen en el estado In Progress.

Puede utilizar los siguientes comandos y resultados para probar este problema. Sustituya el marcador de posición de la región en los puntos de conexión por su Región de AWS.

$ ping greengrass-ats.iot.region.amazonaws.com ping: greengrass-ats.iot.region.amazonaws.com: Name or service not known
$ systemd-resolve greengrass-ats.iot.region.amazonaws.com greengrass-ats.iot.region.amazonaws.com: resolve call failed: DNSSEC validation failed: failed-auxiliary

Una posible solución consiste en deshabilitar DNSSEC. Cuando DNSSEC es false, las búsquedas de DNS no se validan mediante DNSSEC. Para obtener más información, consulte este problema conocido para systemd.

  1. Agregue DNSSEC=false a /etc/systemd/resolved.conf.

  2. Reinicie systemd-resolved.

Para obtener información sobre resolved.conf y DNSSEC, ejecute man resolved.conf en el terminal.

 

Problemas al crear grupos o funciones

Utilice la siguiente información para ayudar a solucionar problemas con la creación de un grupo AWS IoT Greengrass o función de Lambda de Greengrass.

 

Error: la configuración '' del grupo no es válida. IsolationMode

Solución: Este error se produce cuando no se admite el valor IsolationMode en DefaultConfig de function-definition-version. Los valores admitidos son GreengrassContainer y NoContainer.

 

Error: la configuración 'IsolationMode' para la función con arn <function-arn>no es válida.

Solución: Este error se produce cuando no se admite el valor IsolationMode en <function-arn> de function-definition-version. Los valores admitidos son GreengrassContainer y NoContainer.

 

Error: MemorySize la configuración de la función con arn <function-arn>no está permitida en IsolationMode =. NoContainer

Solución: este error se produce cuando se especifica un valor MemorySize y se decide ejecutar sin contenerización. Las funciones de Lambda que se ejecutan sin creación de contenedores no pueden tener límites de memoria. Puede quitar el límite o cambiar la función de Lambda para ejecutarla en un contenedor de AWS IoT Greengrass.

 

Error: la configuración de Access Sysfs para la función con arn <function-arn>no está permitida en =. IsolationMode NoContainer

Solución: este error se produce cuando se especifica true para AccessSysfs y se decide ejecutar sin contenerización. Las funciones de Lambda que se ejecutan sin creación de contenedores deben tener su código actualizado para acceder directamente al sistema de archivos y no pueden usar AccessSysfs. Puede especificar un valor de false para AccessSysfs o puede cambiar la función de Lambda para ejecutarla en un contenedor de AWS IoT Greengrass.

 

Error: la MemorySize configuración de la función con arn <function-arn>es necesaria en =. IsolationMode GreengrassContainer

Solución: Este error se produce debido a que no especificó un límite MemorySize para una función de Lambda que se está ejecutando en un contenedor de AWS IoT Greengrass. Especifique un valor MemorySize para resolver el error.

 

Error: la función <function-arn>hace referencia a un recurso de tipo <resource-type>no permitido en IsolationMode =NoContainer.

Solución: No puede tener acceso a los tipos de recursos Local.Device, Local.Volume, ML_Model.SageMaker.Job, ML_Model.S3_Object o S3_Object.Generic_Archive al ejecutar una función de Lambda sin creación de contenedores. Si necesita dichos tipos de recurso, debe ejecutarlos en un contenedor de AWS IoT Greengrass. También puede acceder a dispositivos locales directamente al ejecutar sin creación de contenedores cambiando el código en la función de Lambda.

 

Error: Execution configuration for function with arn <arn-de-característica> is not allowed.

Solución: Este error se produce al crear una función de Lambda del sistema con GGIPDetector o GGCloudSpooler y especificar la configuración IsolationMode o RunAs. Debe omitir los parámetros de Execution para esta función de Lambda del sistema.

 

Problemas de detección

Utilice la siguiente información como ayuda para solucionar problemas con el servicio AWS IoT Greengrass Discovery.

 

Error: el dispositivo es miembro de demasiados grupos, los dispositivos no pueden estar en más de 10 grupos

Solución: se trata de una limitación conocida. Un dispositivo cliente puede ser miembro de hasta 10 grupos.

 

Problemas con el recurso de machine learning

Utilice la siguiente información para solucionar problemas con los recursos de machine learning.

 

InvalidMLModelOwner : GroupOwnerSetting se proporciona en el recurso del modelo ML, pero GroupOwner o no GroupPermission está presente

Solución: recibe este error si un recurso de aprendizaje automático contiene el ResourceDownloadOwnerSettingobjeto pero la GroupPermission propiedad requerida GroupOwner o no está definida. Para resolver este problema, defina la propiedad que falta.

 

NoContainer la función no puede configurar el permiso al adjuntar recursos de Machine Learning. <function-arn>hace referencia a un recurso de aprendizaje automático <resource-id>con permiso <ro/rw> en la política de acceso a los recursos.

Solución: recibirá este error si una función de Lambda que no está en un contenedor especifica permisos de nivel de característica para un recurso de machine learning. Las funciones que no están en un contenedor deben heredar permisos de los permisos de propietario de recursos definidos en el recurso de machine learning. Para resolver este problema, elija heredar permisos de propietario de recursos (consola) o quitar los permisos de la política de acceso a recursos (API) de la función de Lambda.

 

<function-arn>La función se refiere a un recurso de Machine Learning al que <resource-id>le falta permiso tanto en uno como ResourceAccessPolicy en el recurso OwnerSetting.

Solución: recibirá este error si los permisos para el recurso de machine learning no están configurados para la función de Lambda adjunta o el recurso. Para resolver este problema, configure los permisos en la ResourceAccessPolicypropiedad de la función Lambda o en la OwnerSettingpropiedad del recurso.

 

<function-arn>La función hace referencia al recurso Machine Learning <resource-id>con el permiso\ "rw\», mientras que la configuración del propietario del recurso GroupPermission solo permite\ "ro\».

Solución: recibirá este error si los permisos de acceso definidos para la función de Lambda adjunta superan los permisos de propietario de recursos definidos para el recurso de machine learning. Para resolver este problema, establezca permisos más restrictivos para la función de Lambda o permisos menos restrictivos para el propietario del recurso.

 

NoContainer La función <function-arn>hace referencia a los recursos de la ruta de destino anidada.

Solución: recibirá este error si varios recursos de machine learning conectados a una función de Lambda no contenedora utilizan la misma ruta de destino o una ruta de destino anidada. Para resolver este problema, especifique rutas de destino separadas para los recursos.

 

Lambda <function-arn> obtiene acceso al recurso <resource-id> al compartir el mismo ID de propietario del grupo

Solución: recibirá este error runtime.log si se especifica el mismo grupo de sistemas operativos como la identidad Ejecutar como de la función de Lambda y el propietario del recurso de machine learning, pero el recurso no está adjunto a la función de Lambda. Esta configuración da a la función de Lambda permisos implícitos que puede utilizar para acceder al recurso sin autorización de AWS IoT Greengrass.

Para resolver este problema, utilice un grupo de SO diferente para una de las propiedades o adjunte el recurso de machine learning a la función de Lambda.

Problemas del núcleo de AWS IoT Greengrass en Docker

Utilice la información siguiente como ayuda para solucionar problemas relacionados con la ejecución de AWS IoT Greengrass core en un contenedor de Docker.

 

Error: opciones desconocidas: -no-include-email.

Solución: Este error puede producirse al ejecutar el comando aws ecr get-login. Asegúrese de que tiene la última versión de la AWS CLI instalada (por ejemplo, ejecute: pip install awscli --upgrade --user). Si utiliza Windows e instaló la interfaz de línea de comandos (CLI) mediante el instalador MSI, debe repetir el proceso de instalación. Para obtener más información, consulte Instalación de la AWS Command Line Interface en Microsoft Windows en la Guía del usuario de AWS Command Line Interface.

 

Advertencia: IPv4 is disabled. Networking will not work.

Solución: Puede que reciba esta advertencia o un mensaje similar al ejecutar AWS IoT Greengrass en un equipo Linux. Habilite el enrutamiento de red IPv4 tal y como se describe en este paso. La implementación en la nube de AWS IoT Greengrass y las comunicaciones MQTT no funcionan cuando el reenvío de IPv4 no está habilitado. Para obtener más información, consulte Configure namespaced kernel parameters (sysctls) at runtime en la documentación de Docker.

 

Error: A firewall is blocking file Sharing between windows and the containers.

Solución: Puede que reciba este error o un mensaje Firewall Detected al ejecutar Docker en un equipo Windows. Esto también puede ocurrir si ha iniciado sesión en una red privada virtual (VPN) y su configuración de red impide el montaje de la unidad compartida. En esta situación, desactive la VPN y vuelva a ejecutar el contenedor Docker.

 

Error: se produjo un error (AccessDeniedException) al llamar a la GetAuthorizationToken operación: el usuario: arn:aws:iam: ::user/ <account-id><user-name>no está autorizado a realizar: ecr: on resource: * GetAuthorizationToken

Puede recibir este error al ejecutar el comando aws ecr get-login-password si no tiene los permisos suficientes para acceder a un repositorio de Amazon ECR. Para obtener más información, consulte los Ejemplos de políticas de repositorios de Amazon ECR y el Acceso a un repositorio de Amazon ECR en la Guía del usuario de Amazon ECR.

 

Error: Cannot create container for the service greengrass: Conflict. El nombre del contenedor «/» ya está en uso. aws-iot-greengrass

Solución: Esto puede ocurrir cuando el nombre del contenedor se utiliza en un contenedor anterior. Para solucionar este problema, ejecute el siguiente comando para eliminar el contenedor Docker antiguo:

docker rm -f $(docker ps -a -q -f "name=aws-iot-greengrass")

 

Error: [FATAL]-Failed to reset thread's mount namespace due to an unexpected error: "operation not permitted". To maintain consistency, GGC will crash and need to be manually restarted.

Solución: Este error de runtime.log puede producirse cuando se intenta implementar una función de Lambda GreengrassContainer en un AWS IoT Greengrass core que se ejecuta en un contenedor de Docker. Actualmente, solo las funciones de Lambda NoContainer pueden desplegarse en un contenedor de Docker de Greengrass.

Para solucionar este problema, asegúrese de que todas las funciones de Lambda se encuentran en modo NoContainer e inicie una nueva implementación. A continuación, al iniciar el contenedor, no vincule-monte el directorio deployment existente en el contenedor de Docker de AWS IoT Greengrass core. En su lugar, cree un directorio deployment vacío y vincúlelo-móntelo en el contenedor de Docker. Esto permite que el nuevo contenedor de Docker reciba la última implementación con funciones de Lambda que se ejecutan en modo NoContainer.

Para obtener más información, consulte Ejecución de AWS IoT Greengrass en un contenedor Docker.

Solución de problemas con los registros

Puede configurar los ajustes de registro para un grupo de Greengrass, como enviar registros a Logs, almacenar CloudWatch registros en el sistema de archivos local o ambos. Para obtener información detallada durante la solución de problemas, puede cambiar temporalmente el nivel del registro a DEBUG. Los cambios de configuración de registro surten efecto cuando se implementa el grupo. Para obtener más información, consulte Configuración de registro en AWS IoT Greengrass.

En el sistema de archivos local, AWS IoT Greengrass almacena registros en las ubicaciones siguientes. La lectura de los registros en el sistema de archivos requiere privilegios raíz.

greengrass-root/ggc/var/log/crash.log

Muestra los mensajes generados cuando un AWS IoT Greengrass core se bloquea.

greengrass-root/ggc/var/log/system/runtime.log

Muestra mensajes sobre qué componente ha dado error.

greengrass-root/ggc/var/log/system/

Contiene todos los registros de los componentes del sistema de AWS IoT Greengrass, como Certificate Manager y el Connection Manager. Utilizando los mensajes de ggc/var/log/system/ y ggc/var/log/system/runtime.log, debería poder averiguar qué error se produjo en los componentes del sistema de AWS IoT Greengrass.

greengrass-root/ggc/var/log/system/localwatch/

Contiene los registros del AWS IoT Greengrass componente que gestiona la carga de los registros de Greengrass a Logs CloudWatch . Si no puede ver los inicios de sesión de Greengrass CloudWatch, puede utilizarlos para solucionar problemas.

greengrass-root/ggc/var/log/user/

Contiene todos los logs de las funciones de Lambda; definidas por el usuario. Compruebe si existen mensajes de error de las funciones de Lambda locales en esta carpeta.

nota

De forma predeterminada, greengrass-root es el directorio /greengrass. Si se configura un directorio de escritura, entonces los registros están en ese directorio.

Si los registros están configurados para almacenarse en la nube, utilice los CloudWatch registros para ver los mensajes de registro. crash.logsolo se encuentra en los registros del sistema de archivos del dispositivo AWS IoT Greengrass principal.

Si AWS IoT está configurado para escribir registros CloudWatch, compruébelos si se producen errores de conexión cuando los componentes del sistema intentan conectarse a ellosAWS IoT.

Para obtener más información acerca del registro en AWS IoT Greengrass, consulte Monitorización con registros de AWS IoT Greengrass.

nota

Los registros del software de AWS IoT Greengrass Core v1.0 se almacenan en el directorio greengrass-root/var/log.

Solución de problemas de almacenamiento

Cuando el sistema de almacenamiento de archivos local se llene, es posible que algunos componentes empiecen a dar error:

  • Las actualizaciones de sombras locales no se realizan.

  • Los nuevos certificados de servidor MQTT de AWS IoT Greengrass core no se pueden descargar localmente.

  • Las implementaciones producen errores.

Siempre debe conocer la cantidad de espacio libre disponible en el nivel local. Puede calcular el espacio libre en función del tamaño de las funciones de Lambda implementadas, la configuración de la actividad de registro (consulte Solución de problemas con los registros) y el número de sombras almacenadas localmente.

Solución de problemas con los mensajes

Todos los mensajes enviados localmente en AWS IoT Greengrass se envían con QoS 0. De forma predeterminada AWS IoT Greengrass almacena los mensajes en un cola en memoria. Por lo tanto, los mensajes sin procesar se pierden cuando se reinicia el núcleo de Greengrass; por ejemplo, después de una implementación de grupo o de un reinicio del dispositivo. Sin embargo, puede configurar AWS IoT Greengrass (versión 1.6 o posterior) para almacenar los mensajes en caché en el sistema de archivos de modo que persistan entre los reinicios del núcleo. También puede configurar el tamaño de la cola. Si configura un tamaño de cola, asegúrese de que sea mayor o igual a 262144 bytes (256 KB). De lo contrario, AWS IoT Greengrass podría no iniciarse correctamente. Para obtener más información, consulte Cola de mensajes MQTT para objetivos en la nube.

nota

Cuando se utiliza el valor predeterminado de la cola en memoria, le recomendamos que implemente grupos o reinicie el dispositivo en un momento en el que la interrupción del servicio sea mínima.

También puede configurar el núcleo para establecer sesiones persistentes con AWS IoT. Esto permite que el núcleo reciba mensajes enviados desde la Nube de AWS aunque el núcleo está desconectado. Para obtener más información, consulte Sesiones persistentes de MQTT con AWS IoT Core.

Solución de problemas con los tiempos de espera de la sincronización de sombras

Los retrasos importantes en la comunicación entre un dispositivo del núcleo de Greengrass y la nube podrías provocar un error en la sincronización de sombras debido a que se agote el tiempo de espera. En este caso, debería ver entradas de registro similares a las siguientes:

[2017-07-20T10:01:58.006Z][ERROR]-cloud_shadow_client.go:57,Cloud shadow client error: unable to get cloud shadow what_the_thing_is_named for synchronization. Get https://1234567890abcd.iot.us-west-2.amazonaws.com:8443/things/what_the_thing_is_named/shadow: net/http: request canceled (Client.Timeout exceeded while awaiting headers) [2017-07-20T10:01:58.006Z][WARN]-sync_manager.go:263,Failed to get cloud copy: Get https://1234567890abcd.iot.us-west-2.amazonaws.com:8443/things/what_the_thing_is_named/shadow: net/http: request canceled (Client.Timeout exceeded while awaiting headers) [2017-07-20T10:01:58.006Z][ERROR]-sync_manager.go:375,Failed to execute sync operation {what_the_thing_is_named VersionDiscontinued []}"

Una posible solución es configurar la cantidad de tiempo durante la que el dispositivo del núcleo espera un respuesta del host. Abra el archivo config.json de greengrass-root/config y agregue un campo system.shadowSyncTimeout con un valor de tiempo de espera en segundos. Por ejemplo:

{ "system": { "shadowSyncTimeout": 10 }, "coreThing": { "caPath": "root-ca.pem", "certPath": "cloud.pem.crt", "keyPath": "cloud.pem.key", ... }, ... }

Si no se especifica ningún valor shadowSyncTimeout en config.json, el valor predeterminado es 5 segundos.

nota

Para el software de AWS IoT Greengrass Core v1.6 y versiones anteriores, el valor predeterminado de shadowSyncTimeout es de 1 segundo.

Comprobar AWS re:Post

Si no puede resolver su problema utilizando la información de solución de problemas de este tema, puede buscar en el Solución de problemas de AWS IoT Greengrass o comprobar la etiqueta AWS IoT Greengrass en AWS re:Post para ver si hay problemas relacionados o publicar una nueva pregunta. Los miembros del equipo de AWS IoT Greengrass monitorean activamente AWS re:Post.