Création d'une AWS IoT règle - AWS IoT Core

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Création d'une AWS IoT règle

Vous configurez les règles d'acheminement des données provenant de vos objets connectés. Règles se composent de ce qui suit :

Nom de la règle

Le nom de la règle .

Note

Il est déconseillé d'utiliser des informations personnelles identifiables dans le nom de vos règles.

Description facultative

Description textuelle de la règle.

Note

Il est déconseillé d'utiliser des informations personnelles identifiables dans les descriptions de vos règles.

Instruction SQL

Syntaxe SQL simplifiée pour filtrer les messages reçus dans une rubrique MQTT et pousser les données ailleurs. Pour plus d’informations, consultez AWS IoT Référence SQL.

Version de SQL

Version du moteur de règles SQL à utiliser lors de l'évaluation de la règle. Même si cette propriété est facultative, nous vous recommandons vivement de préciser la version de SQL. La AWS IoT Core console définit cette propriété sur 2016-03-23 par défaut. Si cette propriété n'est pas définie, par exemple dans une AWS CLI commande ou un AWS CloudFormation modèle, elle 2015-10-08 est utilisée. Pour plus d’informations, consultez Versions de SQL.

Une ou plusieurs actions

Les actions sont effectuées AWS IoT lors de la mise en œuvre de la règle. Par exemple, vous pouvez insérer des données dans un tableau DynamoDB, écrire des données dans un compartiment Amazon S3, publier dans une rubrique Amazon SNS ou appeler une fonction Lambda.

Une action d'erreur

L'action est AWS IoT exécutée lorsqu'elle n'est pas en mesure d'exécuter l'action d'une règle.

Lorsque vous créez une règle, soyez conscient de la quantité de données que vous publiez sur les sujets. Si vous créez des règles qui incluent un modèle de sujet générique, elles peuvent correspondre à un pourcentage important de vos messages. Dans ce cas, vous devrez peut-être augmenter la capacité des AWS ressources utilisées par les actions cibles. En outre, si vous créez une règle de republication qui inclut un modèle de rubrique de caractère générique, vous pouvez vous retrouver avec une règle circulaire qui tourne en boucle à l'infini.

Note

La création et la mise à jour de règles sont des actions de niveau administrateur. Tout utilisateur détenant des autorisations de création ou de mise à jour de règles peut accéder aux données traitées par les règles.

Pour créer une règle (AWS CLI)

Utilisez la create-topic-rulecommande pour créer une règle :

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

Voici un exemple de fichier de charge utile avec une règle qui insère tous les messages envoyés à la iot/test rubrique dans le tableau DynamoDB spécifiée. L'instruction SQL filtre les messages et le rôle ARN AWS IoT autorise l'écriture dans la table 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()}" } }] }

Voici un exemple de fichier de charge utile avec une règle qui insère tous les messages envoyés à la rubrique iot/test dans le compartiment S3 spécifié. L'instruction SQL filtre les messages, et l'ARN du rôle accorde AWS IoT l'autorisation d'écrire dans le compartiment 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" } } ] }

Voici un exemple de fichier de charge utile avec une règle qui envoie des données vers 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()}" } } ] }

Voici un exemple de fichier de charge avec une règle qui appelle une fonction Lambda :

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

Voici un exemple de fichier de charge utile avec une règle qui publie dans une rubrique 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" } }] }

Voici un exemple de fichier de charge utile avec une règle qui permet de republier dans une autre rubrique MQTT :

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

Voici un exemple de fichier de charge utile avec une règle qui envoie des données vers un flux 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" } }] }

Voici un exemple de fichier de charge utile avec une règle qui utilise la SageMaker machinelearning_predict fonction Amazon pour republier dans une rubrique si les données de la charge utile MQTT sont classées comme 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" } }] }

Voici un exemple de fichier de charge utile assorti d'une règle qui publie des messages dans un flux d'entrée 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" } }] }

L'exemple suivant illustre un fichier de charge utile avec une règle lançant l'exécution d'une machine d'état 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" } }] }