AWS IoT
开发人员指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

规则错误处理

当 AWS IoT 从设备接收消息时,规则引擎会检查该消息是否匹配规则。如果匹配,将评估规则的 SQL 语句,然后调用规则的操作并向操作传递 SQL 语句的结果。

如果在调用操作时出现问题,则在为规则指定了错误操作的情况下,规则引擎将调用错误操作。例如,在以下情况下可能会发生此操作:

  • 规则没有权限访问 Amazon S3 存储桶。

  • 用户错误导致超过了 DynamoDB 预配置吞吐量。

错误操作消息格式

对于每个规则和每条消息,会生成一条消息。例如,如果同一个规则中的两个规则操作失败,则错误操作将收到包含这些错误的一条消息。

错误操作消息如下所示:

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

触发错误操作的规则的名称。

topic

收到原始消息的主题。

cloudwatchTraceId

引用 CloudWatch 中错误日志的唯一身份。

clientId

消息发布程序的客户端 ID。

base64OriginalPayload

base64 编码的原始消息负载。

失败
failedAction

无法完成的操作的名称,例如“S3Action”。

failedResource

资源的名称,例如 S3 存储桶的名称。

errorMessage

错误的描述和说明。

错误操作示例

下面是一个具有添加的错误操作的规则示例。以下规则具有将消息数据写入到 DynamoDB 表的操作,以及将数据写入到 Amazon S3 存储桶的错误操作:

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

您可以在错误操作的 SQL 语句中使用任意函数或替换,但外部函数除外 (例如,get_thing_shadowaws_lambdamachinelearning_predict)。

有关规则以及如何指定错误操作的更多信息,请参阅创建 AWS IoT 规则

有关使用 CloudWatch 监控规则成功还是失败的更多信息,请参阅AWS IoT 指标和维度