As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Quando 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 SQL problemas, incluindo funções externas, você pode configurar o AWS IoT registro. Para obter mais informações, consulte Configurar o AWS IoT registro.
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 referente ao login de erro CloudWatch.
- clientId
-
O ID do cliente do publicador da mensagem.
- base 64 OriginalPayload
-
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 SQL declaração 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 decode()
função somente quando está decodificando uma mensagem do 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 Criando uma AWS IoT regra.
Para obter mais informações sobre como usar CloudWatch para monitorar o sucesso ou o fracasso das regras, consulteAWS IoT métricas e dimensões.