Se ejecuta AWS IoT Greengrass en un contenedor Docker con aprovisionamiento automático de recursos - AWS IoT Greengrass

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Se ejecuta AWS IoT Greengrass en un contenedor Docker con aprovisionamiento automático de recursos

En este tutorial, se muestra cómo instalar y ejecutar el software AWS IoT Greengrass principal en un contenedor Docker con AWS recursos aprovisionados automáticamente y herramientas de desarrollo local. Puedes usar este entorno de desarrollo para explorar las AWS IoT Greengrass funciones de un contenedor Docker. El software requiere AWS credenciales para aprovisionar estos recursos e implementar las herramientas de desarrollo local.

Si no puede proporcionar AWS las credenciales al contenedor, puede aprovisionar los AWS recursos que el dispositivo principal necesita para funcionar. También puede implementar las herramientas de desarrollo en un dispositivo principal para usarlas como dispositivo de desarrollo. Esto le permite conceder menos permisos al dispositivo al ejecutar el contenedor. Para obtener más información, consulte Se ejecuta AWS IoT Greengrass en un contenedor Docker con aprovisionamiento manual de recursos.

Requisitos previos

Para completar este tutorial, necesitará lo siguiente.

  • Una Cuenta de AWS. Si no dispone de una, consulte Configure un Cuenta de AWS.

  • Un usuario de AWS IAM con permisos para aprovisionar los recursos AWS IoT de IAM para un dispositivo principal de Greengrass. El instalador del software AWS IoT Greengrass principal utiliza sus AWS credenciales para aprovisionar automáticamente estos recursos. Para obtener información sobre la política mínima de IAM para aprovisionar recursos automáticamente, consultePolítica de IAM mínima para que el instalador aprovisione recursos.

  • Una imagen de AWS IoT Greengrass Docker. Puede crear una imagen a partir del AWS IoT Greengrass Dockerfile.

  • El ordenador host en el que se ejecuta el contenedor de Docker debe cumplir los siguientes requisitos:

    • Un sistema operativo basado en Linux con conexión a Internet.

    • Docker Engine versión 18.09 o posterior.

    • (Opcional) Docker Compose versión 1.22 o posterior. Docker Compose solo es necesario si quieres usar la CLI de Docker Compose para ejecutar tus imágenes de Docker.

Configuración de sus credenciales de AWS

En este paso, crea un archivo de credenciales en la computadora host que contiene sus credenciales de seguridad. AWS Al ejecutar la imagen de AWS IoT Greengrass Docker, debe montar la carpeta que contiene este archivo de credenciales /root/.aws/ en el contenedor de Docker. El AWS IoT Greengrass instalador usa estas credenciales para aprovisionar recursos en su. Cuenta de AWS Para obtener información sobre la política de IAM mínima que el instalador requiere para aprovisionar automáticamente los recursos, consultePolítica de IAM mínima para que el instalador aprovisione recursos.

  1. Recupere una de las siguientes opciones.

  2. Cree una carpeta en la que coloque el archivo de credenciales.

    mkdir ./greengrass-v2-credentials
  3. Utilice un editor de texto para crear un archivo de configuración con el nombre credentials de la ./greengrass-v2-credentials carpeta.

    Por ejemplo, puede ejecutar el siguiente comando para usar GNU nano para crear el credentials archivo.

    nano ./greengrass-v2-credentials/credentials
  4. Añada sus AWS credenciales al credentials archivo en el siguiente formato.

    [default] aws_access_key_id = AKIAIOSFODNN7EXAMPLE aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY aws_session_token = AQoEXAMPLEH4aoAH0gNCAPy...truncated...zrkuWJOgQs8IZZaIv2BXIa2R4Olgk

    aws_session_tokenInclúyalo solo para credenciales temporales.

importante

Elimine el archivo de credenciales del equipo host después de iniciar el AWS IoT Greengrass contenedor. Si no elimina el archivo de credenciales, sus AWS credenciales permanecerán montadas dentro del contenedor. Para obtener más información, consulte Ejecute el software AWS IoT Greengrass principal en un contenedor.

Cree un archivo de entorno

Este tutorial utiliza un archivo de entorno para configurar las variables de entorno que se pasarán al instalador del software AWS IoT Greengrass Core dentro del contenedor de Docker. También puede usar el --env argumento -e o en su docker run comando para establecer las variables de entorno en el contenedor de Docker o puede establecer las variables en un environment bloque del docker-compose.yml archivo.

  1. Usa un editor de texto para crear un archivo de entorno llamado.env.

    Por ejemplo, en un sistema basado en Linux, puede ejecutar el siguiente comando para usar GNU nano y crear el directorio actual.env.

    nano .env
  2. Copie el siguiente contenido en el archivo.

    GGC_ROOT_PATH=/greengrass/v2 AWS_REGION=region PROVISION=true THING_NAME=MyGreengrassCore THING_GROUP_NAME=MyGreengrassCoreGroup TES_ROLE_NAME=GreengrassV2TokenExchangeRole TES_ROLE_ALIAS_NAME=GreengrassCoreTokenExchangeRoleAlias COMPONENT_DEFAULT_USER=ggc_user:ggc_group

    A continuación, sustituya los valores siguientes.

    • /greengrass/v2. La carpeta raíz de Greengrass que desea usar para la instalación. Utilice la variable de GGC_ROOT entorno para establecer este valor.

    • region. El Región de AWS lugar donde creó los recursos.

    • MyGreengrassCore. Es el nombre del objeto de AWS IoT. Si la cosa no existe, el instalador la crea. El instalador descarga los certificados para autenticarse como talAWS IoT.

    • MyGreengrassCoreGroup. El nombre del grupo de AWS IoT cosas. Si el grupo de cosas no existe, el instalador lo crea y lo añade. Si el grupo de cosas existe y tiene una implementación activa, el dispositivo principal descarga y ejecuta el software que especifique la implementación.

    • Greengrass V2 TokenExchangeRole. Sustitúyalo por el nombre de la función de intercambio de fichas de IAM que permite al dispositivo principal de Greengrass obtener AWS credenciales temporales. Si el rol no existe, el instalador lo crea y crea y adjunta una política denominada GreengrassV2 Access. TokenExchangeRole Para obtener más información, consulte Autorizar a los dispositivos principales a interactuar con AWS los servicios.

    • GreengrassCoreTokenExchangeRoleAlias. El alias del rol de intercambio de fichas. Si el alias del rol no existe, el instalador lo crea y lo dirige al rol de intercambio de tokens de IAM que especifique. Para obtener más información, consulte

    nota

    Puede configurar la variable de DEPLOY_DEV_TOOLS entorno true para implementar el componente CLI de Greengrass, que le permite desarrollar componentes personalizados dentro del contenedor de Docker. Le recomendamos que utilice este componente únicamente en entornos de desarrollo, no en entornos de producción. Este componente proporciona acceso a información y operaciones que normalmente no necesitará en un entorno de producción. Siga el principio de privilegios mínimos implementando este componente solo en los dispositivos principales donde lo necesite.

Ejecute el software AWS IoT Greengrass principal en un contenedor

Este tutorial le muestra cómo iniciar la imagen de Docker que creó en un contenedor de Docker. Puede usar la CLI de Docker o la CLI de Docker Compose para ejecutar la imagen del software AWS IoT Greengrass principal en un contenedor de Docker.

Docker
  1. Ejecute el siguiente comando para iniciar el contenedor de Docker.

    docker run --rm --init -it --name docker-image \ -v path/to/greengrass-v2-credentials:/root/.aws/:ro \ --env-file .env \ -p 8883 \ your-container-image:version

    Este comando de ejemplo usa los siguientes argumentos para docker run:

    • --rm. Limpia el contenedor al salir.

    • --init. Utiliza un proceso de inicio en el contenedor.

      nota

      El --init argumento es necesario para cerrar el software AWS IoT Greengrass Core al detener el contenedor de Docker.

    • -it. (Opcional) Ejecuta el contenedor de Docker en primer plano como un proceso interactivo. En su lugar, puede sustituirlo por el -d argumento para ejecutar el contenedor Docker en modo separado. Para obtener más información, consulte Separado frente a primer plano en la documentación de Docker.

    • --name. Ejecuta un contenedor llamado aws-iot-greengrass

    • -v. Monta un volumen en el contenedor de Docker para que el archivo de configuración y los archivos de certificado estén disponibles para su AWS IoT Greengrass ejecución dentro del contenedor.

    • --env-file. (Opcional) Especifica el archivo de entorno para establecer las variables de entorno que se pasarán al instalador del software AWS IoT Greengrass principal dentro del contenedor de Docker. Este argumento solo es necesario si ha creado un archivo de entorno para establecer variables de entorno. Si no creó un archivo de entorno, puede usar --env argumentos para establecer las variables de entorno directamente en el comando run de Docker.

    • -p. (Opcional) Publica el puerto contenedor 8883 en la máquina host. Este argumento es obligatorio si desea conectarse y comunicarse a través de MQTT, ya que AWS IoT Greengrass utiliza el puerto 8883 para el tráfico de MQTT. Para abrir otros puertos, utilice argumentos adicionales. -p

    nota

    Para ejecutar su contenedor de Docker con mayor seguridad, puede usar los --cap-add argumentos --cap-drop y para habilitar de forma selectiva las capacidades de Linux para su contenedor. Para obtener más información, consulta los privilegios de tiempo de ejecución y las capacidades de Linux en la documentación de Docker.

  2. Elimine las credenciales ./greengrass-v2-credentials del dispositivo anfitrión.

    rm -rf ./greengrass-v2-credentials
    importante

    Vas a eliminar estas credenciales porque proporcionan amplios permisos que el dispositivo principal solo necesita durante la configuración. Si no eliminas estas credenciales, los componentes de Greengrass y otros procesos que se ejecutan en el contenedor podrán acceder a ellas. Si necesita proporcionar AWS credenciales a un componente de Greengrass, utilice el servicio de intercambio de fichas. Para obtener más información, consulte Interactúa con AWS los servicios.

Docker Compose
  1. Use un editor de texto para crear un archivo de Docker Compose llamado. docker-compose.yml

    Por ejemplo, en un sistema basado en Linux, puede ejecutar el siguiente comando para usar GNU nano y crear el docker-compose.yml directorio actual.

    nano docker-compose.yml
    nota

    También puedes descargar y usar la última versión del archivo Compose proporcionado desdeAWS. GitHub

  2. Agrega el siguiente contenido al archivo Compose. El archivo debe ser similar al siguiente ejemplo. Sustituya docker-image por el nombre de su imagen de Docker.

    version: '3.7' services: greengrass: init: true container_name: aws-iot-greengrass image: docker-image volumes: - ./greengrass-v2-credentials:/root/.aws/:ro env_file: .env ports: - "8883:8883"

    Los siguientes parámetros del archivo Compose de ejemplo son opcionales:

    • ports—Publica los 8883 puertos del contenedor en la máquina host. Este parámetro es obligatorio si desea conectarse y comunicarse a través de MQTT, ya que AWS IoT Greengrass utiliza el puerto 8883 para el tráfico de MQTT.

    • env_file—Especifica el archivo de entorno para establecer las variables de entorno que se pasarán al instalador del software AWS IoT Greengrass principal dentro del contenedor de Docker. Este parámetro solo es necesario si ha creado un archivo de entorno para configurar las variables de entorno. Si no has creado un archivo de entorno, puedes usar el parámetro de entorno para configurar las variables directamente en tu archivo de Compose.

    nota

    Para ejecutar tu contenedor de Docker con mayor seguridad, puedes usar cap_drop y cap_add en tu archivo de Compose para habilitar de forma selectiva las capacidades de Linux para tu contenedor. Para obtener más información, consulta los privilegios de tiempo de ejecución y las capacidades de Linux en la documentación de Docker.

  3. Ejecute el siguiente comando para iniciar el contenedor de Docker.

    docker-compose -f docker-compose.yml up
  4. Elimine las credenciales ./greengrass-v2-credentials del dispositivo anfitrión.

    rm -rf ./greengrass-v2-credentials
    importante

    Vas a eliminar estas credenciales porque proporcionan amplios permisos que el dispositivo principal solo necesita durante la configuración. Si no eliminas estas credenciales, los componentes de Greengrass y otros procesos que se ejecutan en el contenedor podrán acceder a ellas. Si necesita proporcionar AWS credenciales a un componente de Greengrass, utilice el servicio de intercambio de fichas. Para obtener más información, consulte Interactúa con AWS los servicios.

Siguientes pasos

AWS IoT GreengrassEl software principal se ejecuta ahora en un contenedor Docker. Ejecute el siguiente comando para recuperar el ID del contenedor que se está ejecutando actualmente.

docker ps

A continuación, puede ejecutar el siguiente comando para acceder al contenedor y explorar el software AWS IoT Greengrass principal que se ejecuta dentro del contenedor.

docker exec -it container-id /bin/bash

Para obtener información sobre cómo crear un componente simple, consulte Paso 4: Desarrolle y pruebe un componente en su dispositivo en Tutorial: Introducción a AWS IoT Greengrass V2

nota

Cuando se ejecutan comandos dentro del contenedor de Docker, esos comandos no se registran en los registros de Docker. docker exec Para registrar tus comandos en los registros de Docker, adjunta un shell interactivo al contenedor de Docker. Para obtener más información, consulte Adjunte un shell interactivo al contenedor de Docker.

El archivo de registro AWS IoT Greengrass principal se llama greengrass.log y se encuentra en. /greengrass/v2/logs Los archivos de registro de los componentes también se encuentran en el mismo directorio. Para copiar los registros de Greengrass a un directorio temporal del host, ejecute el siguiente comando:

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

Si desea conservar los registros después de que un contenedor se cierre o se haya eliminado, le recomendamos que monte únicamente el /greengrass/v2/logs directorio en el directorio de registros temporales del host, en lugar de montar todo el directorio de Greengrass. Para obtener más información, consulte Conserva los registros de Greengrass fuera del contenedor de Docker.

Para detener un contenedor AWS IoT Greengrass Docker en ejecución, ejecute o. docker stop docker-compose -f docker-compose.yml stop Esta acción se envía SIGTERM al proceso de Greengrass y cierra todos los procesos asociados que se iniciaron en el contenedor. El contenedor Docker se inicializa con el docker-init ejecutable como PID de proceso 1, lo que ayuda a eliminar cualquier proceso zombi sobrante. Para obtener más información, consulte Especificar un proceso de inicio en la documentación de Docker.

Para obtener información sobre cómo solucionar problemas relacionados con la ejecución AWS IoT Greengrass en un contenedor Docker, consulte. Solución de problemas de AWS IoT Greengrass en un contenedor Docker