View a markdown version of this page

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

Aviso de fin de soporte: el 7 de octubre de 2026, AWS descontinuará el soporte para AWS IoT Greengrass Version 1. Después del 7 de octubre de 2026, ya no podrá acceder a los AWS IoT Greengrass V1 recursos. Para obtener más información, visite Migrar desde AWS IoT Greengrass Version 1.

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.

Resolución de problemas AWS IoT Greengrass

En esta sección se proporciona información sobre la solución de problemas y posibles soluciones para ayudar a resolver los problemas AWS IoT Greengrass.

Para obtener más información sobre AWS IoT Greengrass las cuotas (límites), consulte las cuotas de servicio en Referencia general de Amazon Web Services.

AWS IoT Greengrass Cuestiones principales

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

Busca entre los siguientes síntomas y errores para encontrar información que te ayude a solucionar problemas con un AWS IoT Greengrass núcleo.

Problemas

 

Error: en el archivo de configuración falta el CaPath, CertPath o KeyPath. El proceso daemon de Greengrass con [pid = < pid>] ha dejado de funcionar.

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

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

  • Usa el config.json formato correcto para tu versión AWS IoT Greengrass del software Core. Para obtener más información, consulte AWS IoT Greengrass archivo de configuración principal.

    nota

    Para saber qué versión del software AWS IoT Greengrass Core está instalada en el dispositivo principal, ejecuta los siguientes comandos en el terminal de tu dispositivo.

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

 

Error: no se pudo analizar < /greengrass-root>/.json. config/config

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

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 }, ...

 

Error: no se pudo invocar PutLogEvents en Cloudwatch local, LogGroup:/GreengrassSystem/connection_manager, error:: no se pudo enviar la solicitud debido a RequestError: Publicar http://<path>/cloudwatch/logs/: dial tcp < address: 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 utilizas una Raspberry Pi y no AWS IoT Greengrass se ha completado la configuración de memoria requerida. Para obtener más información, consulte este paso.

 

Error: no se puede crear el servidor debido a: no se pudo cargar el grupo: chmod/<greengrass-root>/ggc/deployment/:aws:lambda: region: > account-id:function<: function-namelambda/arn: version/<file-name: no existe tal archivo o directorio. > < > < > < >

Solución: Es posible que vea este error cuando el software de AWS IoT Greengrass Core no se inicia. Si ha implementado un ejecutable de Lambda en el núcleo, compruebe la propiedad de la función en el archivo (ubicado en///group). Handler group.json greengrass-root ggc/deployment 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).

 

La AWS IoT Greengrass El software principal no se inicia después de pasar de ejecutarse sin contenedores a ejecutarse 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 la versión AWS IoT Greengrass 1.10.2 o una versión posterior, intente aumentar el valor en el mqttOperationTimeout archivo config.json. AWS IoT Greengrass archivo de configuración principal 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: al iniciar el proceso del contenedor, se produjo «process_linux.go:424: el inicio del contenedor causó\» denegación del permiso\\\ "\"». 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:

Solución: Es posible que aparezca este error cuando el software principal no se inicia. runtime.log AWS IoT Greengrass 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: el daemon de Greengrass se ejecuta con el PID: < process-id. > 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 iot:UpdateThingShadow y iot:GetThingShadow acciones para el rol de servicio de Greengrass. 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 de descriptores de archivos del software AWS IoT Greengrass Core ha alcanzado el umbral y debe aumentarse.

Utilice el siguiente comando y, a continuación, reinicie el software 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: instálelo AWS IoT Greengrass directamente en el directorio raíz o asegúrese de que el directorio donde está instalado el software AWS IoT Greengrass Core y sus directorios principales tengan execute permisos para todos.

 

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

Solución: AWS IoT Greengrass usa un controlador común para validar las propiedades de todos los 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: se denegó el permiso al intentar usar el rol para acceder arn:aws:iam::<account-id>:role/<role-name> a la URL de s3. https://<region>-greengrass-updates.s3.<region>.amazonaws.com/core/<architecture>/greengrass-core-<distribution-version>.tar.gz

Solución: Es posible que vea este error cuando una actualización transparente (OTA) no se realiza correctamente. En la política de rol de firma, añada la Región de AWS de destino como Resource. Este rol de firmante se usa para prefirmar la URL de S3 para la actualización del AWS IoT Greengrass software. Para obtener más información, consulte Rol de firmante de URL de S3.

 

La AWS IoT Greengrass el núcleo está configurado para usar un proxy de red y su función Lambda no puede establecer 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 las funciones de Lambda utilicen la configuración de proxy adecuada para conectarse a través del proxy de red. AWS IoT Greengrass transfiere la configuración del proxy a las funciones de Lambda definidas por el usuario a través de las variables de http_proxy entornohttps_proxy, yno_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 ambas.

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 son las mismas Región de AWS y Cuenta de AWS deben usar identificadores 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 aparezca este error runtime.log al AWS IoT Greengrass intentar montar el sistema de /proc archivos para crear un contenedor 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]: error de ejecución en tiempo de ejecución: no se puede iniciar el contenedor lambda. {"errorString»: «no se pudo inicializar el montaje del contenedor: no se pudo enmascarar la raíz de greengrass en el directorio superior superpuesto: no se pudo crear el dispositivo de máscara en el directorio ggc-path: el archivo 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 AWS IoT Greengrass grupo no puede acceder al directorio del sistema de archivos del núcleo. /usr

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]: falló la implementación. {"deploymentId»: "<deployment-id > «, «errorString»: «El proceso de prueba del contenedor con pid < pid > falló: estado del proceso del contenedor: estado de salida 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 AWS IoT Greengrass grupo no puede acceder al directorio del sistema de archivos del núcleo. /usr

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 aparezca este error en el runtime.log archivo cuando el software AWS IoT Greengrass principal 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. Actualiza el software 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 Core, defina la system.useOverlayWithTmpfs propiedad como true en el archivo AWS IoT Greengrass archivo de configuración principal config.json.

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

La versión AWS IoT Greengrass del software principal aparece 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] Demasiadas < funciones lambda abiertas>, [Errno 24] Demasiados archivos abiertos

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

 

Error: el servidor ds no pudo iniciar la escucha del socket: listen unix < > ggc-path//greengrass_ipc.sock: bind: argumento no válido ggc/socket

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 principal se instala en una carpeta con una ruta de archivo larga. Vuelva a instalar el software AWS IoT Greengrass Core en una carpeta con una ruta de archivo de menos de 79 bytes, si no utiliza un directorio de escritura, o de 83 bytes, si utiliza un directorio de escritura.

[INFO] (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 principal a la versión 1.11.3, es posible que aparezca el siguiente error en los registros del administrador de transmisiones 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 principal anterior a la v1.11.3 y quieres actualizarla a una versión posterior, usa una actualización OTA para actualizar a la v1.11.4.

Error de GPG: https://dnw9lb6lzp2d8.cloudfront.net estable: las siguientes firmas no eran válidas InRelease: EXPKEYSIG 68D644ABD2327D47 La clave maestra de AWS Greengrass

Cuando se ejecuta apt update en un dispositivo en el que se ha instalado el software AWS IoT Greengrass principal 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 principal desde el repositorio de APT. Para ejecutarlo correctamenteapt update, elimine el AWS IoT Greengrass repositorio 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 AWS IoT consola o la AWS IoT Greengrass API para volver a implementar una implementación anterior en funcionamiento. 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 de despliegues en la que se muestra la Re-Deploy acción de un despliegue.
Para volver a implementar una implementación (CLI), realice el siguiente procedimiento:
  1. ListDeploymentsUtilícela 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 AWS CLI comandos 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 utilizan CreateDeployment para 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. GetDeploymentStatusUtilícelo para 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 AWS IoT Greengrass núcleo de la nube incluya "greengrass:*" una 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. El TLS y X.509 los certificados proporcionan una base segura para crear sistemas de IoT, pero requieren tiempos precisos en los servidores y los clientes. Los dispositivos de IoT deben tener la hora correcta (no más de 15 minutos) antes de intentar conectarse a AWS IoT Greengrass otros servicios TLS que utilicen certificados de servidor. Para obtener más información, consulte Uso de la hora del dispositivo para validar los certificados de AWS IoT servidor en el Internet de las cosas en el blog AWS oficial.

 

La implementación no finaliza.

Solución: Haga lo siguiente:

  • Asegúrese de que el AWS IoT Greengrass daemon se esté ejecutando en su dispositivo principal. 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 de la ruta depende de la versión del software AWS IoT Greengrass principal que esté instalada en el dispositivo principal.

    2. Inicio de 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 se produce el error: El identificador de < implementación > del tipo NewDeployment para el identificador de < grupo Error: el trabajador con ID de < trabajo > no pudo inicializar por el motivo La versión de Java > instalada debe ser superior o igual a 8

Solución: si el administrador de flujos 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 flujos estará habilitado de forma predeterminada siempre que se utilice el flujo de trabajo de Creación predeterminada de grupos en la consola de 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: ejecuta los siguientes comandos en la terminal principal de tu dispositivo para reiniciar el daemon. AWS IoT Greengrass

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

 

La implementación no finaliza y runtime.log contiene «[ERROR] -Error de implementación de Greengrass: no se pudo devolver el estado de implementación a la nube {" deploymentID»: "<deployment-id > «, «errorString»: «No se pudo iniciar PUT, punto final: https://deployment-status, error: Put https://<deployment-status>: proxyconnect tcp: x509: certificado firmado por una autoridad desconocida<"}» >

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-rootrepresenta la ruta en la que está instalado el software AWS IoT Greengrass Core en su dispositivo. Normalmente, este es el directorio /greengrass.

 

Error: el identificador de < implementación > del tipo NewDeployment para el identificador de < grupo > falló: error durante el procesamiento. la configuración del grupo no es válida: 112 o [119 0] no tienen permiso rw en la ruta del archivo:. < >

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

 

Error: las < listas de funciones > están configuradas 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 está configurado para permitir que las funciones de Lambda se AWS IoT Greengrass ejecuten con permisos de root. Cambie el valor de allowFunctionsToRunAsRoot in greengrass_root/config/config.json a yes o cambie la función de Lambda para que se ejecute como otra. user/group Para obtener más información, consulte Ejecución de una función de Lambda como raíz.

 

Error: > no se pudo ejecutar el identificador de < implementación > del tipo NewDeployment para el ID de < grupo: error de implementación de Greengrass: no se puede ejecutar la etapa de descarga en la implementación. Error durante el procesamiento: no se puede cargar el archivo de grupo descargado: no se pudo encontrar el UID basado en el nombre de usuario, nombre de usuario: ggc_user: usuario: usuario desconocido ggc_user.

Solución: si la identidad de acceso predeterminada del AWS IoT Greengrass grupo usa las cuentas del sistema estándar, el ggc_user usuario y el ggc_group grupo 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 de ejecución en tiempo de ejecución: no se puede iniciar el contenedor lambda. {"errorString»: «no se pudo inicializar el montaje del contenedor: no se pudo enmascarar la raíz de greengrass en el directorio superior superpuesto: no se pudo crear el dispositivo de máscara en el directorio ggc-path: el archivo 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: el identificador de < implementación > del tipo NewDeployment para el identificador de < grupo > falló: no se pudo iniciar el proceso: container_linux.go:259: al iniciar el proceso del contenedor se provocó «process_linux.go:250: la ejecución del exec envía el proceso para el inicio causado\» espera: 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 [cliente] marca tcp: busca host-prefix -ats.iot. <>region .amazonaws.com: no existe ese 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 Client.Timeout superó 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. Al intentar llegar al AWS IoT Greengrass punto final, no se encuentra el host, por lo que las implementaciones permanecen en ese estado. In Progress

Puede utilizar los siguientes comandos y resultados para probar este problema. Sustituya el region marcador de posición de los puntos finales 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 relacionados con la creación de un AWS IoT Greengrass grupo o una función Lambda de Greengrass.

 

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

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: la MemorySize 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: no se permite acceder a la configuración de Sysfs para la función con arn function-arn 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 el valor false for AccessSysfs o cambiar la función Lambda para que se ejecute en un contenedor. AWS IoT Greengrass

 

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

Solución: este error se produce porque no especificó un MemorySize límite para una función de Lambda que está ejecutando en un contenedor. 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 > que no está 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 esos tipos de recursos, debe ejecutarlos en un AWS IoT Greengrass contenedor. 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: no se permite la configuración de ejecución de una función con arn < function-arn. >

Solución: este error se produce al crear una función de Lambda del sistema con GGIPDetector o GGCloudSpooler, y usted especificó 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 para ayudar a solucionar problemas con el servicio Discovery. AWS IoT Greengrass

 

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 de 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 no GroupPermission está presente

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

 

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

Solución: recibe este error si una función de Lambda no contenedorizada especifica permisos a nivel de función para un recurso de aprendizaje automático. Non-containerized las funciones deben heredar los permisos del propietario del recurso definidos en el recurso de aprendizaje automático. 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.

 

La función < function-arn > hace referencia al < identificador del recurso de aprendizaje automático al que le falta el permiso tanto en el recurso como en el > otro. ResourceAccessPolicy 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 ResourceAccessPolicy propiedad de la función de Lambda o en la propiedad del recurso. OwnerSetting

 

La función < function-arn > hace referencia al recurso < resource-id del recurso de aprendizaje automático > 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 otorga a la función Lambda permisos implícitos que puede usar para acceder al recurso sin autorización. 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.

AWS IoT Greengrass principales problemas de Docker

Usa la siguiente información para ayudarte a solucionar problemas relacionados con la ejecución de un AWS IoT Greengrass núcleo en un contenedor Docker.

 

Error: Unknown options: -no-include-email

Solución: Este error puede producirse al ejecutar el comando aws ecr get-login. Asegúrate de tener instalada la AWS CLI versión más reciente (por ejemplo, ejecuta: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: es posible que reciba esta advertencia o un mensaje similar cuando se ejecute AWS IoT Greengrass en un equipo Linux. Habilite el reenvío de red IPv4 tal y como se describe en este paso. AWS IoT Greengrass la implementación en la nube y las comunicaciones MQTT no funcionan cuando el reenvío 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: no arn:aws:iam::<account-id>:user/<user-name> está autorizado a realizar: ecr: en el recurso: * 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 "/aws-iot-greengrass" ya está en uso.

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 runtime.log puede producirse cuando se intenta implementar una función de GreengrassContainer Lambda en un AWS IoT Greengrass núcleo que se ejecuta en un contenedor Docker. Actualmente, solo las funciones de Lambda de 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. Luego, al iniciar el contenedor, no monte de forma vinculante el deployment directorio existente en el contenedor Docker principal. AWS IoT Greengrass 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 Ejecutar 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, por ejemplo, si desea enviar los CloudWatch registros a Logs, almacenarlos 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 Configure el registro para AWS IoT Greengrass.

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

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

Muestra los mensajes que se generan cuando un AWS IoT Greengrass núcleo deja de funcionar.

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 AWS IoT Greengrass sistema, como el administrador de certificados y el administrador de conexiones. Al utilizar los mensajes que ggc/var/log/system/ aparecen en yggc/var/log/system/runtime.log, podrá averiguar qué error se ha producido en los componentes AWS IoT Greengrass del sistema.

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 CloudWatch Logs. Si no puede ver los datos de inicio de sesión de Greengrass CloudWatch, puede usarlos para solucionar problemas.

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

Contiene todos los registros 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

Deforma 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 en él CloudWatch, compruébelos si se producen errores de conexión cuando los componentes del sistema intentan conectarse AWS IoT.

Para obtener más información sobre el AWS IoT Greengrass registro, consulteMonitoreo con AWS IoT Greengrass registros.

nota

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

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 del servidor MQTT AWS IoT Greengrass principal 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 que se envían localmente AWS IoT Greengrass se envían con QoS 0. De forma predeterminada, AWS IoT Greengrass almacena los mensajes en una 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 configurarlo AWS IoT Greengrass (versión 1.6 o posterior) para almacenar en caché los mensajes del sistema de archivos para que persistan al reiniciar el sistema principal. 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 es posible que no se inicie 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 los mensajes enviados desde el núcleo Nube de AWS mientras 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 AWS IoT Greengrass Core v1.6 y versiones anteriores, el valor predeterminado shadowSyncTimeout es de 1 segundo.

Check AWS Re:POST

Si no puedes resolver tu problema con la información de solución de problemas de este tema, puedes buscar Resolución de problemas AWS IoT Greengrass o comprobar la AWS IoT Greengrass etiqueta de AWS re:POST para ver si hay problemas relacionados o publicar una nueva pregunta. Los miembros del AWS IoT Greengrass equipo supervisan AWS activamente Re:post.