

サポート終了通知: 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` フィールドは、オブジェクトのリストです。複数のオブジェクトを持つことができますが、各オブジェクトで許可されるアクションは 1 つだけです。  

**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"` が 1 つデクリメントされます。  

```
            {
              "eventName": "Pressure Okay",
              "condition": "$input.PressureInput.sensorData.pressure <= 70",
              "actions": [
                {
                  "setVariable": {
                    "variableName": "pressureThresholdBreached",
                    "value": "$variable.pressureThresholdBreached - 1"
                  }
                }
              ]
            }
```
`"$variable.pressureThresholdBreached"` が 0 に達すると (つまり、ディテクターが 70 以下の 3 つの連続した圧力測定値を受け取った場合)、ディテクターは `"Normal"` 状態に戻る必要があります。`transitionEvents` の `"BackToNormal"` イベントは、`"$variable.pressureThresholdBreached"` が 1 以下 (0 ではない) であることをテストし、さらに `"$input.PressureInput.sensorData.pressure"` で与えられる現在の値が 70 以下であることを再度検証しなければなりません。　  

```
          "transitionEvents": [
            {
              "eventName": "BackToNormal",
              "condition": "$input.PressureInput.sensorData.pressure <= 70 && $variable.pressureThresholdBreached <= 1",
              "nextState": "Normal"
            }
          ]
```
それ以外の場合、条件が可変の値のみをテストする場合、2 つの通常の読み取り値とそれに続く過圧読み取り値が条件を満たし、`"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`
```