Ejecución de AWS IoT Greengrass en un contenedor de Docker con aprovisionamiento de recursos automático
En este tutorial, se muestra cómo instalar y ejecutar el software AWS IoT Greengrass Core en un contenedor de Docker con recursos de AWS aprovisionados automáticamente y herramientas de desarrollo local. Puede usar este entorno de desarrollo para explorar las características de AWS IoT Greengrass en un contenedor de Docker. El software requiere las credenciales de AWS para aprovisionar estos recursos e implementar las herramientas de desarrollo local.
Si no puede proporcionar credenciales de AWS al contenedor, puede aprovisionar los recursos de AWS 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 Ejecución de AWS IoT Greengrass en un contenedor de Docker con aprovisionamiento manual de recursos.
Requisitos previos
Necesitará lo siguiente para completar este tutorial.
-
Una Cuenta de AWS. Si no dispone de una, consulte Configuración de una Cuenta de AWS.
-
Un usuario de IAM AWS con permisos para aprovisionar los recursos de AWS IoT e IAM para un dispositivo principal de Greengrass. El instalador del software AWS IoT Greengrass Core utiliza sus credenciales de AWS para aprovisionar automáticamente estos recursos. Para obtener información sobre la política de IAM mínima para aprovisionar recursos automáticamente, consulte Política de IAM mínima para que el instalador aprovisione recursos.
-
Imagen de Docker de AWS IoT Greengrass. Puede crear una imagen desde el Dockerfile AWS IoT Greengrass.
-
El equipo host en el que ejecute el contenedor de Docker debe cumplir los siguientes requisitos:
-
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 quiere usar la CLI de Docker Compose para ejecutar sus 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 de AWS. Al ejecutar la imagen de Docker de AWS IoT Greengrass, debe montar la carpeta que contiene este archivo de credenciales de /root/.aws/
en el contenedor de Docker. El instalador de AWS IoT Greengrass utiliza estas credenciales para aprovisionar recursos en su Cuenta de AWS. Para obtener información sobre la política de IAM mínima que requiere el instalador para aprovisionar recursos automáticamente, consulte Política de IAM mínima para que el instalador aprovisione recursos.
-
Recuperación de uno de los siguientes elementos.
-
Credenciales a largo plazo para un usuario de IAM. Para obtener información sobre cómo recuperar credenciales a largo plazo, consulte Administrar claves de acceso para usuarios de IAM en la Guía del usuario de IAM.
-
(Recomendado) Credenciales temporales para un rol de IAM. Para obtener información sobre cómo obtener credenciales temporales, consulte Uso de credenciales de seguridad temporales con la AWS CLI en la Guía del usuario de IAM.
-
-
Cree una carpeta en la que coloque el archivo de credenciales.
mkdir ./greengrass-v2-credentials
-
Utilice un editor de texto para crear un archivo de configuración denominado
credentials
en la carpeta./greengrass-v2-credentials
.Por ejemplo, puede ejecutar el comando siguiente para usar GNU nano para crear el archivo
credentials
.nano ./greengrass-v2-credentials/credentials
-
Agregue sus credenciales de AWS al archivo
credentials
con el siguiente formato.[default] aws_access_key_id =
AKIAIOSFODNN7EXAMPLE
aws_secret_access_key =wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
aws_session_token =AQoEXAMPLEH4aoAH0gNCAPy...truncated...zrkuWJOgQs8IZZaIv2BXIa2R4Olgk
Incluya
aws_session_token
solo para credenciales temporales.
importante
Elimine el archivo de credenciales del equipo host después de iniciar el contenedor de AWS IoT Greengrass. Si no elimina el archivo de credenciales, sus credenciales de AWS permanecerán montadas dentro del contenedor. Para obtener más información, consulte Ejecución del software AWS IoT Greengrass Core en un contenedor.
Creación de un archivo de entorno
En este tutorial, se utiliza un archivo de entorno para configurar las variables de entorno que se transferirán al instalador del software AWS IoT Greengrass Core dentro del contenedor de Docker. También puede utilizar el argumento -e
o --env
docker run
para establecer variables de entorno en el contenedor de Docker o puede establecer las variables en un bloque environment
docker-compose.yml
.
-
Utilice un editor de texto para crear un archivo de política llamado
.env
.Por ejemplo, en un sistema basado en Linux, puede ejecutar el siguiente comando para usar GNU nano para crearlo en el
.env
en el directorio actual.nano .env
-
Copie el contenido siguiente en el archivo.
GGC_ROOT_PATH=
AWS_REGION=/greengrass/v2
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_groupReemplace los siguientes valores.
-
. La carpeta raíz de Greengrass que quiera usar para la instalación. Puede establecer este valor mediante la variable de entorno/greengrass/v2
GGC_ROOT
. -
region
. La Región de AWS donde creó sus recursos. -
MyGreengrassCore
. Es el nombre del objeto de AWS IoT. Si el objeto no existe, el instalador la crea. El instalador descarga los certificados para autenticarse como el objeto AWS IoT. -
MyGreengrassCoreGroup
. El nombre del grupo de objetos AWS IoT. Si el grupo de objetos no existe, el instalador lo crea y le agrega un objeto. Si el grupo de objetos existe y tiene una implementación activa, el dispositivo principal descarga y ejecuta el software que especifique la implementación. -
GreengrassV2TokenExchangeRole
. Reemplace el nombre del rol de intercambio de token de IAM que permite al dispositivo principal de Greengrass obtener credenciales de AWS temporales. Si el rol no existe, el instalador lo crea y asocia una política denominadaGreengrassV2TokenExchangeRole
Access. Para obtener más información, consulte Autorización de los dispositivos principales para interactuar con los servicios de AWS. -
GreengrassCoreTokenExchangeRoleAlias
. El alias del rol de intercambio de token. Si el alias del rol no existe, el instalador lo crea y lo dirige al rol de intercambio de token de IAM que especifique. Para obtener más información, consulte
nota
Puede configurar la variable de entorno
DEPLOY_DEV_TOOLS
atrue
para implementar el componente CLI de Greengrass, que le permite desarrollar componentes personalizados dentro del contenedor de Docker. Se recomienda usar este componente solo en entornos de desarrollo y no en entornos de producción. Este componente brinda acceso a información y operaciones que, por lo general, no necesitará en un entorno de producción. Siga el principio de privilegio mínimo al implementar este componente solo en los dispositivos principales donde lo necesite. -
Ejecución del software AWS IoT Greengrass Core 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 Core en un contenedor de Docker.
Siguientes pasos
El software AWS IoT Greengrass Core ahora se ejecuta en un contenedor de Docker. Ejecute el siguiente comando para recuperar el ID del contenedor en el contenedor de ejecución actual.
docker ps
A continuación, puede ejecutar el siguiente comando para acceder al contenedor y explorar el software AWS IoT Greengrass Core que se ejecuta dentro del contenedor.
docker exec -it
container-id
/bin/bash
Para obtener más información sobre cómo crear un componente simple, consulte Paso 4: Desarrollo y prueba de un componente en su dispositivo en Tutorial: Introducción a AWS IoT Greengrass V2
nota
Cuando utiliza docker exec
para ejecutar comandos dentro del contenedor de Docker, esos comandos no se capturan en los registros de Docker. Para registrar los comandos en los registros de Docker, asocie un intérprete de comandos interactivo al contenedor de Docker. Para obtener más información, consulte Asociación de un intérprete de comandos interactivo a un contenedor de Docker.
El archivo de registro de AWS IoT Greengrass Core se llama greengrass.log
y se encuentra en
. Los archivos de registro de componentes también se encuentran en el mismo directorio. Para copiar los registros de Greengrass en un directorio temporal del host, ejecute el siguiente comando:
/logs/greengrass/v2
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 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 Conservación de los registros de Greengrass fuera del contenedor de Docker.
/logs/greengrass/v2
Para detener un contenedor de Docker AWS IoT Greengrass en ejecución, ejecute docker
stop
o docker-compose -f docker-compose.yml stop
. Esta acción envía SIGTERM
al proceso de Greengrass y cierra todos los procesos asociados que se iniciaron en el contenedor. El contenedor de Docker se inicializa con el ejecutable docker-init
como PID 1, lo que ayuda a eliminar los procesos zombis restantes. Para obtener más información, consulte la sección Especificar un proceso de instalación
Para obtener más información acerca de la solución de problemas relacionados con la ejecución de AWS IoT Greengrass en un contenedor de Docker, consulte Solución de problemas de AWS IoT Greengrass en un contenedor Docker.