Introducción a los conectores de Greengrass (consola) - 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.

Introducción a los conectores de Greengrass (consola)

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

Este tutorial muestra cómo utilizar la AWS Management Console para trabajar con conectores.

Utilice conectores para acelerar el ciclo de vida de desarrollo. Los conectores son módulos precompilados y reutilizables que puede simplificar la interacción con los servicios, los protocolos y los recursos. Pueden ayudarle a implementar la lógica de negocio en los dispositivos de Greengrass con mayor rapidez. Para obtener más información, consulte Integración con servicios y protocolos mediante conectores de Greengrass.

En este tutorial configurará e implementará el conector de Notificaciones de Twilio. El conector recibe la información del mensaje de Twilio como datos de entrada y, a continuación, desencadena un mensaje de texto de Twilio. El flujo de datos se muestra en el siguiente diagrama.

Flujo de datos de la función de Lambda al conector de Notificaciones de Twilio a Twilio.

Después de configurar el conector, debe crear una función de Lambda y una suscripción.

  • La función evalúa los datos simulados desde un sensor de temperatura. Publica condicionalmente la información del mensaje de Twilio a un tema de MQTT. Este es el tema al que se suscribe el conector.

  • La suscripción permite que la función se publique en el tema y que el conector reciba datos del tema.

El conector de Notificaciones de Twilio necesita un token de autenticación de Twilio para interactuar con la API de Twilio. El token es un secreto de tipo de texto creado en AWS Secrets Manager y al que se hace referencia desde un recurso de grupo. Esto permite a AWS IoT Greengrass crear una copia local del secreto en el núcleo de Greengrass, donde se cifra y se convierte en disponible para el conector. Para obtener más información, consulte Implementación de secretos en el núcleo de AWS IoT Greengrass.

El tutorial contiene los siguientes pasos generales:

Completar el tutorial debería tomarle aproximadamente 20 minutos.

Requisitos previos

Para completar este tutorial, se necesita lo siguiente:

  • Un grupo de Greengrass y un núcleo de Greengrass (v1.9.3 o posterior). Para obtener información acerca de cómo crear un núcleo y un grupo de Greengrass, consulte Introducción a AWS IoT Greengrass. El tutorial de introducción también incluye pasos para instalar el software AWS IoT Greengrass Core.

  • Python 3.7 instalado en el dispositivo central de AWS IoT Greengrass.

  • AWS IoT Greengrass debe configurarse para admitir secretos locales, como se describe en Requisitos de secretos.

    nota

    Este requisito incluye permitir el acceso a sus secretos de Secret Manager. Si utiliza el rol de servicio predeterminado de Greengrass, Greengrass tiene permiso para obtener los valores de los secretos cuyos nombres empiecen por greengrass-.

  • Un SID de una cuenta de Twilio, un token de autenticación y un número de teléfono habilitado para Twilio. Después de crear un proyecto de Twilio, estos valores están disponibles en el panel del proyecto.

    nota

    Puede utilizar una cuenta de prueba de Twilio. Si utiliza una cuenta de prueba, debe añadir números de teléfono de destinatarios que no sean de Twilio a una lista de números de teléfono verificados. Para obtener más información, consulte Cómo trabajar con su cuenta de prueba gratuita de Twilio.

Paso 1: Crear un secreto de Secrets Manager

En este paso, utilice la consola AWS Secrets Manager para crear un secreto de tipo de texto para su token de autenticación de Twilio.

  1. Inicie sesión en la consola de AWS Secrets Manager.

    nota

    Para obtener más información sobre este proceso, consulte Paso 1: Crear y almacenar el secreto en AWS Secrets Manager en la Guía del usuario de AWS Secrets Manager.

  2. Elija Store a new secret (Almacenar un nuevo secreto).

  3. En Seleccionar tipo de secreto, elija Otro tipo de secretos.

  4. En Specify the key/value pairs to be stored for this secret (Especificar los pares clave-valor que se almacenarán para este secreto), en la pestaña Plaintext (Texto no cifrado), escriba su token de autenticación de Twilio. Quite todo el formato JSON e introduzca solo el valor del token.

  5. Mantenga aws/secretsmanager seleccionado para la clave de cifrado y, a continuación, seleccione Siguiente.

    nota

    AWS KMS no le cobrará si utiliza la clave administrada de AWS predeterminada que Secrets Manager crea en su cuenta.

  6. En Secret name (Nombre del secreto), escriba greengrass-TwilioAuthToken y, a continuación, seleccione Next (Siguiente).

    nota

    De forma predeterminada, el rol de servicio Greengrass permite a AWS IoT Greengrass obtener el valor de los secretos con nombres que comienzan por greengrass-. Para obtener más información, consulte requisitos de secretos.

  7. Este tutorial no requiere rotación, así que elija desactivar la rotación automática y, a continuación, seleccione Siguiente.

  8. En la página Review (Revisar), revise los ajustes y, a continuación, seleccione Store (Almacenar).

    A continuación, se crea un recurso de secreto en su grupo de Greengrass que hace referencia al secreto.

Paso 2: Agregar un recurso de secreto a un grupo de Greengrass

En este paso, va a añadir un recurso de secreto al grupo de Greengrass. Este recurso es una referencia al secreto que creó en el paso anterior.

  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. Elija el grupo al que desee añadir el recurso de secreto.

  3. En la página de configuración del grupo, elija la pestaña Recursos y, a continuación, desplácese hacia abajo hasta la sección Secretos. La sección Secretos muestra los recursos secretos que pertenecen al grupo. Puede añadir, editar y quitar los recursos de secreto de esta sección.

    nota

    Como alternativa, la consola le permite crear un secreto y un recurso secreto al configurar un conector o una función de Lambda. Puede hacerlo desde la página Configurar parámetros del conector o desde la página Recursos de la función de Lambda.

  4. Seleccione Añadir en la sección Secretos.

  5. En la página Añadir un recurso secreto, introduzca MyTwilioAuthToken el nombre del recurso.

  6. Para el secreto, elija Greengrass-TwilioAuthToken.

  7. En la sección Seleccionar etiquetas (opcional), la etiqueta provisional AWSCURRENT representa la versión más reciente del secreto. Esta etiqueta siempre está incluida en un recurso de secreto.

    nota

    Este tutorial solo requiere la etiqueta AWSCURRENT. De forma opcional, puede incluir etiquetas que requieran su función de Lambda o un conector.

  8. Seleccione Add resource (Añadir recurso).

Paso 3: Agregar un conector al grupo de Greengrass

En este paso va a configurar parámetros para el conector Notificaciones de Twilio y añadirlo al grupo.

  1. En la página de configuración de grupo, elija Connectors (Conectores) y, a continuación, elija Add a connector (Añadir un conector).

  2. En la página Añadir conector, selecciona Notificaciones de Twilio.

  3. Elija la versión .

  4. En la sección Configuración:

    • Para el recurso de token de autenticación de Twilio, introduzca el recurso que creó en el paso anterior.

      nota

      Cuando se introduce el recurso, la propiedad ARN de secreto de token de autenticación de Twilio se rellena automáticamente.

    • En Default from phone number (Predeterminado de número de teléfono), introduzca su número de teléfono habilitado para Twilio.

    • Para Twilio account SID (SID de cuenta de Twilio), introduzca su SID de cuenta de Twilio.

  5. Seleccione Add resource (Añadir recurso).

Paso 4: Crear un paquete de implementación de la función de Lambda

Para crear una función de Lambda, primero debe crear un paquete de implementación de funciones de Lambda que contenga el código de la función y las dependencias. Las funciones de Lambda de Greengrass requieren el SDK de AWS IoT Greengrass Core para tareas como la comunicación con los mensajes de MQTT en el entorno principal y el acceso a los secretos locales. En este tutorial se crea una característica de Python para que utilices la versión Python del SDK en el paquete de implementación.

  1. Desde la página de descargas del Core SDK AWS IoT Greengrass, descargue el SDK AWS IoT Greengrass básico para Python en su ordenador.

  2. Descomprima el paquete descargado para obtener el SDK. El SDK es la carpeta greengrasssdk.

  3. Guarde la siguiente función de código de Python en un archivo local llamado "temp_monitor.py".

    import greengrasssdk import json import random client = greengrasssdk.client('iot-data') # publish to the Twilio Notifications connector through the twilio/txt topic def function_handler(event, context): temp = event['temperature'] # check the temperature # if greater than 30C, send a notification if temp > 30: data = build_request(event) client.publish(topic='twilio/txt', payload=json.dumps(data)) print('published:' + str(data)) print('temperature:' + str(temp)) return # build the Twilio request from the input data def build_request(event): to_name = event['to_name'] to_number = event['to_number'] temp_report = 'temperature:' + str(event['temperature']) return { "request": { "recipient": { "name": to_name, "phone_number": to_number, "message": temp_report } }, "id": "request_" + str(random.randint(1,101)) }
  4. Comprima en un archivo ZIP los siguientes elementos en un archivo denominado "temp_monitor_python.zip". Al crear el archivo ZIP, incluya únicamente el código y sus dependencias, no la carpeta donde se encuentran.

    • temp_monitor.py. Lógica de la aplicación.

    • greengrasssdk. Biblioteca necesaria para las funciones de Lambda de Python Greengrass que publican mensajes MQTT.

    Este es el paquete de implementación de la función de Lambda.

Ahora, cree una función de Lambda que use el paquete de implementación.

Paso 5: Crear una segunda función de Lambda en la consola de AWS Lambda

En este paso, va a utilizar la consola de AWS Lambda para crear una función de Lambda y va a configurarla para utilizar el paquete de implementación. A continuación, publicará una versión de la característica y creará un alias.

  1. Primero, cree una función de Lambda.

    1. En la AWS Management Console, elija Servicios y abra la consola de AWS Lambda.

    2. Elija Crear función, y, a continuación, elija Autor desde cero.

    3. En la sección Basic information (Información básica), utilice los siguientes valores:

      • En Function name (Nombre de la función), introduzca TempMonitor.

      • En Runtime (Tiempo de ejecución), elija Python 3.7.

      • En Permisos, mantenga la configuración predeterminada. Esto crea un rol de ejecución que otorga permisos Lambda básicos. AWS IoT Greengrass no utiliza este rol.

    4. En la parte inferior de la página, elija Create function.

  2. A continuación, registre el controlador y cargue el paquete de implementación de la función de Lambda.

    1. En la pestaña Código, en Código fuente, seleccione Cargar desde. En el menú desplegable, seleccione un archivo .zip..

      
                La carga del menú desplegable con el archivo .zip resaltado.
    2. Seleccione Cargar y, a continuación, elija su paquete de implementación temp_monitor_python.zip. A continuación, elija Guardar.

    3. En la pestaña Código de la función, en Configuración de tiempo de ejecución, elija Editar y, a continuación, introduzca los siguientes valores.

      • En Runtime (Tiempo de ejecución), elija Python 3.7.

      • En Handler (Controlador), escriba temp_monitor.function_handler.

    4. Seleccione Save.

      nota

      El botón de prueba de la consola de AWS Lambda no funciona con esta función. El SDK AWS IoT Greengrass Core no contiene los módulos necesarios para ejecutar las funciones de Lambda de Greengrass de forma independiente en la consola AWS Lambda. Estos módulos (por ejemplo, greengrass_common) se suministran a las funciones una vez desplegados en el núcleo de Greengrass.

  3. Ahora, publique la primera versión de su función de Lambda y cree un alias para la versión.

    nota

    Los grupos de Greengrass pueden hacer referencia a una función de Lambda por versión o alias (recomendado). El uso de un alias facilita la gestión de las actualizaciones del código porque no tiene que cambiar la tabla de suscripción o la definición del grupo cuando se actualiza el código de la función. En su lugar, basta con apuntar el alias a la nueva versión de la función.

    1. En el menú Actions, elija Publish new version.

    2. En Version description (Descripción de versión), escriba First version y, a continuación, elija Publish (Publicar).

    3. En la página de configuración de TempMonitor: 1, en el menú Actions (Acciones), elija Create alias (Crear alias).

    4. En la página Create a new alias, utilice los valores siguientes:

      • En Name (Nombre), ingrese GG_TempMonitor.

      • En Version (Versión), elija 1.

      nota

      AWS IoT Greengrass no admite alias de Lambda; para versiones de $LATEST.

    5. Seleccione Create (Crear).

Ahora está preparado para añadir la función de Lambda al grupo de Greengrass.

Paso 6: Agregar una función de Lambda al grupo de Greengrass

En este paso, va a añadir la función de Lambda al grupo y a configurar el ciclo de vida y las variables de entorno. Para obtener más información, consulte Control de la ejecución de funciones de Greengrass Lambda utilizando la configuración específica del grupo.

  1. En la página de configuración del grupo, elija la pestaña Funciones de Lambda.

  2. En la sección Mis funciones de Lambda, seleccione Añadir.

  3. En la página Agregar función de Lambda, elija TempMonitor para la función de Lambda.

  4. Para la versión de la función de Lambda, elija Alias: GG_TempMonitor.

  5. Elija Añadir función de Lambda.

Paso 7: Agregar suscripciones al grupo de Greengrass

En este paso añadirá una suscripción que habilita la función de Lambda para enviar datos de entrada al conector. El conector define los temas de MQTT a los que se suscribe, por lo que esta suscripción utiliza uno de los temas. Este es el mismo tema en el que se publica la función de ejemplo.

En este tutorial también creará suscripciones que permitan a la función recibir lecturas de temperatura simuladas de AWS IoT y permitan a AWS IoT recibir información sobre el estado del conector.

  1. En la página de configuración del grupo, elija la pestaña Suscripciones y, a continuación, elija Añadir suscripción.

  2. En la página Crear una suscripción, configure el origen y el destino de la siguiente manera:

    1. Para Tipo de origen, elija Función de lambda y, a continuación, TempMonitor.

    2. Para Tipo de destino, seleccione Conector y, a continuación, seleccione Notificaciones de Twilio.

  3. En el Filtro de temas, escriba twilio/txt.

  4. Elija Crear una suscripción.

  5. Repita los pasos del 1 al 4 para crear una suscripción que permita a AWS IoT publicar mensajes en la función.

    1. Para Tipo de origen, elija Servicio y, a continuación, Nube de IoT.

    2. En Seleccionar un destino, elija Funciones de Lambda y, a continuación, elija TempMonitor.

    3. En Topic filter (Filtro de temas), escriba temperature/input.

  6. Repita los pasos del 1 al 4 para crear una suscripción que permita al conector publicar mensajes en AWS IoT.

    1. Para Tipo de origen, seleccione Conector y, a continuación, seleccione Notificaciones de Twilio.

    2. Para Tipo de destino, elija Servicio y, a continuación, Nube de IoT.

    3. En Topic filter (Filtro de temas), se introduce twilio/message/status automáticamente. Este es el tema predefinido en el que publica el conector.

Paso 8: Implementar el grupo de Greengrass

Implemente el grupo en el dispositivo del núcleo.

  1. Asegúrese de que el núcleo de AWS IoT Greengrass se está ejecutando. Ejecute los siguientes comandos en el terminal de Raspberry Pi según sea 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/ggc-version/bin/daemon, el daemon está en ejecución.

      nota

      La versión que figura en la ruta depende de la versión del software AWS IoT Greengrass Core que esté instalada en el dispositivo del núcleo.

    2. Iniciar el daemon:

      cd /greengrass/ggc/core/ sudo ./greengrassd start
  2. En la página de configuración de grupo, elija Implementar.

    1. En la pestaña Funciones de Lambda, en la sección Funciones de Lambda del sistema, seleccione Detector IP y elija Editar.

    2. En el cuadro de diálogo Editar configuración del detector IP, seleccione Detectar y anular automáticamente los puntos de conexión del agente MQTT.

    3. Seleccione Save.

      Esto permite a los dispositivos adquirir automáticamente la información de conexión del dispositivo principal, como la dirección IP, el DNS y el número de puerto. Se recomienda la detección automática, pero AWS IoT Greengrass también es compatible con puntos de conexión especificados manualmente. Solo se le solicitará el método de detección la primera vez que se implemente el grupo.

      nota

      Si se le solicita, conceda permiso para crear el rol de servicio de Greengrass y asócielo a su Cuenta de AWS en el Región de AWS actual. Este rol permite a AWS IoT Greengrass acceder a los servicios de AWS.

      En la página Deployments (Implementaciones), se muestra la marca temporal, el ID de versión y el estado de la implementación. Una vez terminada, la implementación debería mostrar el estado Completado.

      Para obtener ayuda sobre la resolución de problemas, consulte Solución de problemas de AWS IoT Greengrass.

nota

Un grupo de Greengrass solo puede contener una versión del conector a la vez. Para obtener información sobre cómo actualizar una versión de conector, consulte Actualización de versiones de los conectores.

Probar la solución

  1. En la página de inicio de la consola AWS IoT, elija Pruebas.

  2. Para Suscribirse al tema, utilice los siguientes valores y, a continuación, seleccione Suscribirse. El conector Notificaciones de Twilio publica información sobre el estado en este tema.

    Propiedad

    Valor

    Subscription topic

    twilio/message/status

    Visualización de la carga de MQTT

    Display payloads as strings

  3. Para Publicar en tema, utilice los siguientes valores y, a continuación, seleccione Publicar para invocar la función.

    Propiedad

    Valor

    Tema

    temperature/input

    Mensaje

    Sustituya recipient-name con un nombre y recipient-phone-number con el número de teléfono del destinatario del mensaje de texto. Ejemplo: +12345000000

    { "to_name": "recipient-name", "to_number": "recipient-phone-number", "temperature": 31 }

    Si utiliza una cuenta de prueba, debe añadir números de teléfono de destinatarios que no sean de Twilio a una lista de números de teléfono verificados. Para obtener más información, consulte Verificar su número de teléfono personal.

    Si se ejecuta correctamente, el destinatario recibe el mensaje de texto y la consola muestra el estado success de los datos de salida.

    Ahora, cambie el valor de temperature en el mensaje de entrada a 29 y publíquelo. Dado que es menos de 30, la función TempMonitor no activa un mensaje de Twilio.

Véase también