Solución de problemas de AWS IoT Greengrass en un contenedor Docker - AWS IoT Greengrass

Solución de problemas de AWS IoT Greengrass en un contenedor Docker

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

Solución de problemas al ejecutar el contenedor de Docker

Utilice la siguiente información para ayudar a solucionar problemas con la ejecución de AWS IoT Greengrass en un contenedor de Docker.

Error: No se puede realizar un inicio de sesión interactivo desde un dispositivo que no sea TTY

Este error puede producirse al ejecutar el comando aws ecr get-login-password. Asegúrese de haber instalado la última versión 2 o la versión 1 de AWS CLI. Le recomendamos que utilice la última versión 2 de AWS CLI. Para obtener más información, consulte Installing the AWS CLI en la Guía del usuario de AWS Command Line Interface.

Error: Unknown options: -no-include-email

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

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

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: Ocurrió un error (AccessDeniedException) al llamar a la operación GetAuthorizationToken: Usuario: arn:aws:iam::account-id:user/<user-name> no está autorizado a realizar: ecr:GetAuthorizationToken en el recurso: *

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: Ha alcanzado su límite de tasa de cambios

Docker Hub limita la cantidad de solicitudes de cambio que pueden realizar los usuarios anónimos y gratuitos de Docker Hub. Si supera los límites de tasa de solicitudes de cambio de usuarios anónimos o gratuitos, entonces recibe uno de los siguientes errores:

ERROR: toomanyrequests: Too Many Requests.
You have reached your pull rate limit.

Para resolver estos errores, puede esperar unas horas antes de intentar realizar otra solicitud de cambio. Si planea enviar una gran cantidad de solicitudes de cambio de forma constante, visite el sitio web de Docker Hub para obtener información sobre los límites de tasa y las opciones para autenticar y actualizar su cuenta de Docker.

Depuración de AWS IoT Greengrass en un contenedor Docker

Para depurar problemas con un contenedor de Docker, puede conservar los registros del tiempo de ejecución de Greengrass o asociar un intérprete de comandos interactivo al contenedor de Docker.

Conservación de los registros de Greengrass fuera del contenedor de Docker

Tras detener un contenedor de AWS IoT Greengrass, puede usar el siguiente comando docker cp para copiar los registros de Greengrass del contenedor de Docker a un directorio de registros temporal.

docker cp container-id:/greengrass/v2/logs /tmp/logs

Para conservar los registros incluso después de que un contenedor salga o se elimine, debe ejecutar el contenedor de Docker de AWS IoT Greengrass después de montar en un enlace el directorio /greengrass/v2/logs.

Para montar en un enlace el directorio /greengrass/v2/logs, realice una de las siguientes acciones cuando ejecute un nuevo contenedor de Docker de AWS IoT Greengrass.

  • Incluya -v /tmp/logs:/greengrass/v2/logs:ro en su comando docker run.

    Modifique el bloque volumes en el archivo de Compose para incluir la siguiente línea antes de ejecutar el comando docker-compose up.

    volumes: - /tmp/logs:/greengrass/v2/logs:ro

A continuación, puede consultar los registros en /tmp/logs en el host para ver los registros de Greengrass mientras AWS IoT Greengrass se ejecuta en el contenedor de Docker.

Para obtener información sobre cómo ejecutar contenedores de Docker de Greengrass, consulte Ejecución de AWS IoT Greengrass en Docker con aprovisionamiento manual y Ejecución de AWS IoT Greengrass en Docker con aprovisionamiento automático.

Asociación de un intérprete de comandos interactivo a un contenedor de Docker

Cuando utiliza docker exec para ejecutar comandos dentro del contenedor de Docker, esos comandos no se capturan en los registros de Docker. Registrar los comandos en los registros de Docker puede ayudarlo a investigar el estado del contenedor de Docker de Greengrass. Realice una de las siguientes acciones siguientes:

  • Ejecute el siguiente comando en un terminal independiente para adjuntar la entrada, la salida y el error estándar del terminal al contenedor en ejecución. Esto le permite ver y controlar el contenedor de Docker desde su terminal actual.

    docker attach container-id
  • Ejecute el siguiente comando en un terminal independiente. Esto le permite ejecutar sus comandos en modo interactivo, incluso si el contenedor no está conectado.

    docker exec -it container-id sh -c "command > /proc/1/fd/1"

Para solucionar problemas generales de AWS IoT Greengrass, consulte Solución de problemas de AWS IoT Greengrass V2.