Crear una AWS IoT regla - 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.

Crear una AWS IoT regla

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 AWS IoT Referencia SQL.

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 AWS CloudFormation plantilla, 2015-10-08 se utiliza. Para obtener más información, consulte Versiones de SQL.

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.

Una acción de error

La acción se AWS IoT ejecuta cuando no puede realizar la acción de una regla.

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. 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)

Usa el create-topic-rulecomando 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": "my-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" } }] }

El siguiente es un ejemplo de archivo de carga útil con una regla que envía datos a una transmisión de Amazon 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 SageMaker machinelearning_predict función Amazon 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" } }] }