

支援終止通知：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` 欄位中，`"Pressure Okay"`當條件滿足時 （當目前的輸入壓力小於或等於 70 時）， `"$variable.pressureThresholdBreached"` 會以 1 遞減。  

```
            {
              "eventName": "Pressure Okay",
              "condition": "$input.PressureInput.sensorData.pressure <= 70",
              "actions": [
                {
                  "setVariable": {
                    "variableName": "pressureThresholdBreached",
                    "value": "$variable.pressureThresholdBreached - 1"
                  }
                }
              ]
            }
```
當 `"$variable.pressureThresholdBreached"`達到 0 時 （亦即當偵測器收到三個小於或等於 70 的連續壓力讀數時），偵測器應轉返 `"Normal"` 狀態。中的`"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`
```