终止支持通知:2026 年 5 月 20 日, Amazon 将终止对的支持。 Amazon IoT Events 2026 年 5 月 20 日之后,您将无法再访问 Amazon IoT Events 控制台或 Amazon IoT Events 资源。有关更多信息,请参阅Amazon IoT Events 终止支持。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
常见 Amazon IoT Events 问题和解决方案
请参阅以下部分,对错误进行故障排除,并找到解决问题的可能解决方案 Amazon IoT Events。
错误
探测器模型创建错误
我在尝试创建探测器模型时出错。
创建探测器模型时,您必须考虑以下限制。
-
每个
action字段中只允许执行一个操作。 -
对于
transitionEvents,condition是必填项。对于OnEnter、OnInput和OnExit事件,它是选填项。 -
如果
condition字段为空,则条件表达式的计算结果等同于true。 -
条件表达式的计算结果应为布尔值。如果结果不是布尔值,则它等同于
false且不会触发actions或转换为事件中指定的nextState。
有关更多信息,请参阅 Amazon IoT Events 探测器型号限制和限制。
从已删除的探测器模型获取更新
我几分钟前更新或删除了一个探测器模型,但我仍能通过 MQTT 消息或 SNS 提醒从旧探测器模型获取状态更新。
如果您更新、删除或重新创建探测器模型(参见 UpdateDetectorModel),则在删除所有探测器实例并使用新模型之前,会有一段延迟。在此期间,输入可能会继续由先前版本的探测器模型实例处理。您可能会继续收到由先前探测器型号定义的提醒。请至少等待 7 分钟,然后再重新检查更新或者报告错误。
操作触发失败(满足条件时)
当满足条件时,探测器无法触发操作或过渡至新状态。
验证探测器的条件表达式的计算结果是否为布尔值。如果结果不是布尔值,则它等同于 false 且不会触发 action 或转换为事件中指定的nextState。有关更多信息,请参阅条件表达式语法。
操作触发失败(违反阈值时)
当条件表达式中的变量达到指定值时,探测器不会触发操作或事件转换。
如果您为onInput、onEnter、或onExit更新setVariable,则在当前处理周期内评估任何condition时都不会使用新值。相反,原始值会在当前周期完成前一直使用。您可通过按探测器模型定义设置evaluationMethod参数,以更改此行为。如果将evaluationMethod设置为SERIAL,则按事件的定义顺序更新变量并评估事件条件。如果将evaluationMethod设置为BATCH(默认),则仅在评估所有事件条件后才会更新变量并执行事件。
状态用途不正确
当我尝试通过BatchPutMessage向输入发送消息时,探测器进入错误的状态。
如果您使用BatchPutMessage向输入发送多条消息,则无法保证消息或输入的处理顺序。为保证顺序,请一次发送一条消息,然后每次等待BatchPutMessage以确认成功。
连接消息
当我尝试调用 API 时收到了('Connection aborted.', error(54,
'Connection reset by peer'))错误。
验证 OpenSSL 是否使用 TLS 1.1 或更高版本建立连接。这应当是大多数 Linux 发行版或 Windows 7 及更高版本下的默认设置。macOS 用户可能需要升级 OpenSSL。
InvalidRequestException 消息
当我尝试打电话 InvalidRequestException 时我明白了CreateDetectorModel,UpdateDetectorModel APIs.
查看以下内容,以帮助解决问题。有关更多信息,请参阅CreateDetectorModel和UpdateDetectorModel。
-
确保不要同时使用
seconds和durationExpression作为SetTimerAction的参数。 -
请确保您的
durationExpression字符串表达式有效。字符串表达式可以包含数字、变量 ($variable.<variable-name>) 或输入值 ($input.<input-name>.<path-to-datum>)。
Amazon CloudWatch 日志action.setTimer错误
您可以设置 Amazon CloudWatch Logs 来监控 Amazon IoT Events 探测器模型实例。以下是您在使用时生成的 Amazon IoT Events常见错误action.setTimer。
-
错误:无法将名为
的计时器的持续时间表达式求值为数字。<timer-name>确保您的
durationExpression字符串表达式可以转换为数字。不允许使用其他数据类型,如布尔值。 -
错误:名为
的计时器的持续时间表达式的计算结果大于 31622440。为确保准确性,请确保您的持续时间表达式指介于 60 和 31622400 之间的值。<timer-name>确保您的计时器持续时间小于或等于 31622400 秒。持续时间的计算结果向下舍入为最接近的整数。
-
错误:名为
的计时器的持续时间表达式的计算结果小于 60。为确保准确性,请确保您的持续时间表达式指介于 60 和 31622400 之间的值。<timer-name>确保计时器的持续时间大于或等于 60 秒。持续时间的计算结果向下舍入为最接近的整数。
-
错误:名为
的计时器的持续时间表达式的结果无法计算。检查变量名称、输入名称和数据路径,以确保引用了现有变量和输入值。<timer-name>确保您的字符串表达式引用了现有的变量和输入值。字符串表达式可以包含数字、变量 (
$variable.) 和输入值 (variable-name$input.)。input-name.path-to-datum -
错误:无法设置名为
<timer-name>的计时器。请检查您的持续时间表达式,然后重试。请查看SetTimerAction操作以确保您指定了正确的参数,然后再次设置计时器。
有关更多信息,请参阅开发 Amazon IoT Events 探测器模型时启用 Amazon CloudWatch 日志记录。
Amazon CloudWatch 有效负载错误
您可以设置 Amazon CloudWatch Logs 来监控 Amazon IoT Events 探测器模型实例。以下是您在配置操作负载时生成的 Amazon IoT Events常见错误和警告。
-
错误:我们无法求解您的操作表达式。确保变量名称、输入名称和数据路径引用了现有变量和输入值。此外,请验证有效负载的大小是否小于 1 KB,即有效负载的最大允许大小。
确保输入正确的变量名称、输入名称和数据路径。如果操作有效负载大于 1 KB,您也可能会收到此错误消息。
-
错误:我们无法解析
有效负载的内容表达式。输入语法正确的内容表达式。<action-type>内容表达式可以包含字符串 (
')、变量 (string'$variable.)、输入值 (variable-name$input.)、字符串串联,以及包含input-name.path-to-datum${}的字符串。 -
错误:您的负载表达式 {
expression} 无效。定义的负载类型为 JSON,因此您必须指定 Amazon IoT Events 一个计算结果为字符串的表达式。如果指定的负载类型为 JSON,则 Amazon IoT Events 首先检查服务是否可以将您的表达式计算为字符串。计算结果不得为布尔值或数字。如果验证失败,您可能会收到此错误消息。
-
警告:此操作已执行,但我们无法将操作负载的内容表达式求值为有效的 JSON。定义的有效负载类型为 JSON。
如果您将有效负载类型定义为,请确保 Amazon IoT Events 可以将操作负载的内容表达式评估为有效的 JSON
JSON。 Amazon IoT Events 即使 Amazon IoT Events 无法将内容表达式评估为有效的 JSON,也会运行操作。
有关更多信息,请参阅开发 Amazon IoT Events 探测器模型时启用 Amazon CloudWatch 日志记录。
数据类型不兼容
消息:在以下表达式中找到了不兼容的<inferred-types>数据类型 [<reference>]:<expression>
收到此错误的原因可能是以下任一原因:
-
您引用的计算结果与表达式中的其他操作数不兼容。
-
不支持传递至函数的自变量的类型。
当您在表达式中使用引用时,请检查以下内容:
-
当您将引用值作为一个或多个运算符的操作数时,确保您引用的所有数据类型均兼容。
例如,在以下表达式中,整数
2是==和&&运算符的操作数。为确保操作数兼容,$variable.testVariable + 1和$variable.testVariable必须引用整数或小数。此外,整数
1是运算符+的操作数。因此,$variable.testVariable必须引用整数或小数。‘$variable.testVariable + 1 == 2 && $variable.testVariable’ -
当您使用引用作为传递给函数的自变量时,请确保该函数支持您引用的数据类型。
例如,以下
timeout("函数需要带有双引号的字符串作为自变量。如果使用引用作为time-name")timer-name值,则必须使用双引号引用字符串。timeout("timer-name")注意
对于
convert(函数,如果您使用引用作为type,expression)type值,则引用的计算结果必须是StringDecimal、或Boolean。
有关更多信息,请参阅 Amazon IoT Events 表达式中输入和变量的参考。
向发送消息失败 Amazon IoT Events
消息:无法向物联网事件发送消息
出现此错误的原因如下:
输入消息有效负载不包含
Input attribute Key。Input attribute Key与输入定义中指定的 JSON 路径不同。输入消息与 Amazon IoT Events 输入中定义的架构不匹配。
注意
其他服务的数据摄取也会出现失败。
例
例如 Amazon IoT Core,在中, Amazon IoT 规则将失败,并显示以下消息 Verify the Input Attribute key.
要解决这个问题,请确保输入有效载荷消息架构符合 Amazon IoT Events 输入定义并且Input attribute Key位置匹配。有关更多信息,请参阅在中为模型创建输入 Amazon IoT Events以了解如何定义 Amazon IoT Events 输入。