Tratamento de erros (ação de erro) - AWS IoT Core

Tratamento de erros (ação de erro)

Quando a AWS IoT recebe uma mensagem de um dispositivo, o mecanismo de regras verifica se a mensagem corresponde a uma regra. Nesse caso, a instrução de consulta da regra é avaliada e as ações da regra são ativadas, transmitindo o resultado da instrução de consulta.

Se ocorrer um problema ao chamar uma ação, o mecanismo de regras ativará uma ação de erro, se uma ação estiver especificada para a regra. Isso pode acontecer quando:

  • Uma regra não tem permissão para acessar um bucket do Amazon S3.

  • Um erro do usuário faz com que o throughput provisionado do DynamoDB seja excedido.

nota

O tratamento de erros abordado neste tópico é para ações de regras. Para depurar problemas de SQL, incluindo funções externas, você pode configurar o AWS IoT log. Para obter mais informações, consulte Configurar registro em log da AWS IoT.

Formato da mensagem de ação de erro

Uma única mensagem é gerada por regra e mensagem. Por exemplo, se houver uma falha em duas ações de regra na mesma regra, a ação de erro receberá uma mensagem contendo os dois erros.

O resultado é uma mensagem que parece com o exemplo a seguir.

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

O nome da regra que acionou a ação de erro.

tópico

O tópico no qual a mensagem original foi recebida.

cloudwatchTraceId

Uma identidade exclusiva que faz referência aos logs de erro no CloudWatch.

clientId

O ID do cliente do publicador da mensagem.

base64OriginalPayload

A carga da mensagem original codificada em Base64.

falhas
failedAction

O nome da ação que não foi concluída (por exemplo "S3Action").

failedResource

O nome do recurso (por exemplo, o nome de um bucket do S3).

errorMessage

A descrição e a explicação do erro.

Exemplo de ação de erro

Este é um exemplo de uma regra com uma ação de erro adicional. A seguinte regra tem uma ação que grava dados de mensagens em uma tabela do DynamoDB e uma ação de erro que grava dados em um bucket do 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()}" } } }

Você pode usar qualquer função ou modelo de substituição na instrução SQL de uma ação de erro, incluindo as funções externas: aws_lambda()get_dynamodb(), get_thing_shadow(), get_secret(), machinelearning_predict() e. decode() Se uma ação de erro exigir a chamada de uma função externa, a invocação da ação de erro poderá resultar em cobrança adicional para a função externa.

As seguintes funções externas são cobradas de modo equivalente ao de uma ação de regra: aws_lambda, get_dynamodb() e get_thing_shadow(). Você também é cobrado pela função decode() apenas quando está decodificando uma mensagem Protobuf para JSON. Para obter mais detalhes, consulte a página de precificação do AWS IoT Core.

Para obter mais informações sobre regras e como especificar uma ação de erro, consulte Como criar uma AWS IoTRegra.

Para obter mais informações sobre como usar o CloudWatch para monitorar o sucesso ou a falha de regras, consulte Métricas e dimensões do AWS IoT.