Prueba de funciones de Lambda de larga duración - 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.

Prueba de funciones de Lambda de larga duración

Una función de Lambda de larga duración se inicia automáticamente cuando se inicia el núcleo AWS IoT Greengrass y se ejecuta en un único contenedor (o entorno aislado). Las variables y la lógica de procesamiento previo que se definen fuera del controlador de la función se conservan para cada invocación del controlador de la función. Las diversas invocaciones del controlador de la función se ponen en cola hasta que se hayan ejecutado las invocaciones anteriores.

El código greengrassHelloWorldCounter.py utilizado en este módulo define una variable my_counter fuera del controlador de la función.

nota

Puede ver el código en la consola AWS Lambda o en el SDK AWS IoT Greengrass Core para Python en GitHub.

En este paso, puede crear suscripciones que permitan a la función de Lambda y a AWS IoT intercambiar mensajes MQTT. A continuación, implementará el grupo y probará la función.

  1. En la página de configuración de grupo, elija Suscripciones y, a continuación, elija Agregar.

  2. En Tipo de origen, elija Función de lambda y, a continuación, Greengrass_HelloWorld_Counter.

  3. En Tipo de destino, elija Servicio y, a continuación, Nube de IoT.

  4. En Filtro de temas, escriba hello/world/counter.

  5. Elija Crear una suscripción.

    Esta única suscripción va en una sola dirección: desde la función de Lambda Greengrass_HelloWorld_Counter hasta AWS IoT. Para invocar o activar esta función de Lambda desde la nube, deberá crear una suscripción en la dirección contraria.

  6. Siga los pasos del 1 al 5 para añadir otra suscripción que utilice los siguientes valores. Esta suscripción permite que la función de Lambda reciba mensajes de AWS IoT. Esta suscripción se utiliza cuando se envía un mensaje desde la consola de AWS IoT que invoca la función.

    • Para el origen, elija Servicios y después Nube de IoT.

    • Para el destino, elija Funciones de Lambda y después Greengrass_HelloWorld_Counter.

    • En el filtro de temas, escriba hello/world/counter/trigger.

    La extensión /trigger se utiliza en este filtro de temas porque ha creado dos suscripciones y no deben interferir entre sí.

  7. Asegúrese de que el daemon de Greengrass esté en ejecución, tal y como se describe en Implementación de configuraciones de nube en un dispositivo central.

  8. En la página de configuración de grupo, elija Implementar.

  9. Una vez que se haya completado la implementación, vuelva a la página de inicio de la consola AWS IoT y seleccione Probar.

  10. Configure los campos siguientes:

    • Para Subscription topic (Tema de suscripción), escriba hello/world/counter.

    • En Quality of Service (Calidad del servicio), seleccione 0.

    • En MQTT payload display (Visualización de la carga de MQTT), seleccione Display payloads as strings (Mostrar cargas como cadenas).

  11. Elija Subscribe.

    A diferencia de la primera parte de este módulo, no debería ver ningún mensaje después de suscribirse a hello/world/counter. Esto se debe a que el código de greengrassHelloWorldCounter.py que se publica en el tema hello/world/counter está dentro del controlador de la función, que únicamente se ejecuta cuando se invoca la función.

    En este módulo, configuró la función de Lambda Greengrass_HelloWorld_Counter para que se invocara al recibir un mensaje de MQTT sobre el tema hello/world/counter/trigger.

    La suscripción que tiene como origen Greengrass_HelloWorld_Counter y como destino IoT Cloud permite que la función envíe mensajes a AWS IoT sobre el tema hello/world/counter. La suscripción que tiene como origen IoT Cloud y como destino Greengrass_HelloWorld_Counter permite que AWS IoT envíe mensajes a la función sobre el tema hello/world/counter/trigger.

  12. Para probar el ciclo de vida de larga duración, invoque la función de Lambda publicando un mensaje en el tema hello/world/counter/trigger. Puede utilizar el mensaje predeterminado.

    Mensaje Hello predeterminado de la consola AWS IoT que se envía a hello/world/counter/trigger con el botón Publish to topic (Publicar en tema) resaltado.
    nota

    La función Greengrass_HelloWorld_Counter omite el contenido de los mensajes recibidos. Simplemente ejecuta el código de function_handler, que envía un mensaje al tema hello/world/counter. Puede consultar este código en la página SDK AWS IoT Greengrass Core para Python en GitHub.

Cada vez que se publica un mensaje en el tema hello/world/counter/trigger, la variable my_counter se incrementa. Este recuento de invocaciones se muestra en los mensajes enviados de la función de Lambda. Como el controlador de la característica contiene un ciclo de suspensión de 20 segundos (time.sleep(20)), si el controlador se activa repetidamente, las respuestas procedentes del núcleo AWS IoT Greengrass se pondrán en cola.

Captura de pantalla que muestra el incremento de Invocation Count (Recuento de invocación) de 1 a 2 y finalmente a 3.