

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.

# Gestion des erreurs (action d'erreur)
<a name="rule-error-handling"></a>

Lorsqu'il AWS IoT reçoit un message d'un appareil, le moteur de règles vérifie si le message correspond à une règle. Si c'est le cas, l'instruction de requête de la règle est évaluée et les actions de la règle sont activées, en transmettant le résultat de l'instruction de requête. 

Si un problème survient lors de l'activation d'une action, le moteur de règles active une action d'erreur, si une telle action est spécifiée pour la règle. Cela peut se produire dans les cas suivants :
+ Une règle n'a pas l'autorisation d'accéder à un compartiment Amazon S3.
+ Une erreur de l'utilisateur entraîne un dépassement du DynamoDB provisioned throughput 

**Note**  
La gestion des erreurs abordée dans cette rubrique concerne les [actions relatives aux règles](iot-rule-actions.md). Pour résoudre les problèmes SQL, y compris les fonctions externes, vous pouvez configurer la AWS IoT journalisation. Pour de plus amples informations, veuillez consulter [Configuration de la AWS IoT journalisation](configure-logging.md). 

## Format du message d'action d'erreur
<a name="rule-error-message-format"></a>

Un seul message est généré par la règle et par message. Par exemple, si deux actions de règle échouent dans une même règle, l'action d'erreur reçoit un message contenant les deux erreurs.

Par exemple, le message d'erreur ressemble à ce qui suit :

```
{
  "ruleName": "TestAction",
  "topic": "testme/action",
  "cloudwatchTraceId": "7e146a2c-95b5-6caf-98b9-50e3969734c7",
  "clientId": "iotconsole-1511213971966-0",
  "base64OriginalPayload": "ewogICJtZXNzYWdlIjogIkhlbGxvIHZyb20gQVdTIElvVCBjb25zb2xlIgp9",
  "failures": [
    {
      "failedAction": "S3Action",
      "failedResource": "us-east-1-s3-verify-user",
      "errorMessage": "Failed to put S3 object. The error received was The specified bucket does not exist (Service: Amazon S3; Status Code: 404; Error Code: NoSuchBucket; Request ID: 9DF5416B9B47B9AF; S3 Extended Request ID: yMah1cwPhqTH267QLPhTKeVPKJB8BO5ndBHzOmWtxLTM6uAvwYYuqieAKyb6qRPTxP1tHXCoR4Y=). Message arrived on: error/action, Action: s3, Bucket: us-east-1-s3-verify-user, Key: \"aaa\". Value of x-amz-id-2: yMah1cwPhqTH267QLPhTKeVPKJB8BO5ndBHzOmWtxLTM6uAvwYYuqieAKyb6qRPTxP1tHXCoR4Y="
    }
  ]
}
```

ruleName  
Nom de la règle qui a déclenché l'action d'erreur.

topic  
Rubrique dans laquelle le message d'origine a été reçu.

cloudwatchTraceId  
Une identité unique faisant référence à l'erreur se connecte CloudWatch.

clientId  
ID client de l'éditeur du message.

base 64 OriginalPayload  
Charge utile du message d'origine codée en base64.

échecs    
failedAction  
Nom de l'action qui a échoué, par exemple « S3Action ».  
failedResource  
Nom de la ressource. Par exemple, le nom d'un compartiment S3.  
errorMessage  
Description et explication de l'erreur.

## Exemple d'action d'erreur
<a name="rule-error-example"></a>

Voici un exemple de règle à laquelle a été ajoutée une action d'erreur. La règle suivante comporte une action qui écrit les données du message dans une table DynamoDB et une action d'erreur qui écrit les données dans un panier Amazon S3 :

```
{
    "sql" : "SELECT * FROM ..."
    "actions" : [{ 
        "dynamoDB" : {
            "table" : "PoorlyConfiguredTable",
            "hashKeyField" : "AConstantString",
            "hashKeyValue" : "AHashKey"}}
    ],
    "errorAction" : { 
        "s3" : {
            "roleArn": "arn:aws:iam::123456789012:role/aws_iot_s3",
            "bucketName" : "message-processing-errors",
            "key" : "${replace(topic(), '/', '-') + '-' + timestamp() + '-' + newuuid()}"
        }
    }
}
```

Vous pouvez utiliser n'importe quelle [fonction](iot-sql-functions.md) ou [modèle de substitution](https://docs.aws.amazon.com//iot/latest/developerguide/iot-substitution-templates.html) dans l'instruction SQL d'une action d'erreur, y compris les fonctions externes : [https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-func-aws-lambda](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-func-aws-lambda), [https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-get-secret](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-get-secret),, [https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-machine-learning](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-machine-learning), et [https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-decode-base64](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-decode-base64). Si une action d'erreur nécessite l'appel d'une fonction externe, l'invocation de l'action d'erreur peut entraîner une facture supplémentaire pour la fonction externe.

Pour plus d'informations sur les règles et sur la manière de spécifier une action d'erreur, consultez la section [Création d'une AWS IoT règle](https://docs.aws.amazon.com//iot/latest/developerguide/iot-create-rule.html).

Pour plus d'informations sur l'utilisation CloudWatch pour surveiller le succès ou l'échec des règles, consultez[AWS IoT métriques et dimensions](metrics_dimensions.md).