Integración con servicios y protocolos mediante conectores de 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.

Integración con servicios y protocolos mediante conectores de Greengrass

Esta característica está disponible para AWS IoT Greengrass Core versión 1.7 y versiones posteriores.

Los conectores en AWS IoT Greengrass son módulos preconstruidos que hacen más eficaz la interacción con la infraestructura local, los protocolos de los dispositivos, AWS, y otros servicios en la nube. Usando conectores le permitirá dedicar menos tiempo a aprender nuevos protocolos e interfaces API, y más tiempo a centrarse en la lógica importante para su negocio.

El siguiente diagrama muestra dónde encajan los conectores en el entorno de AWS IoT Greengrass .


            Los conectores se conectan a dispositivos, servicios y recursos locales.

Muchos conectores utilizan mensajes de MQTT para comunicarse con dispositivos y funciones de Lambda del grupo o con AWS IoT y el servicio de sombra local. En el siguiente ejemplo, el conector de notificaciones de Twilio recibe mensajes MQTT de una función de Lambda definida por el usuario, utiliza una referencia local de un secreto de AWS Secrets Manager, y llama a la API de Twilio.


            Un conector recibe un mensaje MQTT de una función de Lambda y llama a un servicio.

Para ver tutoriales que crean esta solución, consulte Introducción a los conectores de Greengrass (consola) y Introducción a los conectores de Greengrass (CLI).

Los conectores de Greengrass pueden ayudarle a ampliar las posibilidades del dispositivo o crear dispositivos de una sola finalidad. Mediante el uso de conectores, puede:

  • Implementar una lógica de negocio reutilizable.

  • Interactuar con servicios locales y de nube, incluidos los servicios de AWS y de terceros.

  • Adquirir y procesar los datos del dispositivo.

  • Habilitar las llamadas de un dispositivo a otro con suscripciones de temas de MQTT y funciones de Lambda definidas por el usuario.

AWS ofrece un conjunto de conectores de Greengrass que simplifican las interacciones con los servicios comunes y los orígenes de datos. Estos módulos preconfigurados, permiten escenarios para el registro y diagnóstico, reabastecimiento, procesamiento de datos industriales, alarma y mensajería. Para obtener más información, consulte conectores de Greengrass proporcionados por AWS.

Requisitos

Para usar conectores, tenga en cuenta lo siguiente:

  • Cada conector que utilice tiene unos requisitos que debe cumplir. Estos requisitos pueden incluir la versión mínima del software AWS IoT Greengrass Core, los requisitos previos del dispositivo, los permisos necesarios y los límites. Para obtener más información, consulte conectores de Greengrass proporcionados por AWS.

  • Un grupo Greengrass sólo puede contener una instancia configurada de un conector determinado. Sin embargo, puede utilizar la instancia en varias suscripciones. Para obtener más información, consulte Parámetros de configuración.

  • Cuando la creación de contenedores predeterminada para el grupo de Greengrass se establece en Sin contenedor, los conectores del grupo deben ejecutarse sin creación de contenedores. Para buscar conectores compatibles con el modo Sin contenedor, consulte conectores de Greengrass proporcionados por AWS.

Uso de conectores de Greengrass

Un conector es un tipo de componente del grupo. Al igual que otros componentes del grupo, como dispositivos cliente y funciones de Lambda definidas por el usuario, puede agregar conectores a los grupos, configurarlos e implementarlos en el nucleo AWS IoT Greengrass. Los conectores se ejecutan en el entorno de núcleo.

Algunos conectores pueden implementarse como aplicaciones independientes simples. Por ejemplo, el conector Device Defender lee las métricas del sistema del dispositivo central y las envía a AWS IoT Device Defender para su análisis.

Puede añadir otros conectores como bloques de construcción en soluciones más amplias. La siguiente solución de ejemplo utiliza el conector Adaptador de protocolo Modbus-RTU para procesar los mensajes de los sensores y el conector Notificaciones Twilio para iniciar los mensajes Twilio.


                Flujo de datos desde la función de Lambda al conector del adaptador de protocolo Modbus-RTU a la función de Lambda al conector de notificaciones de Twilio a Twilio.

Las soluciones suelen incluir funciones de Lambda definidas por el usuario que se colocan junto a los conectores y procesan los datos que el conector envía o recibe. En este ejemplo, la función TempMonitor recibe datos del adaptador de protocolo Modbus-RTU, ejecuta cierta lógica empresarial y, a continuación, envía datos a Twilio Notifications.

Para crear e implementar una solución, debe seguir este proceso general:

  1. Planificar el flujo de datos de alto nivel. Identificar los orígenes de datos, los canales de datos, los servicios, los protocolos y los recursos con los que necesita trabajar. En la solución de ejemplo, esto incluye los datos a través del protocolo Modbus RTU, el puerto de serie Modbus físico y Twilio.

  2. Identificar los conectores que se incluirán en la solución y añadirlos a su grupo. La solución de ejemplo utiliza el adaptador de protocolo Modbus-RTU y las notificaciones de Twilio. Para ayudarle a detectar los conectores aplicables a su situación y para ver más información acerca de sus requisitos individuales, consulte conectores de Greengrass proporcionados por AWS.

  3. Identificar si las funciones de Lambda definidas por el usuario, dispositivos cliente o recursos son necesarios y, a continuación, crearlas y añadirlas al grupo. Esto podría incluir funciones que contienen lógica de negocio o procesar datos en un formato requerido por otra entidad en la solución. La solución de ejemplo utiliza funciones para enviar las solicitudes Modbus RTU e iniciar notificaciones Twilio. También incluye un recurso de dispositivo local para el puerto de serie Modbus RTU y un recurso de secreto para el token de autenticación de Twilio.

    nota

    Los recursos de secreto hacen referencia a contraseñas, tokens y otros secretos de AWS Secrets Manager. Los conectores y las funciones de Lambda pueden usar secretos para autenticar con servicios y aplicaciones. De forma predeterminada, AWS IoT Greengrass puede obtener acceso a los secretos cuyos nombres empiezan por greengrass-. Para obtener más información, consulte Implementación de secretos en el núcleo de AWS IoT Greengrass.

  4. Crear las suscripciones que permiten que las entidades de la solución intercambien mensajes MQTT. Si un conector se utiliza en una suscripción, el conector y el origen o destino del mensaje deben utilizar la sintaxis de tema predefinida compatible con el conector. Para obtener más información, consulte Entradas y salidas.

  5. Implementar el grupo en el núcleo de Greengrass.

Para obtener información acerca de cómo crear e implementar un conector, consulte los siguientes tutoriales:

Parámetros de configuración

Muchos conectores proporcionan parámetros que permiten personalizar su comportamiento o su salida. Estos parámetros se utilizan durante la inicialización, el tiempo de ejecución o en otros momentos en el ciclo de vida del conector.

Los tipos de parámetros y su uso varían según el conector. Por ejemplo, el conector SNS tiene un parámetro que configura el tema SNS por defecto, y Device Defender tiene un parámetro que configura la frecuencia de muestreo de datos.

Una versión de grupo puede contener varios conectores, pero solo una instancia de un determinado conector a la vez. Esto significa que cada conector del grupo solamente puede tener una configuración activa. Sin embargo, la instancia del conector puede utilizarse en diferentes suscripciones del grupo. Por ejemplo, puede crear suscripciones que permitan a muchos dispositivos enviar datos al conector Kinesis Firehose.

Parámetros utilizados para acceder a recursos de grupo

Los conectores de Greengrass utilizan recursos de grupo para obtener acceso al sistema de archivos, puertos, periféricos y otros recursos locales en el dispositivo principal. Si un conector requiere acceso a un recurso de grupo, proporciona parámetros de configuración relacionados.

Los recursos de grupo incluyen:

  • Recursos locales. Los directorios, archivos, puertos, pines y periféricos que están presentes en el dispositivo del núcleo de Greengrass.

  • Recursos de machine learning. Los modelos de machine learning que se utilizan en la nube y se implementan en el núcleo para la inferencia local.

  • Recurso de secreto. Locales, copias cifradas de contraseñas, claves, tokens o texto arbitrario de AWS Secrets Manager. Los conectores pueden acceder de manera segura a estos secretos locales y utilizarlos para autenticarse en los servicios o en la infraestructura local.

Por ejemplo, los parámetros para Device Defender permiten acceder a las métricas del sistema en el directorio /proc del host, y los parámetros para Twilio Notifications permiten acceder a un token de autenticación Twilio almacenado localmente.

Actualización de parámetros de conectores

Los parámetros se configuran cuando el conector se añade a un grupo de Greengrass. Puede cambiar los valores de los parámetros después de añadir un conector.

  • En la consola: en la página de configuración de grupo, abra Connectors (Conectores) y desde el menú contextual del conector, seleccione Edit (Editar).

    nota

    Si el conector utiliza un recurso de secreto que más adelante cambia para hacer referencia a otro secreto, debe editar los parámetros del conector y confirmar el cambio.

  • En la API: cree otra versión del conector que defina la nueva configuración.

    La API de AWS IoT Greengrass usa versiones para administrar grupos. Las versiones son inmutables, por lo que para añadir o cambiar los componentes del grupo (por ejemplo, los dispositivos cliente, las funciones y los recursos del grupo), debe crear versiones de los componentes nuevos o actualizados. A continuación, cree e implemente una versión de grupo que contenga la versión de destino de cada componente.

Después de realizar cambios en la configuración del conector, debe implementar el grupo para propagar los cambios en el núcleo.

Entradas y salidas

Muchos conectores de Greengrass pueden comunicarse con otras entidades enviando y recibiendo mensajes MQTT. Esta comunicación MQTT se controla mediante suscripciones que permiten a un conector intercambiar datos con las funciones de Lambda, los dispositivos y otros conectores dentro del grupo de Greengrass, o con AWS IoT y el servicio de sombra local. Para permitir esta comunicación, debe crear suscripciones en el grupo al que pertenece el conector. Para obtener más información, consulte Suscripciones administradas en el flujo de trabajo de mensajería de MQTT.

Los conectores pueden ser suscriptores de mensajes, publicadores de mensajes o ambos. Cada conector define los temas de MQTT a los que se suscribe o en los que publica. Estos temas predefinidos deben utilizarse en las suscripciones en las que el conector sea un origen de mensaje o destino de mensaje. Para ver tutoriales con pasos para configurar suscripciones para un conector, consulte Introducción a los conectores de Greengrass (consola) y Introducción a los conectores de Greengrass (CLI).

nota

Muchos conectores también disponen de modos integrados de comunicación para interactuar con servicios locales o en la nube. Estos varían según el conector y podrían requerir configurar parámetros o agregar permisos al rol de grupo. Para obtener información sobre los requisitos de los conectores, consulte conectores de Greengrass proporcionados por AWS.

Temas de entrada

La mayoría de los conectores reciben datos de entrada sobre temas de MQTT. Algunos conectores se suscriben a varios temas para los datos de entrada. Por ejemplo, el conector Serial Stream admite dos temas:

  • serial/+/read/#

  • serial/+/write/#

Para este conector, las solicitudes de lectura y escritura se envían al tema correspondiente. Al crear las suscripciones, asegúrese de que se va a utilizar el tema que se adapte a su implementación.

Los caracteres + y # en los ejemplos anteriores son comodines. Estos comodines permiten que los suscriptores reciban mensajes sobre varios temas y que los editores personalicen los temas que publican.

  • El comodín + puede aparecer en cualquier lugar de la jerarquía de temas. Se puede sustituir por un elemento de la jerarquía.

    Por ejemplo, en el caso del tema sensor/+/input, los mensajes se pueden publicar en los temas sensor/id-123/input, pero no en sensor/group-a/id-123/input.

  • El comodín # puede aparecer solo al final de la jerarquía de temas. Se puede sustituir por cualquier número de elementos de la jerarquía, incluso ninguno.

    Por ejemplo, en el caso del tema sensor/#, los mensajes se pueden publicar en sensor/, sensor/id-123 y sensor/group-a/id-123, pero no en sensor.

Los caracteres comodín solo son válidos al suscribirse a temas. Los mensajes no se pueden publicar en temas que contengan comodines. Consulte la documentación del conector para obtener más información sobre los requisitos de su tema de entrada o salida. Para obtener más información, consulte conectores de Greengrass proporcionados por AWS.

Soporte de creación de contenedores

De forma predeterminada, la mayoría de los conectores se ejecutan en el núcleo de Greengrass en un entorno de tiempo de ejecución aislado administrado por AWS IoT Greengrass. Estos entornos de tiempo de ejecución, denominados contenedores, proporcionan aislamiento entre los conectores y el sistema del host, lo que ofrece más seguridad para el host y el conector.

Sin embargo, esta creación de contenedores de Greengrass no es compatible en algunos entornos, como la ejecución de AWS IoT Greengrass en un contenedor de Docker o en núcleos Linux antiguos sin cgroups. En estos entornos, los conectores deben ejecutarse en modo Sin contenedor . Para buscar conectores compatibles con el modo Sin contenedor, consulte conectores de Greengrass proporcionados por AWS. Algunos conectores se ejecutan en este modo de forma nativa, y algunos conectores le permiten establecer el modo de aislamiento.

También puede establecer el modo de aislamiento en Sin contenedor en entornos que admiten la creación de contenedores de Greengrass, pero se recomienda utilizar el modo contenedor Greengrass cuando sea posible.

nota

La configuración de creación de contenedores predeterminada para el grupo Greengrass no se aplica a los conectores.

Actualización de versiones de los conectores

Los proveedores de conectores pueden lanzar nuevas versiones de un conector que agregan características, solucionan problemas o mejoran el rendimiento. Para obtener información sobre las versiones disponibles y los cambios relacionados, consulte la documentación de cada conector.

En la consola AWS IoT, puede buscar nuevas versiones para los conectores de su grupo Greengrass.

  1. En el panel de navegación de la consola AWS IoT, en Administrar, expanda los dispositivos Greengrass y, a continuación, elija Grupos (V1).

  2. En Grupos de Greengrass, elija su grupo.

  3. Elija Connectors (Conectores) para mostrar los conectores del grupo.

    Si el conector tiene una nueva versión, aparecerá un botón Available (Disponible) en la columna Upgrade (Actualizar).

  4. Para actualizar la versión del conector:

    1. En la página Connectors (Conectores) en la columna Upgrade (Actualizar) seleccione Available (Disponible). Se abre la página Upgrade connector (Actualizar conector) y muestra los parámetros actuales, cuando corresponda.

      Elija la nueva versión del conector, defina los parámetros según sea necesario y, a continuación, elija Upgrade (Actualizar).

    2. En la página Subscriptions (Suscripciones) agregue nuevas suscripciones al grupo para reemplazar las que utilicen el conector como origen o destino. A continuación, elimine las suscripciones antiguas.

      Las suscripciones hacen referencia a conectores por versión, por lo que no son válidos si cambia la versión del conector en el grupo.

    3. En el menú Actions (Acciones) elija Deploy (Implementar) para implementar los cambios en el núcleo.

Para actualizar un conector desde la API de AWS IoT Greengrass, cree e implemente una versión de grupo que incluya el conector actualizado y las suscripciones. Utilice el mismo proceso que al agregar un conector a un grupo. Para ver los pasos detallados que le muestran cómo utilizar el AWS CLI para configurar y desplegar un conector de Twilio Notifications de ejemplo, consulte Introducción a los conectores de Greengrass (CLI).

Registro de conectores

Los conectores de Greengrass contienen funciones de Lambda que escriben eventos y errores en los registros de Greengrass. En función de su configuración del grupo, los registros se escriben en CloudWatch Logs, el sistema de archivos local o ambos. Los registros de los conectores incluyen el ARN de la característica correspondiente. El siguiente ejemplo de ARN procede del conector Kinesis Firehose:

arn:aws:lambda:aws-region:account-id:function:KinesisFirehoseClient:1

La configuración de registro predeterminada escribe los registros de nivel de información en el sistema de archivos mediante la siguiente estructura de directorios:

greengrass-root/ggc/var/log/user/region/aws/function-name.log

Para obtener más información sobre los registros de Greengrass, consulte Monitorización con registros de AWS IoT Greengrass.