

Aviso de fin de soporte: el 7 de octubre de 2026, AWS suspenderemos el soporte para AWS IoT Greengrass Version 1. Después del 7 de octubre de 2026, ya no podrá acceder a los AWS IoT Greengrass V1 recursos. Para obtener más información, visita [Migrar desde AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html).

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.

# Módulo 3 (parte 1): Funciones Lambda en AWS IoT Greengrass
<a name="module3-I"></a>

Este módulo le muestra cómo crear e implementar una función Lambda que envíe mensajes MQTT desde su AWS IoT Greengrass dispositivo principal. El módulo describe las configuraciones de funciones de Lambda, las suscripciones utilizadas para permitir los mensajes de MQTT y las implementaciones en un dispositivo principal.

[El módulo 3 (parte 2)](module3-II.md) cubre las diferencias entre las funciones Lambda bajo demanda y las de larga duración que se ejecutan en el AWS IoT Greengrass núcleo.

Antes de empezar, asegúrese de haber completado los [módulos 1](module1.md) y [2](module2.md) y de tener un dispositivo AWS IoT Greengrass central en funcionamiento.

**sugerencia**  
O bien, para utilizar un script que configure el dispositivo principal automáticamente, consulte [Inicio rápido: configuración del dispositivo Greengrass](quick-start.md). El script también puede crear e implementar la función de Lambda utilizada en este módulo.

Completar este módulo debería tomarle aproximadamente 30 minutos.

**Topics**
+ [Crear y empaquetar una función de Lambda](create-lambda.md)
+ [Configurar la función Lambda para AWS IoT Greengrass](config-lambda.md)
+ [Implementar configuraciones de nube en un dispositivo central de Greengrass](configs-core.md)
+ [Verificación de la ejecución de la función de Lambda en el dispositivo central](lambda-check.md)

# Crear y empaquetar una función de Lambda
<a name="create-lambda"></a>

La función de Lambda de Python de ejemplo de este módulo utiliza el [SDK AWS IoT Greengrass Core](lambda-functions.md#lambda-sdks-core) de Python para publicar mensajes de MQTT.

En este paso:
+ Descarga el SDK AWS IoT Greengrass principal para Python en tu ordenador (no en el dispositivo AWS IoT Greengrass principal).
+ Creará un paquete de implementación de funciones de Lambda que contiene código de característica y dependencias.
+ Utilizará la consola de Lambda para crear una función de Lambda y cargar el paquete de implementación.
+ Publicará una versión de la función de Lambda y creará un alias que apunte a la versión.

Para completar este módulo, Python 3.7 debe estar instalado en su dispositivo principal.

 <a name="create-lambda-procedure"></a>

1. <a name="download-ggc-sdk"></a> Desde la página de descargas del [SDK AWS IoT Greengrass principal](what-is-gg.md#gg-core-sdk-download), descarga el SDK AWS IoT Greengrass básico para Python en tu ordenador.

1. Descomprimir el paquete descargado para obtener el código de la función de Lambda y el SDK.

   La función de Lambda de este módulo utiliza:
   + El archivo `greengrassHelloWorld.py` en `examples\HelloWorld`. Este es el código de la función de Lambda. Cada cinco segundos, la característica publica uno de los dos mensajes posibles en el tema de `hello/world`.
   + La carpeta `greengrasssdk`. Este es el SDK.

1. Copie la carpeta `greengrasssdk` en la carpeta `HelloWorld` que contiene `greengrassHelloWorld.py`.

1. Para crear el paquete de implementación de la función de Lambda, guarde `greengrassHelloWorld.py` y la carpeta `greengrasssdk` en un archivo `zip` comprimido denominado `hello_world_python_lambda.zip`. El archivo `py` y la carpeta `greengrasssdk` deben estar en la raíz del directorio.  
![\[Captura de pantalla que muestra el contenido comprimido de hello_word_python_lambda.zip.\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/images/gg-get-started-017.png)

   En sistemas de tipo UNIX (incluido el terminal de Mac), puede utilizar el siguiente comando para empaquetar el archivo y la carpeta:

   ```
   zip -r hello_world_python_lambda.zip greengrasssdk greengrassHelloWorld.py
   ```
**nota**  
En función de la distribución, es posible que tenga que instalar `zip` primero (por ejemplo, ejecutando `sudo apt-get install zip`). El comando de instalación podría ser diferente en su distribución.

   Ya está listo para crear la función de Lambda y cargar el paquete de implementación.

1. Abra la consola de Lambda y elija **Crear función**.

1. Elija **Crear desde cero**.

1. Asigne el nombre **Greengrass\$1HelloWorld** a la característica y establezca los demás campos como se indica a continuación:
   + 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. Esta función no la utiliza AWS IoT Greengrass.

   Elija **Crear función**.

1. Cargue su paquete de implementación de la función de Lambda:

   1. <a name="lambda-console-upload"></a>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.\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/images/lra-console/upload-deployment-package.png)

   1. Seleccione **Cargar** y, a continuación, elija su paquete de implementación de `hello_world_python_lambda.zip`. A continuación, elija **Guardar**.

   1. <a name="lambda-console-runtime-settings-para"></a>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 **greengrassHelloWorld.function\$1handler**.  
![\[La sección «Configuración del tiempo de ejecución» con el campo «Tiempo de ejecución» establecido en «Python 3.7" y el campo «Handler» establecido en «greengrassHelloWorld.function_handler».\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/images/gg-get-started-023-2.png)

   1. <a name="lambda-console-save-config"></a>Seleccione **Guardar**.
**nota**  
El botón **de prueba de** la AWS Lambda consola no funciona con esta función. El SDK AWS IoT Greengrass principal no contiene los módulos necesarios para ejecutar las funciones de Greengrass Lambda 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.

1. <a name="publish-function-version"></a>Publica la función de Lambda:

   1. En el menú **Acciones** de la parte superior de la página, elija **Publicar nueva versión**.  
![\[Captura de pantalla del menú Actions (Acciones) con Publish new version (Publicar nueva versión) resaltado.\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/images/gg-get-started-026.png)

   1. En **Version description (Descripción de versión)**, escriba **First version** y, a continuación, elija **Publish (Publicar)**.  
![\[Captura de pantalla con el campo Version description (Descripción de versión) establecido en First version (Primera versión) y el botón Publish (Publicar) resaltado.\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/images/gg-get-started-027.png)

1. <a name="create-version-alias"></a>Cree un [alias](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) para la [versión](https://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html) de la función de Lambda:
**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ú **Acciones** de la parte superior de la página, seleccione **Crear alias**.  
![\[Captura de pantalla del menú Actions (Acciones) establecido en Create alias (Crear alias).\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/images/gg-get-started-028.png)

   1. Denomine al alias **GG\$1HelloWorld**, establezca la versión en **1** (que corresponde con la versión que acaba de publicar) y, a continuación, elija **Guardar**.
**nota**  
AWS IoT Greengrass **no admite los alias de Lambda para las versiones \$1LATEST.**

         
![\[Captura de pantalla de Crear un nuevo alias con el campo Nombre establecido en GG_ HelloWorld y el campo Versión en 1.\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/images/gg-get-started-029.png)

# Configurar la función Lambda para AWS IoT Greengrass
<a name="config-lambda"></a>

Ahora está listo para configurar la función de Lambda para AWS IoT Greengrass.

En este paso:
+ Utilice la AWS IoT consola para añadir la función Lambda a su grupo de Greengrass.
+ Configurará los ajustes específicos del grupo para la función de Lambda.
+ Añadirá una suscripción al grupo que permita a la función de Lambda publicar mensajes de MQTT en AWS IoT.
+ Configurará las opciones de registro local para el grupo.

 

1. <a name="console-gg-groups"></a>En el panel de navegación de la AWS IoT consola, en **Administrar**, expanda **los dispositivos Greengrass** y, a continuación, elija **Grupos (V1)**.

1. En **Grupos de Greengrass**, elija el grupo que creó en el [Módulo 2](module2.md).

1. En la página de configuración del grupo, elija la pestaña **Funciones de Lambda** y, a continuación, desplácese hacia abajo hasta la sección **Mis funciones de Lambda** y elija **Añadir función de Lambda**.

1. Seleccione el nombre de la función Lambda que creó en el paso anterior (**Greengrass\$1 HelloWorld**, no el nombre del alias).

1. Para la versión, elija **Alias**: GG\$1. HelloWorld

1. En la sección de **configuración de la función de Lambda**, realice los siguientes cambios:
   + Establezca el **usuario y el grupo del sistema** en **Utilizar grupo predeterminado**.
   + Establezca la **Creación de contenedores de la función de Lambda** en **Uso del grupo predeterminado**.
   + Configure el **Timeout (Tiempo de espera)** en 25 segundos. Esta función de Lambda está inactiva durante 5 segundos antes de cada invocación.
   + En **Ancladas**, elija **Verdadero**

    
**nota**  
<a name="long-lived-lambda"></a>Una función Lambda de *larga duración* (o *anclada*) se inicia automáticamente después AWS IoT Greengrass del inicio y sigue ejecutándose en su propio contenedor. Esto contrasta con una función de Lambda *bajo demanda*, que se inicia cuando se la invoca y se detiene cuando no quedan tareas que ejecutar. Para obtener más información, consulte [Configuración del ciclo de vida de las funciones de Lambda de Greengrass](lambda-functions.md#lambda-lifecycle).

1. Elija **Agregar función de Lambda** para guardar los cambios. Para obtener información sobre las propiedades de la función de Lambda, consulte [Control de la ejecución de funciones de Lambda de Greengrass utilizando la configuración específica del grupo](lambda-group-config.md).

   A continuación, cree una suscripción que permita a la función de Lambda enviar mensajes [MQTT](http://mqtt.org/) a AWS IoT Core.

   Una función de Lambda de Greengrass puede intercambiar mensajes MQTT con:
   + [Dispositivos](what-is-gg.md#greengrass-devices) del grupo de Greengrass
   + [Conectores ](connectors.md) en el grupo.
   + Otras funciones de Lambda del grupo.
   + AWS IoT Core.
   + El servicio de sombra local Para obtener más información, consulte [Módulo 5: Interacción con sombras de dispositivos](module5.md).

   El grupo utiliza las suscripciones para controlar la forma en que estas entidades se pueden comunicar entre sí. Las suscripciones proporcionan interacciones predecibles y una capa de seguruidad.

   Una suscripción se compone de un origen, un destino y un tema. El origen es el autor del mensaje. El destino es el destinatario del mensaje. El tema permite filtrar los datos que se envían desde el origen hasta el destino. El origen o el destino pueden ser un dispositivo de Greengrass, una función de Lambda, un conector, una sombra de dispositivo o AWS IoT Core.
**nota**  
La suscripción está dirigida, ya que los mensajes fluyen en una dirección específica: del origen al destino. Para permitir la comunicación bidireccional, debe configurar dos suscripciones.
**nota**  
 Actualmente, el filtro de temas de suscripción no permite más de un carácter `+` en un tema. El filtro de temas solo permite un carácter `#` al final de un tema. 

   La función `Greengrass_HelloWorld` Lambda envía mensajes solo al `hello/world` tema de AWS IoT Core, por lo que solo necesita crear una suscripción desde la función Lambda a. AWS IoT Core Cree esto en el siguiente paso.

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

   Para ver un ejemplo que muestra cómo crear una suscripción mediante el AWS CLI, consulte la Referencia [create-subscription-definition](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/greengrass/create-subscription-definition.html)de *AWS CLI comandos*.

1. **En el **tipo de fuente**, elija la **función Lambda** y, para la **fuente**, elija Greengrass\$1. HelloWorld**

1. Para el **Tipo de destino**, elija **Servicio** y, para el **objetivo**, seleccione **Nube de IoT**.

1. **En **Filtro por temas**, introduzca **hello/world** y, a continuación, seleccione Crear suscripción.**

1. Defina la configuración de registro del grupo. En este tutorial, debe configurar los componentes del sistema de AWS IoT Greengrass y las funciones de Lambda definidas por el usuario para que escriban los registros en el sistema de archivos del dispositivo del núcleo.

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

   1. En la sección **Configuración de registros locales**, elija **Editar**.

   1. En el cuadro de diálogo **Editar la configuración de los registros locales**, mantenga los valores predeterminados tanto para los niveles de registro como para los tamaños de almacenamiento y, a continuación, seleccione **Guardar**.

   Puede usar registros para solucionar cualquier problema que pueda surgir al ejecutar este tutorial. Durante la solución de problemas, puede cambiar temporalmente el nivel del registro a **Depuración**. Para obtener más información, consulte [Acceso a los registros del sistema de archivos](greengrass-logs-overview.md#gg-logs-local).

1. <a name="disable-stream-manager-no-java"></a>Si Java 8 Runtime no está instalado en el dispositivo principal, debe instalarlo o desactivar el administrador de secuencias.
**nota**  
En este tutorial no se utiliza el administrador de secuencias, pero sí el flujo de trabajo **Creación predeterminada de un grupo**, que habilita el administrador de secuencias de forma predeterminada. Si el administrador de secuencias está habilitado pero Java 8 no está instalado, se produce un error en la implementación del grupo. Para obtener más información, consulte los [requisitos del administrador de secuencias](stream-manager.md#stream-manager-requirements).

   Para desactivar el administrador de secuencias:

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

   1. En la sección **Funciones de Lambda del sistema**, seleccione **Administrador de flujos** y luego elija **Editar**.

   1. Elija **Deshabilitar** y, a continuación, **Guardar**.

# Implementar configuraciones de nube en un dispositivo central de Greengrass
<a name="configs-core"></a>

1. Asegúrese de que el dispositivo central esté conectado a internet. Por ejemplo, intente navegar correctamente a una página web.

1. Asegúrese de que el demonio de Greengrass se esté ejecutando en su dispositivo del núcleo. En el terminal de su dispositivo central, ejecute los siguientes comandos para comprobar si el daemon se está ejecutando e inícielo, si es 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/1.11.6/bin/daemon`, el daemon está en ejecución.

   1. Inicio de daemon:

      ```
      cd /greengrass/ggc/core/
      sudo ./greengrassd start
      ```

   Ya está listo para implementar la función de Lambda y las configuraciones de suscripciones en el dispositivo central de Greengrass.

1. <a name="console-gg-groups"></a>En el panel de navegación de la AWS IoT consola, en **Administrar**, expanda **los dispositivos Greengrass** y, a continuación, elija **Grupos (V1)**.

1. En **Grupos de Greengrass**, elija el grupo que creó en el [Módulo 2](module2.md).

1. 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**, elija **Detector IP**.

1. Elija **Editar** y seleccione **Detectar y anular automáticamente los puntos de conexión del agente de MQTT**. 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.

La primera implementación puede tardar unos minutos. Cuando termine la implementación, debería ver el mensaje **Successfully completed** (Realizado correctamente) en la columna **Status** (Estado) de la página **Deployments** (Implementaciones):

**nota**  
El estado de implementación aparece también en la parte superior de la página, bajo el nombre del grupo.

Para obtener ayuda sobre la resolución de problemas, consulte [Solución de problemas AWS IoT Greengrass](gg-troubleshooting.md).

# Verificación de la ejecución de la función de Lambda en el dispositivo central
<a name="lambda-check"></a>

1. En el panel de navegación de la [consola de AWS IoT](https://console.aws.amazon.com/iot/), en **Probar**, elija el **cliente de prueba MQTT**.

1. Elija la pestaña **Suscribirse al tema**.

1. Escriba **hello/world** en el **filtro de temas** y amplíe la **configuración adicional**.

1. Introduzca la información que aparece en cada uno de los campos siguientes:
   + 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)**.

    

1. Seleccione **Suscribirse**.

Suponiendo que la función de Lambda se esté ejecutando en el dispositivo, publica mensajes similares al siguiente en el tema `hello/world`:

![\[Captura de pantalla del mensaje enviado al hello/world tema con el mensaje resaltado.\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/images/gg-get-started-045.png)


Aunque la función Lambda siga enviando mensajes MQTT al `hello/world` tema, no detenga el daemon. AWS IoT Greengrass El resto de módulos se escriben partiendo del supuesto de que está en ejecución.

Puede eliminar la función y la suscripción del grupo:
+ En la página de configuración de grupos, en la pestaña **Funciones de lambda**, seleccione la función de Lambda que desea eliminar y elija **Eliminar**.
+ En la página de configuración del grupo, seleccione la pestaña **Suscripciones** y luego elija **Suprimir**.

La función y la suscripción se eliminan del dispositivo central durante la siguiente implementación del grupo.