

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.

# Crear una AWS IoT regla
<a name="iot-create-rule"></a>

Puedes crear AWS IoT reglas para enrutar los datos de tus dispositivos conectados para que interactúen con otros AWS servicios. Una AWS IoT regla consta de los siguientes componentes:


**Componentes de una regla**  

| Componente | Description (Descripción) | Obligatoria u opcional | 
| --- | --- | --- | 
| Nombre de la regla |  El nombre de la regla. No se recomienda utilizar información personal identificable en los nombres de las reglas.  | Obligatorio. | 
| Descripción de la regla |  Descripción textual de la regla. No se recomienda utilizar información personal identificable en las descripciones de las reglas.  | Opcional. | 
| Instrucción de SQL |  Sintaxis de SQL simplificada para filtrar los mensajes recibidos sobre un tema de MQTT e insertar los datos en otro punto. Para obtener más información, consulte [AWS IoT Referencia SQL](iot-sql-reference.md).  | Obligatorio. | 
| Versión de SQL |  Versión del motor de reglas SQL que debe utilizarse al evaluar la regla. Aunque esta propiedad es opcional, recomendamos encarecidamente que especifique la versión de SQL. La AWS IoT Core consola establece esta propiedad en de forma `2016-03-23` predeterminada. Si no se establece esta propiedad, por ejemplo, en un AWS CLI comando o una CloudFormation plantilla, `2015-10-08` se utiliza. Para obtener más información, consulte [Versiones de SQL](iot-rule-sql-version.md).  | Obligatorio. | 
| Una o varias acciones | Las acciones se AWS IoT realizan al promulgar la regla. Por ejemplo, puede insertar datos en una tabla de DynamoDB, escribir datos en un bucket de Amazon S3, publicar en un tema de Amazon SNS o invocar una función de Lambda. | Obligatorio. | 
| Una acción de error | La acción se AWS IoT ejecuta cuando no puede realizar la acción de una regla. | Opcional. | 

Antes de crear una AWS IoT regla, debe crear un rol de IAM con una política que permita el acceso a los AWS recursos necesarios. AWS IoT asume esta función al implementar una regla. Para obtener más información, consulte [Otorgar a una AWS IoT regla el acceso que requiere](https://docs.aws.amazon.com//iot/latest/developerguide/iot-create-role.html) y [Transferir permisos de rol](https://docs.aws.amazon.com//iot/latest/developerguide/pass-role.html).

Cuando cree una regla, debe tener en cuenta la cantidad de datos que publica en los temas. Si crea reglas que incluyen un patrón de tema comodín, es posible que coincidan con un gran porcentaje de sus mensajes. Si este es el caso, es posible que necesite aumentar la capacidad de los recursos AWS que utilizan las acciones objetivo. Recomendamos evitar los patrones de temas comodín en las reglas de republicación para evitar el procesamiento duplicado y reducir los costos.

**nota**  
La creación y la actualización de reglas son acciones de administrador. Todo usuario que tenga permiso para crear o actualizar reglas podrá tener acceso a los datos procesados por las reglas.

## Creación de una regla (consola)
<a name="iot-create-rule-console"></a>

**Para crear una regla (Consola de administración de AWS)**

Utilice el comando [Consola de administración de AWS](https://console.aws.amazon.com//iot/home#/home) para crear una regla:

1. Abra la [consola de AWS IoT](https://console.aws.amazon.com//iot/home#/home).

1. En el menú de navegación de la izquierda, seleccione **Enrutamiento de mensajes** en la sección **Administrar**. A continuación, elija **Reglas**.

1. En la página **Reglas**, seleccione **Crear una regla**.

1. En la página **Especificar las propiedades de la regla**, escriba un nombre para la regla. Los campos **Descripción de la regla** y **Etiquetas** son opcionales. Elija **Siguiente**.

1. En la página **Configurar la instrucción SQL**, elija una versión de SQL e introduzca una instrucción SQL. Un ejemplo de instrucción SQL puede ser `SELECT temperature FROM 'iot/topic' WHERE temperature > 50`. Para obtener más información, consulte [SQL versions](https://docs.aws.amazon.com//iot/latest/developerguide/iot-rule-sql-version.html) y [AWS IoT SQL reference](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-reference.html).

1. En la página **Adjuntar acciones de regla**, añada acciones de regla para enrutar los datos a otros AWS servicios.

   1. En **Acciones de la regla**, seleccione una acción de la regla de la lista desplegable. Por ejemplo, puede elegir **Kinesis Stream**. Para obtener más información sobre las acciones de las reglas, consulte [AWS IoT rule actions](https://docs.aws.amazon.com//iot/latest/developerguide/iot-rule-actions.html).

   1. En función de la acción de la regla que elija, introduzca los detalles de configuración relacionados. Por ejemplo, si elige **Kinesis Stream**, tendrá que elegir o crear un recurso de flujo de datos y, si lo desea, introducir detalles de configuración, como **Clave de partición**, que se utiliza para agrupar los datos por particiones en un flujo.

   1. En el **rol de IAM**, elija o cree un rol para conceder el AWS IoT acceso a su punto final. Tenga en cuenta que se AWS IoT creará automáticamente una política con el prefijo correspondiente a la función de `aws-iot-rule` IAM que haya seleccionado. Puede seleccionar **Ver** para ver su rol de IAM y la política desde la consola de IAM. El campo **Acción de error** es opcional. Encontrará más información en [Error handling (error action)](https://docs.aws.amazon.com//iot/latest/developerguide/rule-error-handling.html). Para obtener más información sobre la creación de un rol de IAM para su regla, consulte [Grant a rule the access it requires](https://docs.aws.amazon.com//iot/latest/developerguide/iot-create-role.html). Elija **Siguiente**.

1. En la página **Revisar y crear**, revise toda la configuración y realice las modificaciones necesarias. Seleccione **Crear**.

Después de crear una regla correctamente, la verá en la página **Reglas**. Puede seleccionar una regla para abrir la página **Detalles**, donde puede ver una regla, editarla, desactivarla y eliminarla.

## Creación de una regla (CLI)
<a name="iot-create-rule-cli"></a>

**Para crear una regla (AWS CLI)**  
Utilice el comando [create-topic-rule](https://docs.aws.amazon.com/cli/latest/reference/iot/create-topic-rule.html) para crear una regla:

```
aws iot create-topic-rule --rule-name myrule --topic-rule-payload file://myrule.json
```

Ejemplo de archivo de carga con una regla que inserta todos los mensajes enviados al tema `iot/test` en la tabla de DynamoDB especificada. La sentencia SQL filtra los mensajes y el ARN del rol concede AWS IoT permiso para escribir en la tabla de DynamoDB.

```
{
	"sql": "SELECT * FROM 'iot/test'",
	"ruleDisabled": false,
	"awsIotSqlVersion": "2016-03-23",
	"actions": [
		{
			"dynamoDB": {
				"tableName": "my-dynamodb-table",
				"roleArn": "arn:aws:iam::123456789012:role/my-iot-role",
				"hashKeyField": "topic",
				"hashKeyValue": "${topic(2)}",
				"rangeKeyField": "timestamp",
				"rangeKeyValue": "${timestamp()}"
			}
		}
	]
}
```

A continuación, se muestra un ejemplo de archivo de carga con una regla que inserta todos los mensajes enviados al tema `iot/test` en el bucket de S3 especificado. La sentencia SQL filtra los mensajes y el ARN del rol concede AWS IoT permiso para escribir en el bucket de Amazon S3.

```
{
	"awsIotSqlVersion": "2016-03-23",
	"sql": "SELECT * FROM 'iot/test'",
	"ruleDisabled": false,
	"actions": [
		{
			"s3": {
				"roleArn": "arn:aws:iam::123456789012:role/aws_iot_s3",
				"bucketName": "amzn-s3-demo-bucket",
				"key": "myS3Key"
			}
		}
	]
}
```

El siguiente es un ejemplo de archivo de carga útil con una regla que envía datos a Amazon OpenSearch Service:

```
{
	"sql": "SELECT *, timestamp() as timestamp FROM 'iot/test'",
	"ruleDisabled": false,
	"awsIotSqlVersion": "2016-03-23",
	"actions": [
		{
			"OpenSearch": {
				"roleArn": "arn:aws:iam::123456789012:role/aws_iot_es",
				"endpoint": "https://my-endpoint",
				"index": "my-index",
				"type": "my-type",
				"id": "${newuuid()}"
			}
		}
	]
}
```

Ejemplo de archivo de carga con una regla que invoca una función de Lambda:

```
{
	"sql": "expression",
	"ruleDisabled": false,
	"awsIotSqlVersion": "2016-03-23",
	"actions": [
		{
			"lambda": {
				"functionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-lambda-function"
			}
		}
	]
}
```

Ejemplo de archivo de carga con una regla que publica en un tema de Amazon SNS:

```
{
	"sql": "expression",
	"ruleDisabled": false,
	"awsIotSqlVersion": "2016-03-23",
	"actions": [
		{
			"sns": {
				"targetArn": "arn:aws:sns:us-west-2:123456789012:my-sns-topic",
				"roleArn": "arn:aws:iam::123456789012:role/my-iot-role"
			}
		}
	]
}
```

Ejemplo de archivo de carga con una regla que vuelve a publicar en otro tema MQTT:

```
{
	"sql": "expression",
	"ruleDisabled": false,
	"awsIotSqlVersion": "2016-03-23",
	"actions": [
		{
			"republish": {
				"topic": "my-mqtt-topic",
				"roleArn": "arn:aws:iam::123456789012:role/my-iot-role"
			}
		}
	]
}
```

Ejemplo de archivo de carga útil con una regla que inserta datos en un flujo de Amazon Kinesis Data Firehose:

```
{
	"sql": "SELECT * FROM 'my-topic'",
	"ruleDisabled": false,
	"awsIotSqlVersion": "2016-03-23",
	"actions": [
		{
			"firehose": {
				"roleArn": "arn:aws:iam::123456789012:role/my-iot-role",
				"deliveryStreamName": "my-stream-name"
			}
		}
	]
}
```

A continuación se muestra un ejemplo de archivo de carga útil con una regla que utiliza la `machinelearning_predict` función Amazon SageMaker AI para volver a publicar en un tema si los datos de la carga útil de MQTT están clasificados como 1.

```
{
	"sql": "SELECT * FROM 'iot/test' where machinelearning_predict('my-model', 'arn:aws:iam::123456789012:role/my-iot-aml-role', *).predictedLabel=1",
	"ruleDisabled": false,
	"awsIotSqlVersion": "2016-03-23",
	"actions": [
		{
			"republish": {
				"roleArn": "arn:aws:iam::123456789012:role/my-iot-role",
				"topic": "my-mqtt-topic"
			}
		}
	]
}
```

A continuación se incluye un archivo de carga de ejemplo con una regla que publica mensajes en un flujo de entrada de Salesforce IoT Cloud.

```
{
	"sql": "expression",
	"ruleDisabled": false,
	"awsIotSqlVersion": "2016-03-23",
	"actions": [
		{
			"salesforce": {
				"token": "ABCDEFGHI123456789abcdefghi123456789",
				"url": "https://ingestion-cluster-id.my-env.sfdcnow.com/streams/stream-id/connection-id/my-event"
			}
		}
	]
}
```

Ejemplo de archivo de carga con una regla que inicia la ejecución de una máquina de estado de Step Functions.

```
{
	"sql": "expression",
	"ruleDisabled": false,
	"awsIotSqlVersion": "2016-03-23",
	"actions": [
		{
			"stepFunctions": {
				"stateMachineName": "myCoolStateMachine",
				"executionNamePrefix": "coolRunning",
				"roleArn": "arn:aws:iam::123456789012:role/my-iot-role"
			}
		}
	]
}
```