

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
<a name="iot-create-rule"></a>

Vous pouvez créer des AWS IoT règles pour acheminer les données de vos objets connectés afin d'interagir avec d'autres AWS services. Une AWS IoT règle comprend les éléments suivants :


**Composantes d'une règle**  

| Composant | Description | Obligatoire ou facultatif | 
| --- | --- | --- | 
| Nom de la règle |  Le nom de la règle . Notez que nous ne recommandons pas l'utilisation d'informations personnellement identifiables dans les noms de vos règles.  | Obligatoire. | 
| Description de la règle |  Description textuelle de la règle. Notez que nous ne recommandons pas l'utilisation d'informations personnellement identifiables dans les descriptions de vos règles.  | Facultatif. | 
| Instruction SQL |  Syntaxe SQL simplifiée pour filtrer les messages reçus dans une rubrique MQTT et pousser les données ailleurs. Pour de plus amples informations, veuillez consulter [AWS IoT Référence SQL](iot-sql-reference.md).  | Obligatoire. | 
| Version de SQL |  Version du moteur de règles SQL à utiliser lors de l'évaluation de la règle. Bien que cette propriété soit facultative, nous vous recommandons vivement de spécifier la version 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 CloudFormation modèle, elle `2015-10-08` est utilisée. Pour de plus amples informations, veuillez consulter [Versions de SQL](iot-rule-sql-version.md).  | Obligatoire. | 
| 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. | Obligatoire. | 
| 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. | Facultatif. | 

Avant de créer une AWS IoT règle, vous devez créer un rôle IAM avec une politique qui autorise l'accès aux AWS ressources requises. AWS IoT assume ce rôle lors de la mise en œuvre d'une règle. Pour plus d'informations, consultez les sections [Accorder à une AWS IoT règle l'accès dont elle a besoin](https://docs.aws.amazon.com//iot/latest/developerguide/iot-create-role.html) et [Transmission des autorisations de rôle](https://docs.aws.amazon.com//iot/latest/developerguide/pass-role.html).

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. Nous recommandons d'éviter les modèles de sujets génériques dans les règles de republication afin d'éviter le double traitement et de réduire les coûts.

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

## Création d'une règle (console)
<a name="iot-create-rule-console"></a>

**Pour créer une règle (AWS Management Console)**

Utilisez la [AWS Management Console](https://console.aws.amazon.com//iot/home#/home)commande pour créer une règle :

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

1. Dans le volet de navigation de gauche, choisissez **Routage des messages** dans la section **Gérer**. Choisissez ensuite **Règles**.

1. Sur la page **Règles**, choisissez **Créer une règle**.

1. Sur la page **Spécifier les propriétés de la règle**, entrez le nom de votre règle. **La description des règles** et les **balises** sont facultatives. Choisissez **Suivant**.

1. Sur la page **Configurer l'instruction SQL**, choisissez une version SQL et entrez une instruction SQL. Un exemple d'instruction SQL peut être`SELECT temperature FROM 'iot/topic' WHERE temperature > 50`. Pour plus d'informations, voir [Versions SQL](https://docs.aws.amazon.com//iot/latest/developerguide/iot-rule-sql-version.html) et [références AWS IoT SQL](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-reference.html).

1. Sur la page **Joindre des actions de règle**, ajoutez des actions de règle pour acheminer les données vers d'autres AWS services.

   1. Dans **Actions de règle**, sélectionnez une action de règle dans la liste déroulante. Par exemple, vous pouvez choisir **Kinesis** Stream. Pour plus d'informations sur les actions des règles, consultez la section [Actions des AWS IoT règles](https://docs.aws.amazon.com//iot/latest/developerguide/iot-rule-actions.html).

   1. En fonction de l'action de règle que vous choisissez, entrez les détails de configuration associés. Par exemple, si vous choisissez **Kinesis Stream**, vous devrez choisir ou créer une ressource de flux de données, et éventuellement saisir les détails de configuration tels que la **clé de partition**, qui est utilisée pour regrouper les données par partition dans un Steam.

   1. Dans le **rôle IAM**, choisissez ou créez un rôle pour accorder l' AWS IoT accès à votre point de terminaison. Notez que cela AWS IoT créera automatiquement une politique avec le préfixe « `aws-iot-rule` sous le rôle IAM sélectionné ». Vous pouvez choisir **Afficher** pour afficher votre rôle IAM et la politique depuis la console IAM. **L'action en cas d'erreur** est facultative. Vous trouverez plus d'informations dans [Gestion des erreurs (action en cas d'erreur)](https://docs.aws.amazon.com//iot/latest/developerguide/rule-error-handling.html). Pour plus d'informations sur la création d'un rôle IAM pour votre règle, voir [Accorder à une règle l'accès dont elle a besoin](https://docs.aws.amazon.com//iot/latest/developerguide/iot-create-role.html). Choisissez **Suivant**.

1. Sur la page **Réviser et créer**, passez en revue l'ensemble de la configuration et apportez des modifications si nécessaire. Choisissez **Créer**.

Une fois que vous avez créé une règle avec succès, elle apparaît sur la page **Règles**. Vous pouvez sélectionner une règle pour ouvrir la page **Détails** où vous pouvez afficher une règle, modifier une règle, désactiver une règle et supprimer une règle.

## Création d'une règle (CLI)
<a name="iot-create-rule-cli"></a>

**Pour créer une règle (AWS CLI)**  
Utilisez la [create-topic-rule](https://docs.aws.amazon.com/cli/latest/reference/iot/create-topic-rule.html)commande 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": "amzn-s3-demo-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 `machinelearning_predict` fonction Amazon SageMaker AI 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"
			}
		}
	]
}
```