

Aviso de fim do suporte: em 20 de maio de 2026, AWS encerrará o suporte para AWS IoT Events. Depois de 20 de maio de 2026, você não poderá mais acessar o AWS IoT Events console ou os AWS IoT Events recursos. Para obter mais informações, consulte [AWS IoT Events Fim do suporte](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-end-of-support.html).

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# AWS IoT Events restrições e limitações do modelo de detector
<a name="iotevents-restrictions-detector-model"></a>

É importante considerar o seguinte ao criar um modelo de detector.

**Como usar o campo `actions`**  
O campo `actions` é uma lista de objetos. Você pode ter mais de um objeto, mas somente uma ação é permitida em cada objeto.  

**Example**  

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

**Como usar o campo `condition`**  
O `condition` é obrigatório para o `transitionEvents` e opcional em outros casos.  
Se o campo `condition` não estiver presente, ele é equivalente ao `"condition": true`.  
O resultado da avaliação de uma expressão de condição deverá ser um valor booliano. Se o resultado não for um valor booliano, ele é equivalente ao `false` e não iniciará o `actions` ou fará a transição para o `nextState` especificado no evento.

**Disponibilidade de valores variáveis**  
Por padrão, se o valor de uma variável for definido em um evento, seu novo valor não estará disponível nem será usado para avaliar condições em outros eventos no mesmo grupo. O novo valor não está disponível nem é usado em uma condição de evento no mesmo campo `onInput`, `onEnter` ou `onExit`.  
Defina o parâmetro `evaluationMethod` na definição do modelo do detector para alterar esse comportamento. Quando o `evaluationMethod` é definido como `SERIAL`, as variáveis são atualizadas e as condições do evento são avaliadas na ordem em que os eventos são definidos. Caso contrário, quando o `evaluationMethod` é definido como `BATCH` ou padronizado como ele, as variáveis dentro de um estado serão atualizadas e os eventos dentro de um estado serão executados somente depois que todas as condições do evento forem avaliadas.  
No estado `"Dangerous"`, no campo `onInput`, `"$variable.pressureThresholdBreached"` é diminuído em um no evento `"Pressure Okay"` quando a condição é atendida (quando a entrada de corrente tem pressão menor ou igual a 70).  

```
            {
              "eventName": "Pressure Okay",
              "condition": "$input.PressureInput.sensorData.pressure <= 70",
              "actions": [
                {
                  "setVariable": {
                    "variableName": "pressureThresholdBreached",
                    "value": "$variable.pressureThresholdBreached - 1"
                  }
                }
              ]
            }
```
O detector deve voltar ao estado `"Normal"` quando `"$variable.pressureThresholdBreached"` atingir 0 (ou seja, quando o detector tiver recebido 3 leituras de pressão contíguas menores ou iguais a 70). O evento `"BackToNormal"` em `transitionEvents` deve testar se `"$variable.pressureThresholdBreached"` é menor ou igual a 1 (não 0) e também verificar novamente se o valor atual fornecido por `"$input.PressureInput.sensorData.pressure"` é menor ou igual a 70.  

```
          "transitionEvents": [
            {
              "eventName": "BackToNormal",
              "condition": "$input.PressureInput.sensorData.pressure <= 70 && $variable.pressureThresholdBreached <= 1",
              "nextState": "Normal"
            }
          ]
```
Caso contrário, se a condição testar apenas o valor da variável, duas leituras normais seguidas por uma leitura de sobrepressão atenderiam à condição e retornariam ao estado `"Normal"`. A condição é analisar o valor fornecido na última vez em que `"$variable.pressureThresholdBreached"` foi dado durante o tempo anterior que uma entrada foi processada. O valor da variável é redefinido para três no evento `"Overpressurized"`, mas não esqueça que esse novo valor ainda não está disponível para nenhuma `condition`.  
Por padrão, toda vez que um controle entra no campo `onInput`, uma `condition` só pode ver o valor de uma variável como ela estava no início do processamento da entrada, antes de ser alterada por qualquer ação especificada no `onInput`. O mesmo se aplica para `onEnter` e `onExit`. Qualquer alteração feita em uma variável quando entramos ou saímos do estado não está disponível para outras condições especificadas no mesmo nos campos `onEnter` ou `onExit`.

**Latência ao atualizar um modelo de detector**  
Se você atualizar, excluir e recriar um modelo de detector (consulte [UpdateDetectorModel](https://docs.aws.amazon.com/iotevents/latest/apireference/API_UpdateDetectorModel.html)), haverá algum atraso até que todos os detectores gerados (instâncias) sejam excluídos e o novo modelo seja usado para recriar os detectores. Eles são recriados depois que o novo modelo de detector entra em vigor e novas entradas chegam. Durante esse período, as entradas podem continuar sendo processadas pelos detectores gerados pela versão anterior do modelo do detector. Durante esse período, é possível continuar recebendo alertas definidos pelo modelo de detector anterior.

**Espaços nas teclas de entrada**  
Espaços são permitidos nas teclas de entrada, mas as referências à chave devem estar entre crases, tanto na definição do atributo de entrada, quanto quando o valor da chave é referenciado em uma expressão. Por exemplo, dada uma carga útil de mensagem como a seguinte:  

```
{
  "motor id": "A32",
  "sensorData" {
    "motor pressure": 56,
    "motor temperature": 39
  }
}
```
Use o seguinte para definir a entrada.  

```
{
  "inputName": "PressureInput",
  "inputDescription": "Pressure readings from a motor",
  "inputDefinition": {
    "attributes": [
      { "jsonPath": "sensorData.`motor pressure`" },
      { "jsonPath": "`motor id`" }
    ]
  }
}
```
Em uma expressão condicional, você também deve se referir ao valor de qualquer chave usando crases.  

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