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

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 Descripción Obligatoria u opcional
Nombre de la regla

El nombre de la regla. Tenga en cuenta que no recomendamos el uso de información de identificación personal en los nombres de las reglas.

Obligatorio.
Descripción de la regla

Descripción textual de la regla. Tenga en cuenta que no recomendamos el uso de información de identificación personal en las descripciones de sus reglas.

Opcional.
SQLdeclaración

Una SQL sintaxis simplificada para filtrar los mensajes recibidos sobre un MQTT tema y enviar los datos a otro lugar. Para obtener más información, consulte AWS IoT Referencia SQL.

Obligatorio.
SQLversión

La versión del motor de SQL reglas que se utilizará al evaluar la regla. Aunque esta propiedad es opcional, se recomienda encarecidamente que especifique la SQL versión. La AWS IoT Core consola establece esta propiedad como 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.

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, publicarlos en un tema de SNS Amazon o invocar una función 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 IAM rol 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 y Transferir permisos de rol.

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.

Crear una regla (consola)

Para crear una regla (AWS Management Console)

Utilice el AWS Management Consolecomando para crear una regla:

  1. Abra la consola de AWS IoT.

  2. En el panel de navegación de la izquierda, selecciona Enrutamiento de mensajes en la sección Administrar. Luego elige Reglas.

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

  4. En la página Especificar las propiedades de la regla, introduzca un nombre para la regla. La descripción de la regla y las etiquetas son opcionales. Elija Next (Siguiente).

  5. En la página Configurar una SQL declaración, elija una SQL versión e introduzca una SQL declaración. Un ejemplo de SQL sentencia puede serSELECT temperature FROM 'iot/topic' WHERE temperature > 50. Para obtener más información, consulte SQLlas versiones y AWS IoT SQLla referencia.

  6. 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 regla, seleccione una acción de regla de la lista desplegable. Por ejemplo, puede elegir Kinesis Stream. Para obtener más información sobre las acciones de las reglas, consulte las acciones de las AWS IoT reglas.

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

    3. En el IAMrol, elija o cree un rol para permitir 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 aws-iot-rule IAM función que haya seleccionado. Puedes elegir Ver para ver tu IAM función y la política desde la IAM consola. La acción de error es opcional. Puede encontrar más información en Gestión de errores (acción de error). Para obtener más información sobre la creación de un IAM rol para la regla, consulte Otorgar a una regla el acceso que requiere. Elija Next (Siguiente).

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

Una vez que haya creado una regla correctamente, la verá en la página de reglas. Puede seleccionar una regla para abrir la página de detalles, donde puede ver una regla, editarla, desactivarla y eliminarla.

Crear una regla () CLI

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 SQL instrucción filtra los mensajes y el rol ARN 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 SQL declaración filtra los mensajes y el rol ARN 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" } } ] }

El siguiente es un ejemplo de archivo de carga útil con una regla que se publica en un SNS tema de Amazon:

{ "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" } } ] }

El siguiente es un ejemplo de archivo de carga útil con una regla que se vuelve a publicar sobre un tema diferente: MQTT

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

A continuación, se muestra 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" } } ] }

El siguiente es un ejemplo de archivo de carga útil con una regla que usa la SageMaker machinelearning_predict función Amazon para volver a publicar en un tema si los datos de la MQTT carga útil 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" } } ] }