

终止支持通知：2026 年 5 月 20 日， AWS 将终止对的支持。 AWS IoT Events 2026 年 5 月 20 日之后，您将无法再访问 AWS IoT Events 控制台或 AWS IoT Events 资源。有关更多信息，请参阅[AWS IoT Events 终止支持](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-end-of-support.html)。

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

# AWS IoT Events 探测器型号限制和限制
<a name="iotevents-restrictions-detector-model"></a>

创建探测器模型时，需要考虑以下事项。

**如何使用 `actions` 字段**  
`actions` 字段是一个对象列表。您可以有多个对象，但每个对象仅有一次操作。  

**Example**  

```
              "actions": [
                {
                  "setVariable": {
                    "variableName": "pressureThresholdBreached",
                    "value": "$variable.pressureThresholdBreached - 1"
                  }
                }
                {
                  "setVariable": {
                    "variableName": "temperatureIsTooHigh",
                    "value": "$variable.temperatureIsTooHigh - 1"
                  }
                }
              ]
```

**如何使用 `condition` 字段**  
`condition` 是 `transitionEvents` 的必填项，在其他情况下为可选。  
如果`condition` 字段不存在，则等同于 `"condition": true`。  
条件表达式的计算结果应为布尔值。如果结果非布尔值，则它等同于 `false`，且不会发起`actions`或转换为事件中指定的`nextState`。

**变量值的可用性**  
默认情况下，如果在事件中设置了变量值，则其新值不可用或无法用于评估同组其他事件的条件。新值不可用，也无法用于相同`onInput`、`onEnter` 或 `onExit`字段的事件条件。  
在探测器模型定义中设置 `evaluationMethod` 参数以更改此行为。当 `evaluationMethod` 设置为 `SERIAL` 时，将更新变量，并按照事件的定义顺序评估事件条件。否则，当`evaluationMethod`设置为`BATCH`或默认为它时，状态变量会更新，并且只有在评估了所有事件条件之后才会执行状态内事件。  
在 `"Dangerous"` 状态的 `onInput` 字段中，如果满足条件（当前输入的压力小于或等于 70 时），则`"Pressure Okay"`事件中的`"$variable.pressureThresholdBreached"`减一。  

```
            {
              "eventName": "Pressure Okay",
              "condition": "$input.PressureInput.sensorData.pressure <= 70",
              "actions": [
                {
                  "setVariable": {
                    "variableName": "pressureThresholdBreached",
                    "value": "$variable.pressureThresholdBreached - 1"
                  }
                }
              ]
            }
```
当`"Normal"`达到 0 时（也就是说，当探测器连续接收到三个小于等于 70 的压力读数时），探测器应该恢复到`"$variable.pressureThresholdBreached"`状态。`"BackToNormal"`中的`transitionEvents`事件必须测试`"$variable.pressureThresholdBreached"`小于等于 1（非 0），并且再次验证`"$input.PressureInput.sensorData.pressure"`提供的当前值是小于或等于 70。  

```
          "transitionEvents": [
            {
              "eventName": "BackToNormal",
              "condition": "$input.PressureInput.sensorData.pressure <= 70 && $variable.pressureThresholdBreached <= 1",
              "nextState": "Normal"
            }
          ]
```
否则，如果条件仅测试变量的值，则两个正常读数后跟一个超压读数将满足条件并过渡回`"Normal"`状态。条件是查看在上次处理输入时给出的值`"$variable.pressureThresholdBreached"`。`"Overpressurized"`事件中的变量值重置为 3，但是切记此新值现在不适用于任何`condition`。  
默认情况下，每次控件输入 `onInput` 字段时，`condition`只能获取变量在开始处理输入时的值，然后才会通过`onInput`中指定的任何操作更改。`onEnter` 和 `onExit`也是如此。当我们进入或退出该状态时，对变量所做的任何更改都不适用于相同 `onEnter` 或 `onExit` 字段中指定的其他条件。

**更新探测器模型时延迟**  
如果您更新、删除和重新创建探测器模型（参见 [UpdateDetectorModel](https://docs.aws.amazon.com/iotevents/latest/apireference/API_UpdateDetectorModel.html)），则在删除所有生成的探测器（实例）并使用新模型重新创建探测器之前，会有一些延迟。新探测器模型生效且新输入到达后，将重新创建它们。在此期间，输入可能会继续由先前版本的探测器模型生成的探测器处理。在此期间，您可能会继续收到由先前探测器模型定义的警报。

**输入键中的空格**  
输入键中允许使用空格，但是无论是在输入属性的定义中，还是在表达式中引用键值时，都必须用反引号括住对键的引用。例如，假定如下消息有效负载：  

```
{
  "motor id": "A32",
  "sensorData" {
    "motor pressure": 56,
    "motor temperature": 39
  }
}
```
使用以下内容定义输入。  

```
{
  "inputName": "PressureInput",
  "inputDescription": "Pressure readings from a motor",
  "inputDefinition": {
    "attributes": [
      { "jsonPath": "sensorData.`motor pressure`" },
      { "jsonPath": "`motor id`" }
    ]
  }
}
```
在条件表达式中，您还必须使用反引号来引用任何此类键的值。  

```
$input.PressureInput.sensorData.`motor pressure`
```