Creación de una regla de AWS IoT - AWS IoT Core

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.

Creación de una regla de AWS IoT

Puede configurar las reglas para direccionar datos desde los objetos conectados. Las reglas constan de los elementos siguientes:

Nombre de la regla

El nombre de la regla.

nota

No es recomendable utilizar información de identificación personal en los nombres de regla.

Descripción opcional

Descripción textual de la regla.

nota

No es recomendable utilizar información de identificación personal en las descripciones de regla.

Instrucción SQL

Sintaxis de SQL simplificada para filtrar los mensajes recibidos sobre un tema MQTT e insertar los datos en otro punto. Para obtener más información, consulte Referencia de la SQL de AWS IoT.

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. LaAWS IoT CoreLa consola establece esta propiedad en2016-03-23de forma predeterminada. Si no se define esta propiedad, como en unAWS CLIcomando o unAWS CloudFormationplantilla,2015-10-08se utiliza. Para obtener más información, consulte Versiones de SQL.

Una o varias acciones

Las acciones que realiza AWS IoT al ejecutar 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.

Una acción de error

La acción AWS IoT se realiza cuando no es posible realizar una acción de la regla.

Cuando cree una regla, debe tener en cuenta la cantidad de datos que publica en los temas. Si crea reglas que contienen un patrón de tema con comodín, es posible que coincidan con una gran cantidad de mensajes y que necesite aumentar la capacidad de los recursos de AWS se que utilizan en las acciones de destino. Asimismo, si crea una regla para volver a publicar que contenga un patrón de tema con comodín, puede acabar teniendo una regla circular que genere un bucle infinito.

nota

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

Para crear una regla (AWS CLI)

Ejecute el comando create-topic-rule 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 a laiot/testtema en la tabla de DynamoDB especificada. La instrucción SQL filtra los mensajes y el ARN del rol concede al ARN del rolAWS IoTpermiso 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 instrucción SQL filtra los mensajes, y el ARN del rol concede a la función ARNAWS IoTpermiso 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": "my-bucket", "key": "myS3Key" } } ] }

Ejemplo de archivo de carga con una regla que inserta datos en Amazon. OpenSearch Servicio de :

{ "sql":"SELECT *, timestamp() as timestamp FROM 'iot/test'", "ruleDisabled":false, "awsIotSqlVersion": "2016-03-23", "actions":[ { "elasticsearch":{ "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 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" } }] }

Ejemplo de archivo de carga con una regla que utiliza Amazon Machine Learningmachinelearning_predictpara volver a publicar en un tema si los datos de la carga 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" } }] }