

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 6: Acceso a otros AWS servicios
<a name="module6"></a>

Este módulo avanzado muestra cómo los AWS IoT Greengrass núcleos pueden interactuar con otros AWS servicios en la nube. Este módulo se basa en el ejemplo del semáforo del [Módulo 5](module5.md), pero añade una función de Lambda que procesa estados de sombra y carga un resumen en una tabla de Amazon DynamoDB.

![\[AWS IoT conectado a un AWS IoT Greengrass núcleo, que está conectado a un dispositivo conmutador de luz y a un semáforo tipo sombra. La sombra de dispositivo de semáforo está conectada a una función de Lambda que, a su vez, está conectada a una tabla de DynamoDB.\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/images/gg-get-started-089.5.png)


Antes de comenzar, ejecute el script de [configuración de dispositivos de Greengrass](quick-start.md) o asegúrese de haber completado el [módulo 1](module1.md) y el [módulo 2](module2.md). También debe completar el [módulo 5](module5.md). No necesita otros componentes ni dispositivos.

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

**nota**  
En este módulo se crea y se actualiza una tabla en DynamoDB. Aunque la mayoría de las operaciones son pequeñas y entran dentro del nivel gratuito de Amazon Web Services, la ejecución de algunos de los pasos que se detallan en este módulo podría dar lugar a cargos en su cuenta. Para obtener más información acerca de los precios, consulte la [documentación de precios de DynamoDB](https://aws.amazon.com/dynamodb/pricing/).

**Topics**
+ [Configuración del rol del grupo](config-iam-roles.md)
+ [Creación y configuración de la función de Lambda](create-config-lambda.md)
+ [Configurar suscripciones](config_subs.md)
+ [Probar las comunicaciones](comms-test.md)

# Configuración del rol del grupo
<a name="config-iam-roles"></a>

El rol del grupo es un [rol de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) que usted crea y asocia a su grupo de Greengrass. Esta función contiene los permisos que utilizan las funciones de Lambda implementadas (y otras AWS IoT Greengrass funciones) para acceder AWS a los servicios. Para obtener más información, consulte [Rol de grupo de Greengrass](group-role.md).

Siga los siguientes pasos de alto nivel para crear un rol de grupo en la consola de IAM.

1. Cree una política que permita o deniegue acciones en uno o más recursos.

1. Cree un rol que utilice el servicio de Greengrass como una entidad de confianza.

1. Asocie su política al rol.

A continuación, en la AWS IoT consola, se añade el rol al grupo Greengrass.

**nota**  
Un grupo de Greengrass tiene un rol de grupo. Si desea añadir permisos, puede editar políticas adjuntas o adjuntar más políticas.

 

En este tutorial, creará una política de permisos que permita acciones de descripción, creación y actualización en una tabla de Amazon DynamoDB. A continuación, debe asociar la política a un nuevo rol y, a su vez, asociar este a su grupo de Greengrass.

En primer lugar, cree una política administrada por el cliente que conceda los permisos requeridos por la función de Lambda en este módulo.

1. En el panel de navegación de la consola de IAM, elija **Políticas** y después **Crear política**.

1. En la pestaña **JSON**, reemplace el contenido del marcador de posición por la política siguiente. La función de Lambda de este módulo utiliza estos permisos para crear y actualizar una tabla de DynamoDB denominada `CarStats`.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "PermissionsForModule6",
               "Effect": "Allow",
               "Action": [
                   "dynamodb:DescribeTable",
                   "dynamodb:CreateTable",
                   "dynamodb:PutItem"
               ],
               "Resource": "arn:aws:dynamodb:*:*:table/CarStats"
           }
       ]
   }
   ```

------

1. Elija **Siguiente: Etiqueta** y, a continuación, seleccione **Siguiente: Revisar**. En este tutorial no se utilizan etiquetas.

1. En **Nombre**, escriba **greengrass\$1CarStats\$1Table** y, después, elija **Crear política**.

    

   A continuación, cree un rol que utilice la nueva política.

1. En el panel de navegación, seleccione **Roles** y luego seleccione **Crear rol**.

1. En **Tipo de entidad de confianza**, seleccione **Servicio de AWS **.

1. En **Caso de uso**, **Casos de uso para otros servicios de AWS ** elija **Greengrass**, seleccione **Greengrass** y, a continuación, **Siguiente**.

1. En **Políticas de permisos**, seleccione la nueva política de **greengrass\$1CarStats\$1Table** y, a continuación, **Siguiente**.

1. En **Nombre del rol**, ingrese **Greengrass\$1Group\$1Role**.

1. En **Descripción**, escriba **Greengrass group role for connectors and user-defined Lambda functions**.

1. Seleccione **Crear rol**.

   Ahora, añada el rol a su grupo 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 su grupo.

1. Elija **Configuración** y, a continuación, elija **Asociar rol**.

1. Elija **Greengrass\$1Group\$1Role** de su lista de roles, y luego elija **Asociar rol**.

# Creación y configuración de la función de Lambda
<a name="create-config-lambda"></a>

En este paso, va a crear una función de Lambda que realiza el seguimiento del número de automóviles que pasan por el semáforo. Cada vez que el estado de sombra `GG_TrafficLight` cambie a `G`, la función de Lambda simulará el paso de un número aleatorio de vehículos (de 1 a 20). Cada tercer cambio de luz a `G`, la función de Lambda envía estadísticas básicas, como los valores mínimo y máximo, a una tabla de DynamoDB.

1. En el equipo, cree una carpeta denominada `car_aggregator`.

1. Desde la carpeta de [TrafficLight ](https://github.com/aws/aws-greengrass-core-sdk-python/tree/master/examples/TrafficLight)ejemplos en GitHub adelante, descarga el `carAggregator.py` archivo a la `car_aggregator` carpeta. Este es el código de la función de Lambda.
**nota**  
Este archivo de Python de ejemplo se almacena en el repositorio del SDK de AWS IoT Greengrass Core para mayor comodidad, pero no utiliza el SDK de AWS IoT Greengrass Core.

1. Si no trabajas en la región EE.UU. Este (Norte de Virginia), abre la siguiente línea `carAggregator.py` y `region_name` cámbiala por la Región de AWS que esté actualmente seleccionada en la AWS IoT consola. Para ver la lista de las compatibles Región de AWS, consulta [AWS IoT Greengrass](https://docs.aws.amazon.com/general/latest/gr/greengrass.html)la *Referencia general de Amazon Web Services*.

   ```
   dynamodb = boto3.resource('dynamodb', region_name='us-east-1')
   ```

1. Ejecute el siguiente comando en una ventana de [línea de comandos](https://en.wikipedia.org/wiki/Command-line_interface) para instalar el paquete [AWS SDK para Python (Boto3)](https://github.com/boto/boto3/blob/develop/README.rst) y sus dependencias en la carpeta `car_aggregator`. Las funciones Lambda de Greengrass utilizan el AWS SDK para acceder a otros servicios. AWS (Para Windows, utilice un [símbolo del sistema elevado](https://technet.microsoft.com/en-us/library/cc947813(v=ws.10).aspx)).

   ```
   pip install boto3 -t path-to-car_aggregator-folder
   ```

   Aparece una lista de directorios similar a la siguiente:  
![\[Captura de pantalla de la lista de directorios con "carAggregator.py" señalado.\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/images/gg-get-started-095.png)

1. Comprima el contenido de la carpeta `car_aggregator` en un archivo `.zip` con el nombre `car_aggregator.zip`. (Comprima el contenido de la carpeta, no la carpeta). Este es el paquete de implementación de la función de Lambda.

1. En la consola de Lambda, cree una función denominada **GG\$1Car\$1Aggregator** y configure los componentes restantes del modo siguiente:
   + 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

   Seleccione **Creación de función**.  
![\[La sección de Información básica con el campo Nombre de característica establecido en GG_Car_Aggregator y tiempo de ejecución establecido en Python 3.7.\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/images/gg-get-started-095.5.png)

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 `car_aggregator.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 **carAggregator.function\$1handler**.

   1. Seleccione **Save**.

1. Publique la función de Lambda y, a continuación, cree un alias denominado **GG\$1CarAggregator**. Para step-by-step obtener instrucciones, consulte los pasos para [publicar la función Lambda](create-lambda.md#publish-function-version) y [crear un alias](create-lambda.md#create-version-alias) en el Módulo 3 (Parte 1).

1. En la AWS IoT consola, añada la función Lambda que acaba de crear a su AWS IoT Greengrass grupo:

   1. En la página de configuración del grupo, elija la pestaña **Funciones de Lambda** y, a continuación, en **Mis funciones de Lambda**, seleccione **Añadir**.

   1. **Para la **función de Lambda**, elija GG\$1Car\$1Aggregator.**

   1. Para la **versión de la función de Lambda**, elija el alias de la versión que publicó.

   1. En **Límite de memoria**, escriba **64 MB**.

   1. En **Ancladas**, elija **Verdadero**

   1. Elija **Añadir función de Lambda**.
**nota**  
Puede eliminar otras funciones de Lambda de módulos anteriores.

# Configurar suscripciones
<a name="config_subs"></a>

En este paso, se crea una suscripción que permite a la TrafficLight sombra GG\$1 enviar información de estado actualizada a la función Lambda GG\$1Car\$1Aggregator. Esta suscripción se añadirá a las suscripciones que creó en el [Módulo 5](module5.md), que también son necesarias en este módulo.

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

1. En la página **Crear una suscripción**, haga lo siguiente:

   1. Para **Seleccionar un origen**, elija **Servicios** y, a continuación, **Servicio de sombra local**.

   1. En **Tipo de destino**, elija **Función Lambda** y, a continuación, elija **GG\$1Car\$1Aggregator**.

   1. En **Filtro de temas**, escriba **\$1aws/things/GG\$1TrafficLight/shadow/update/documents**.

   1. Elija **Crear una suscripción**.

   Este módulo necesita la nueva suscripción y las [suscripciones](config-dev-subs.md#module5-subscriptions) que creó en el Módulo 5.

1. 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](configs-core.md).

1. <a name="console-actions-deploy"></a>En la página de configuración de grupo, elija **Implementar**.

# Probar las comunicaciones
<a name="comms-test"></a>

1. En su equipo, abra dos ventanas de la [línea de comando](https://en.wikipedia.org/wiki/Command-line_interface). Al igual que en el [Módulo 5](module5.md), una ventana es para el dispositivo cliente GG\$1Switch y la otra es para el dispositivo cliente GG\$1TrafficLight . Utilícelas para ejecutar los mismos comandos que ejecutó en el Módulo 5.

   Ejecute los siguientes comandos para el dispositivo cliente GG\$1Switch:

   ```
   cd path-to-certs-folder
   python lightController.py --endpoint AWS_IOT_ENDPOINT --rootCA AmazonRootCA1.pem --cert switchCertId-certificate.pem.crt --key switchCertId-private.pem.key --thingName GG_TrafficLight --clientId GG_Switch
   ```

   Ejecute los siguientes comandos para el dispositivo cliente TrafficLight GG\$1:

   ```
   cd path-to-certs-folder
   python trafficLight.py --endpoint AWS_IOT_ENDPOINT --rootCA AmazonRootCA1.pem --cert lightCertId-certificate.pem.crt --key lightCertId-private.pem.key --thingName GG_TrafficLight --clientId GG_TrafficLight
   ```

   Cada 20 segundos, el interruptor actualiza el estado de sombra a los valores G, Y y R, y la luz indicará su nuevo estado.

1. El controlador de la función de Lambda se activa cada tres luces verdes (cada tres minutos) y se crea un nuevo registro de DynamoDB. Después `lightController.py` de `trafficLight.py` tres minutos de ejecución, vaya a la Consola de administración de AWS consola DynamoDB y ábrala.

1. Seleccione **EE.UU. Este (Norte de Virginia)** en el Región de AWS menú. Esta es la región en la que la función `GG_Car_Aggregator` crea la tabla.

1. En el panel de navegación, elija **Tablas** y, a continuación, elija la **CarStats**tabla. 

1. Seleccione **Ver elementos** para ver las entradas de la tabla.

   Debería ver las entradas con estadísticas básicas con respecto a los vehículos que han pasado (una entrada cada 3 minutos). Es posible que tenga que pulsar el botón de actualización para ver las actualizaciones de la tabla.

1. Si la prueba no es correcta, puede buscar información para la solución de problemas en los registros de Greengrass.

   1. <a name="root-access-logs"></a>Cambie al usuario raíz y vaya al directorio `log`. El acceso a AWS IoT Greengrass los registros requiere permisos de root.

      ```
      sudo su
      cd /greengrass/ggc/var/log
      ```

   1. Compruebe si hay errores en `runtime.log`.

      ```
      cat system/runtime.log | grep 'ERROR'
      ```

   1. Compruebe el registro generado por la función de Lambda.

      ```
      cat user/region/account-id/GG_Car_Aggregator.log
      ```

      <a name="check-connection-info"></a> Los scripts `lightController.py` y `trafficLight.py` almacenan información de conexión en la carpeta `groupCA`, que se crea en la misma carpeta que los scripts. Si recibe errores de conexión, asegúrese de que la dirección IP del archivo `ggc-host` coincide con el punto de conexión de la dirección IP de su núcleo.

   Para obtener más información, consulte [Solución de problemas AWS IoT Greengrass](gg-troubleshooting.md).

Este es el final del tutorial básico. Ahora debe comprender el modelo de AWS IoT Greengrass programación y sus conceptos fundamentales, incluidos los AWS IoT Greengrass núcleos, los grupos, las suscripciones, los dispositivos cliente y el proceso de despliegue de las funciones Lambda que se ejecutan en la periferia.

Puede eliminar la tabla de DynamoDB, las funciones de Lambda de Greengrass y las suscripciones. Para detener las comunicaciones entre el dispositivo AWS IoT Greengrass principal y la AWS IoT nube, abra un terminal en el dispositivo principal y ejecute uno de los siguientes comandos:
+ Para apagar el dispositivo AWS IoT Greengrass principal:

  ```
  sudo halt
  ```
+ Para detener el AWS IoT Greengrass daemon:

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