检测器模型分析和诊断信息 - Amazon IoT Events
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

检测器模型分析和诊断信息

探测器模型分析收集以下诊断信息:

  • Level— 分析结果的严重性等级。根据严重性级别,分析结果分为三大类:

    • 信息(INFO) — 信息结果告诉您有关检测器模型中的重要字段。这种类型的结果通常不需要立即采取行动。

    • 警告(WARNING) — 警告结果提请特别注意可能导致检测器模型出现问题的字段。我们建议您在生产环境中使用检测器型号之前查看警告并采取必要措施。否则,检测器型号可能无法按预期工作。

    • 错误(ERROR) — 错误结果会通知您在检测器型号中发现的问题。Amazon IoT Events当您尝试发布检测器模型时,会自动执行这组分析。必须先修复所有错误,然后才能发布检测器模型。

  • 位置— 包含可用于定位检测器模型中分析结果参考的字段的信息。位置通常包括状态名称、转换事件名称、事件名称和表达式(例如in state TemperatureCheck in onEnter in event Init in action setVariable)。

  • 类型— 分析结果的类型。分析类型分为以下几类:

    • supported-actions–Amazon IoT Events可以在检测到指定的事件或转换事件时调用操作。您可以定义内置操作以使用计时器或设置变量,或者将数据发送到其他Amazon服务。您必须指定与其他Amazon服务Amazon区域Amazon服务可用。

    • service-limits— 服务配额(也称为限制)是您的Amazonaccount. 除非另有说明,否则,每个配额是区域特定的。根据您的业务需求,您可以更新检测器型号,以避免遇到限制或请求增加配额。您可以请求增加某些配额,但其他配额无法增加。有关更多信息,请参阅 配额

  • structure— 检测器模型必须具有所有必需的组件,例如状态,并遵循Amazon IoT Events支持。检测器模型必须至少具有一种状态和一种条件,用于评估传入的输入数据以检测重要事件。检测到事件时,检测器模型将转换为下一个状态,并可以调用操作。这些事件称为过渡事件。转变事件必须指示下一个状态进入。

  • expression-syntax–Amazon IoT Events提供了几种方法以在创建和更新探测器模型时指定值。您可以在表达式中使用文字、运算符、函数、函数、函数、引用和替代模板。您可以使用表达式指定文字值,或Amazon IoT Events可以在指定特定值之前对表达式进行评估。您的表达式必须遵循所需的语法。有关更多信息,请参阅 Expressions

    探测器模型表达式Amazon IoT Events可以引用特定数据或资源。

    • data-type–Amazon IoT Events支持整数、十进制、字符串和布尔数据类型。如果Amazon IoT Events可以在表达式评估期间自动将一种数据类型的数据转换为另一种数据类型,这些数据类型是兼容的。

      注意
      • 整数和十进制是唯一的兼容数据类型Amazon IoT Events.

      • Amazon IoT Events无法评估算术表达式,因为Amazon IoT Events不能将整数转换为字符串。

    • referenced-data— 必须先定义检测器模型中引用的数据,然后才能使用数据。例如,如果要将数据发送到 DynamoDB 表,则必须定义引用表名的变量,然后才能在表达式中使用该变量 ($variable.TableName)。

    • referenced-resource— 检测器型号使用的资源必须可用。必须先定义资源,然后才能使用。例如,您希望创建探测器模型以监控温室的温度。您必须定义一个输入 ($input.TemperatureInput)将传入的温度数据路由到您的探测器模型,然后才能使用$input.TemperatureInput.sensorData.temperature来参考温度。

请参阅以下部分,以解决错误问题并通过分析检测器模型找到可能的解决方案。

探测器模型错误排查

上述错误类型提供了有关检测器型号的诊断信息,并对应于您可能检索的消息。使用这些消息和建议的解决方案对检测器型号的错误进行故障排除。

Location

包含有关信息的分析结果Location中,对应于以下错误消息:

  • 消息— 包含有关分析结果的其他信息。这可以是信息、警告或错误消息。

    您可能会收到此错误消息,如果您指定了Amazon IoT Events目前不支持。有关受支持的操作的列表,请参阅支持的操作.

supported-actions

包含有关信息的分析结果supported‐actions中,对应于以下错误消息:

  • 消息: 操作定义中存在无效的操作类型:操作定义.

    您可能会收到此错误消息,如果您指定了Amazon IoT Events目前不支持。有关受支持的操作的列表,请参阅支持的操作.

  • 消息: 检测器模型定义具有Amazon 服务操作,但Amazon 服务服务在区域区域不受支持区域名称.

    您可能会收到此错误消息,如果您指定的操作受Amazon IoT Events,但该操作在您的当前区域中不可用。当您尝试将数据发送到Amazon服务中不可用。您还必须为Amazon IoT Events和Amazon服务。

service-limits

包含有关信息的分析结果service‐limits对应于以下错误消息:

  • 消息: 有效负载中允许的内容表达式超出限制内容表达式大小事件中的字节数事件名称状态状态名称.

    如果操作有效负载的内容表达式大于 1024 字节,则可能会收到此错误消息。有效负载的内容表达式的大小最多可达 1024 字节。

  • 消息: 检测器模型定义中允许的状态数超出限制每个检测器模型的状态.

    如果您的检测器型号具有 20 个以上的状态,则可能会收到此错误消息。检测器模型最多可以具有 20 个状态。

  • 消息: 计时器的持续时间计时器名称应至少为最短计时器持续时间秒长。

    如果计时器的持续时间小于 60 秒,您可能会收到此错误消息。我们建议计时器的持续时间介于 60 和 31622400 秒之间。如果指定计时器持续时间的表达式,则持续时间表达式的计算结果向下舍入为最接近的整数。

  • 消息: 每个事件允许的操作数超出限制每个事件的操作在探测器模型定义中

    如果事件具有 10 个以上的操作,您可能会收到此错误消息。在探测器模型中,您的每个事件最多可有 10 个操作。

  • 消息: 每个状态允许的转换事件数超出限制每个状态的过渡事件在探测器模型定义中。

    如果状态有超过 20 个转换事件,则可能会收到此错误消息。在探测器模型中,您的每个状态最多可有 20 个过渡事件。

  • 消息: 每个状态允许的事件数超出限制每个州的事件在探测器模型定义中

    如果状态有 20 个以上的事件,您可能会收到此错误消息。在探测器模型中,您的每个状态最多可有 20 个事件。

  • 消息: 可以与单个输入关联的最大探测器模型数量可能已达到限制。输入输入名称用于每输入的检测器模型探测器模型路由。

    如果您尝试将输入路由到 10 个以上的检测器型号,则可能会收到此警告消息。您可以将多达 10 种不同的探测器型号与单个探测器型号相关联。

structure

包含有关信息的分析结果structure对应于以下错误消息:

  • 消息: 操作可能只定义了一种类型,但发现了一个类型的数量类型。请拆分为单独的操作。

    如果您通过使用 API 操作创建或更新检测器模型在单个字段中指定了两个或更多操作,则可能会收到此错误消息。您可以定义一个Action对象。请确保将每个操作定义为单独的对象。

  • 消息: TransitionEvent过渡事件名称转换为不存在的状态状态名称.

    您可能会收到此错误消息,如果Amazon IoT Events找不到您的转换事件引用的下一个状态。请确保定义了下一个状态,并且您输入了正确的状态名称。

  • 消息: DetectorModelDefinition 具有共享状态名称:找到状态状态名称替换为状态数量重复。

    如果您对一个或多个状态使用相同的名称,则可能会收到此错误消息。请确保为检测器型号中的每个状态指定一个唯一的名称。州名称必须具有 1-128 个字符。有效字符:a-z、A-Z、0-9、_(下划线)和-(连字符)。

  • 消息: 定义的初始名称初始状态名称不符合一个界定的国家.

    如果初始状态名称不正确,您可能会收到此错误消息。检测器模型保持初始(开始)状态,直到输入到达。一旦输入到达,检测器模型将立即转换为下一个状态。请确保初始状态名称是已定义状态的名称,并且您输入了正确的名称。

  • 消息: 检测器模型定义必须在条件中至少使用一个输入。

    如果未在条件中指定输入,则可能会收到此错误。您必须至少在一个条件下使用一个输入。否则为Amazon IoT Events不评估传入的数据。

  • 消息: 只能在 SetTimer 中设置秒和持续时间表达式。

    您可能会收到此错误消息,如果您同时使用secondsdurationExpression为您的计时器。确保使用seconds或者durationExpression作为SetTimerAction. 有关更多信息,请参阅 。设置计时器操作中的Amazon IoT EventsAPI 参考.

expression-syntax

包含有关信息的分析结果expression‐syntax对应于以下错误消息:

  • 消息: 您的有效载荷表达式 {expression} 无效。定义的有效负载类型为 JSON,因此您必须指定Amazon IoT Events将计算结果为字符串。

    如果指定的有效载荷类型为 JSON,则Amazon IoT Events首先检查服务是否可以将您的表达式计算为字符串。评估结果不能是布尔值或数字。如果验证不成功,您可能会收到此错误。

  • 消息: SetVariableAction.value必须是表达式。无法解析值 '变量值'

    您可以使用SetVariableAction来定义一个变量namevalue. 这些区域有:value可以是字符串、数字或布尔值。您也可以为value. 有关更多信息,请参阅 。集变量操作,在Amazon IoT EventsAPI 参考.

  • 消息: 我们无法解析你的属性表达式(属性名称),以便 DynamoDB 操作。输入使用正确语法的表达式。

    必须对DynamoDBAction。替换模板。有关更多信息,请参阅 。DynamoDBAction中的Amazon IoT EventsAPI 参考.

  • 消息: 我们无法解析您对 DynamoDBv2 操作的表 tableName 的表达式。输入使用正确语法的表达式。

    这些区域有:tableNameDynamoDBv2Action必须为字符串。您必须使用表达式作为tableName. 这些表达式接受文字、运算符、函数、引用和替代模板。有关更多信息,请参阅 。DynamoDBv2Action中的Amazon IoT EventsAPI 参考.

  • 消息: 我们无法将您的表达式评估为有效的 JSON。动态 Bv2 操作仅支持 JSON 有效负载类型。

    负载类型DynamoDBv2必须是 JSON。确保Amazon IoT Events可以将有效负载的内容表达式评估为有效的 JSON。有关更多信息,请参阅 。DynamoDBv2Action,在Amazon IoT EventsAPI 参考.

  • 消息: 我们无法解析您的内容表达式以获取操作类型. 输入具有正确语法的内容表达式。

    内容表达式可以包含字符串('string'),变量($ 变量。变量名称),输入值($ 输入。输入名称.路径到基准面)、字符串连接以及包含${}.

  • 消息: 定制负载必须为非空。

    您可能会收到此错误消息,如果选择自定义负载,并且没有在Amazon IoT Events控制台。如果选择自定义负载,则必须在自定义负载. 有关更多信息,请参阅 。Payload中的Amazon IoT EventsAPI 参考.

  • 消息: 无法解析持续时间表达式 'TransitionEvent'用于计时器'计时器名称'。

    计时器的持续时间表达式的计算结果必须是介于 60—31622400 之间的值。持续时间的计算结果向下舍入为最接近的整数。

  • 消息: 无法解析表达式 'expression'用于操作名称

    如果指定操作的表达式语法不正确,您可能会收到此消息。请确保使用正确的语法输入表达式。有关更多信息,请参阅 Syntax

  • 消息: 您的fieldName对于 来说为IotSitewiseAction无法解析。您必须在表达式中使用正确的语法。

    您可能会收到此错误,如果Amazon IoT Events无法解析您的fieldName对于 来说为IotSitewiseAction. 确保fieldName使用Amazon IoT Events可以解析。有关更多信息,请参阅 。IotSiteWiseAction中的Amazon IoT EventsAPI 参考.

data-type

包含有关信息的分析结果data‐type对应于以下错误消息:

  • 消息: TransitionEventTransitionEvent计时器计时器名称无效,必须返回数字。

    您可能会收到此错误消息,如果Amazon IoT Events无法将计时器的持续时间表达式计算为数字。确保您的durationExpression可以转换为数字。不支持其他数据类型(如布尔值)。

  • 消息: 表达式条件表达式不是有效的条件表达式。

    您可能会收到此错误消息,如果Amazon IoT Events无法评估您的condition-expression设置为布尔值。布尔值必须为TRUE或者FALSE. 确保您的条件表达式可以转换为布尔值。如果结果不是布尔值,则相当于FALSE并且不调用操作或转换到nextState在事件中指定。

  • 消息: 数据类型不兼容推断类型] 找到的参考在以下表达式中:expression

    解决方案:检测器模型中相同输入属性或变量的所有表达式都必须引用相同的数据类型。

    使用以下信息解决此问题:

    • 当您将引用用作具有一个或多个运算符的操作数时,请确保您引用的所有数据类型都兼容。

      例如,在下面的表达式中,整数2是一个操作数==&&运算符。为了确保操作数兼容,$variable.testVariable + 1$variable.testVariable必须引用整数或小数。

      此外,整数1是一个操作数+运算符。因此,$variable.testVariable必须引用整数或小数。

      ‘$variable.testVariable + 1 == 2 && $variable.testVariable’
    • 当您使用引用作为传递给函数的参数时,请确保该函数支持您引用的数据类型。

      例如,以下内容timeout("time-name")函数需要一个带双引号的字符串作为参数。如果将引用用于计时器名称值,则必须引用带双引号的字符串。

      timeout("timer-name")
      注意

      对于convert(type, expression)函数,如果您使用type值,则引用的评估结果必须是StringDecimal,或者Boolean.

    有关更多信息,请参阅 References

  • 消息: 数据类型不兼容推断类型] 与参考. 这可能会导致运行时错误。

    如果同一输入属性或变量的两个表达式引用两种数据类型,则可能会收到此警告消息。确保相同输入属性或变量的表达式引用检测器模型中的相同数据类型。

referenced-data

包含有关信息的分析结果referenced‐data对应于以下错误消息:

  • 消息: 检测到损坏的计时器:计时计时器名称在表达式中使用,但永远不会设置。

    如果您使用未设置的计时器,您可能会收到此错误消息。在表达式中使用计时器之前,您必须设置计时器。此外,请确保输入正确的计时器名称。

  • 消息: 检测到损坏的变量:变量变量名称在表达式中使用,但永远不会设置。

    如果使用未设置的变量,则可能会收到此错误消息。在表达式中使用变量之前,您必须先设置变量。此外,请确保输入正确的变量名称。

referenced-resource

包含有关信息的分析结果referenced‐resource对应于以下错误消息:

  • 消息: 探测器模型定义包含不存在的对输入的引用。

    如果使用表达式引用不存在的输入,则可能会收到此错误消息。请确保您的表达式引用现有输入并输入正确的输入名称。如果您没有输入,请先创建一个。

  • 消息: 检测器模型定义包含无效的 InputName:输入名称

    如果您的检测器型号包含无效的输入名称,您可能会收到此错误消息。确保输入正确的输入名称。输入名称必须具有 1-128 个字符。有效字符:a-z、A-Z、0-9、_(下划线)和-(连字符)。