

# Uso de AWS Lambda con AWS IoT
<a name="services-iot"></a>

AWS IoT proporciona una comunicación segura entre dispositivos conectados a Internet (como sensores) y la nube de AWS. Esto le permite recopilar, almacenar y analizar los datos de telemetría de varios dispositivos.

Puede crear reglas de AWS IoT para que sus dispositivos interactúen con los Servicios de AWS. El [motor de reglas](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html) de AWS IoT proporciona un lenguaje basado en SQL para seleccionar datos de cargas de mensajes y enviar los datos a otros servicios como Amazon S3, Amazon DynamoDB y AWS Lambda. Cuando quiera invocar otro servicio de AWS o un servicio de terceros, defina una regla para invocar una función de Lambda. 

Cuando un mensaje de IoT entrante desencadena la regla, AWS IoT invoca su función de Lambda [de forma asíncrona](invocation-async.md) y pasa los datos del mensaje de IoT a la función. 

El siguiente ejemplo muestra una lectura de humedad del sensor de un invernadero. Los valores **row** y **pos** identifican la ubicación del sensor. Este evento de ejemplo se basa en el tipo de invernadero de los [Tutoriales de reglas de AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules-tutorial.html). 

**Example Evento de mensaje de AWS IoT**  

```
{
    "row" : "10",
    "pos" : "23",
    "moisture" : "75"
}
```

En la invocación asincrónica, Lambda pone en cola el mensaje y, si la función devuelve un error, [lo intenta de nuevo](invocation-retries.md). Configure su función con un [destination](invocation-async-retain-records.md#invocation-async-destinations) para retener eventos que su función no pudo procesar.

Debe conceder permiso para que el servicio AWS IoT invoque su función de Lambda. Utilice el comando `add-permission` para añadir una instrucción de permiso a la política basada en recursos de la función.

```
aws lambda add-permission --function-name my-function \
--statement-id iot-events --action "lambda:InvokeFunction" --principal iot.amazonaws.com
```

Debería ver los siguientes datos de salida:

```
{
    "Statement": "{\"Sid\":\"iot-events\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"iot.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:us-east-1:123456789012:function:my-function\"}"
}
```

Para obtener más información acerca de cómo utilizar Lambda con AWS IoT, consulte [Creación de una regla de AWS Lambda](https://docs.aws.amazon.com/iot/latest/developerguide/iot-lambda-rule.html). 