AWS IoT Events Problemas e soluções comuns - AWS IoT Events

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 Problemas e soluções comuns

Consulte a seção a seguir para solucionar erros e encontrar possíveis soluções para resolver problemas com AWS IoT Events.

Erros na criação do modelo do detector

Eu recebo erros quando tento criar um modelo de detector.

Ao criar um modelo de detector, considere as limitações a seguir.

  • Somente uma ação é permitida em cada campo action.

  • O condition é exigido para transitionEvents. É opcional para eventos OnEnter, OnInput e OnExit.

  • Se o campo condition estiver vazio, o resultado avaliado da expressão da condição será equivalente a true.

  • O resultado avaliado da expressão da condição deverá ser um valor booliano. Se o resultado não for um valor booliano, ele é equivalente ao false e não aciona o gatilho actions ou a transição para o nextState especificado no evento.

Para ter mais informações, consulte Restrições e limitações do modelo de detector.

Atualizações de um modelo de detector excluído

Eu atualizei ou excluí um modelo de detector há alguns minutos, mas ainda estou recebendo atualizações de estado do modelo de detector antigo por meio de mensagens MQTT ou alertas de SNS.

Se você atualizar, excluir ou recriar um modelo de detector (consulte UpdateDetectorModelo), haverá um atraso até que todas as instâncias do detector sejam excluídas e o novo modelo seja usado. Durante esse período, as entradas podem continuar sendo processadas pelas instâncias da versão anterior do modelo do detector. Você pode continuar recebendo alertas definidos pelo modelo de detector anterior. Aguarde pelo menos sete minutos antes de verificar novamente a atualização ou relatar um erro.

Falha no gatilho da ação (ao atender a uma condição)

O detector falha em acionar uma ação ou transição para um novo estado quando a condição é atendida.

Verifique se o resultado avaliado da expressão condicional do detector é um valor booliano. Se o resultado não for um valor booliano, ele é equivalente ao false e não aciona o gatilho action ou a transição para o nextState especificado no evento. Para obter mais informações, consulte Sintaxe de expressão condicional.

Falha no gatilho de ação (ao ultrapassar um limite)

O detector não aciona uma ação ou uma transição de evento quando a variável em uma expressão condicional atinge um valor especificado.

Se você atualizar setVariable para onInput, onEnter ou onExit, o novo valor não será usado ao avaliar nenhuma condition durante o ciclo de processamento corrente. Em vez disso, o valor original é usado até que o ciclo atual seja concluído. É possível alterar esse comportamento configurando o parâmetro evaluationMethod na definição de modelos de detectores. Quando evaluationMethod é definido para SERIAL, as variáveis são atualizadas e as condições do evento avaliadas na ordem em que os eventos são definidos. Quando evaluationMethod é definido para BATCH (o padrão), as variáveis são atualizadas e os eventos são executados somente após todas as condições do evento serem avaliadas.

Uso incorreto de estados

O detector entra nos estados errados quando eu tento enviar mensagens para as entradas usando BatchPutMessage.

Se você usar o BatchPutMessage para enviar várias mensagens às entradas, a ordem na qual as mensagens ou entradas são processadas não é garantida. Para garantir o pedido, envie mensagens uma de cada vez e espere cada vez que o BatchPutMessage reconheça o sucesso.

Mensagem de conexão

Recebo um erro ('Connection aborted.', error(54, 'Connection reset by peer')) quando tento chamar ou invocar uma API.

Verifique se o OpenSSL usa o TLS 1.1 ou uma versão posterior para estabelecer a conexão. Esse deve ser o padrão na maioria das distribuições Linux ou no Windows versão 7 e posterior. Os usuários do macOS talvez precisem atualizar o OpenSSL.

InvalidRequestException mensagem

Eu recebo InvalidRequestException quando tento fazer chamadas CreateDetectorModel e UpdateDetectorModel APIs.

Verifique o seguinte, para ajudar a resolver esse problema. Para obter mais informações, consulte CreateDetectorModelo e UpdateDetectormodelo.

  • Certifique-se de não usar seconds e durationExpression como parâmetros de SetTimerAction ao mesmo tempo.

  • Certifique-se de que sua expressão de string para que durationExpression seja válida. A expressão em cadeia de caracteres pode conter números, variáveis ($variable.<variable-name>) ou valores de entrada ($input.<input-name>.<path-to-datum>).

action.setTimerErros do Amazon CloudWatch Logs

Você pode configurar o Amazon CloudWatch Logs para monitorar instâncias AWS IoT Events de modelos de detectores. A seguir estão os erros comuns gerados por AWS IoT Events, quando você usaaction.setTimer.

  • Erro: a sua expressão de duração para o temporizador chamado <timer-name> não pôde ser avaliada como um número.

    Certifique-se de que sua expressão de string para durationExpression possa ser convertida em um número. Outros tipos de dados, como booliano, não são permitidos.

  • Erro: o resultado avaliado da sua expressão de duração para o temporizador chamado <timer-name> é maior que 31622440. Para garantir a precisão, certifique-se de que a sua expressão de duração se refira a um valor entre 60‐31622400.

    Certifique-se de que a duração de seu temporizador seja menor ou igual a 31622400 segundos. O resultado avaliado da duração é arredondado para baixo para o número inteiro mais próximo.

  • Erro: o resultado avaliado da sua expressão de duração para o temporizador chamado <timer-name> é menor que 60. Para garantir a precisão, certifique-se de que a sua expressão de duração se refira a um valor entre 60‐31622400.

    Certifique-se de que a duração de seu temporizador seja maior ou igual a 60 segundos. O resultado avaliado da duração é arredondado para baixo para o número inteiro mais próximo.

  • Erro: sua expressão de duração para o temporizador chamado <timer-name> não pôde ser avaliada. Verifique os nomes das variáveis, nomes de entrada e caminhos para os dados para garantir que você se refira às variáveis e entradas existentes.

    Certifique-se de que sua expressão de string se refira às variáveis e entradas existentes. A expressão de string pode conter números, variáveis ($variable.variable-name) e valores de entrada ($input.input-name.path-to-datum).

  • Erro: falha ao definir o temporizador chamado <timer-name>. Confira a expressão de duração e tente novamente.

    Consulte a SetTimeração Ação para garantir que você especificou os parâmetros corretos e, em seguida, defina o cronômetro novamente.

Para obter mais informações, consulte Habilitar o CloudWatch registro na Amazon ao desenvolver modelos AWS IoT Events de detectores.

Erros de CloudWatch carga útil da Amazon

Você pode configurar o Amazon CloudWatch Logs para monitorar instâncias AWS IoT Events de modelos de detectores. A seguir estão os erros e avisos comuns gerados por AWS IoT Events, quando você configura a carga útil da ação.

  • Erro: não foi possível avaliar sua expressão para a ação. Verifique se os nomes das variáveis, os nomes de entrada e os caminhos para os dados se referem às variáveis e aos valores de entrada existentes. Além disso, verifique se o tamanho da carga é menor que 1 KB, o tamanho máximo permitido de uma carga útil.

    Certifique-se de inserir os nomes corretos das variáveis, nomes de entrada e caminhos para os dados. Você também pode receber essa mensagem de erro se a carga da ação for maior que 1 KB.

  • Erro: não foi possível analisar sua expressão de conteúdo para a carga útil de <action-type>. Insira uma expressão de conteúdo com a sintaxe correta.

    É possível usar uma expressão de string que contenha strings ('string'), variáveis ($variable.variable-name), valores de entrada ($input.input-name.path-to-datum), concatenações de string e strings que contêm ${}.

  • Erro: sua expressão de carga útil {expression} não é válida. O tipo de carga útil definido é JSON, então você deve especificar uma expressão que AWS IoT Events seria avaliada como uma string.

    Se o tipo de carga útil especificado for JSON, AWS IoT Events primeiro verifique se o serviço pode avaliar sua expressão como uma string. O resultado avaliado não pode ser um booliano ou um número. Se a validação falhar, você poderá receber esse erro.

  • Aviso: a ação foi executada, mas não foi possível avaliar sua expressão de conteúdo para que a carga da ação fosse um JSON válido. O tipo de carga útil definido é JSON.

    Certifique-se de que AWS IoT Events pode avaliar sua expressão de conteúdo para a carga de ação como JSON válido, se você definir o tipo de carga como. JSON AWS IoT Events executa a ação mesmo que não AWS IoT Events consiga avaliar a expressão de conteúdo como JSON válido.

Para obter mais informações, consulte Habilitar o CloudWatch registro na Amazon ao desenvolver modelos AWS IoT Events de detectores.

Tipos de dados incompatíveis

Mensagem: tipos de dados incompatíveis [<inferred-types>] encontrados para <reference> na seguinte expressão: <expression>

Você pode receber um erro por um dos motivos a seguir:

  • Os resultados avaliados de suas referências não são compatíveis com outros operandos em suas expressões.

  • O tipo do argumento passado para uma função não é compatível.

Ao usar referências em expressões, verifique o seguinte:

  • Ao usar uma referência como operando com um ou mais operadores, verifique se todos os tipos de dados referenciados são compatíveis.

    Por exemplo, na expressão a seguir, o inteiro 2 é um operando dos operadores == e &&. Para garantir que os operandos sejam compatíveis, $variable.testVariable + 1 e $variable.testVariable devem referenciar um número inteiro ou decimal.

    Além disso, o inteiro 1 é um operando do operador +. Portanto, $variable.testVariable deve fazer referência a um número inteiro ou decimal.

    ‘$variable.testVariable + 1 == 2 && $variable.testVariable’
  • Ao usar uma referência como argumento passado para uma função, verifique se a função é compatível com os tipos de dados aos quais você faz referência.

    Por exemplo, a função a seguir timeout("time-name") requer uma string com aspas duplas como argumento. Caso use uma referência para o valor do timer-name, você deverá referenciar uma string com aspas duplas.

    timeout("timer-name")
    nota

    Para a função convert(type, expression), se você usar uma referência para o valor de type, o resultado avaliado da sua referência deverá ser String, Decimal ou Boolean.

Para ter mais informações, consulte Referências.

Falha ao enviar mensagem para AWS IoT Events

Mensagem: falha ao enviar mensagem para IoT Events

Você poderá ter esse erro pelos seguintes motivos:

  • A carga útil de mensagem de entrada não contêm Input attribute Key.

  • O Input attribute Key não está no mesmo caminho JSON especificado na definição de entrada.

  • A mensagem de entrada não corresponde ao esquema, conforme definido na AWS IoT Events entrada.

nota

A ingestão de dados de outros serviços também apresentará falhas.

Por exemplo AWS IoT Core, em, a AWS IoT regra falhará com a seguinte mensagem Verify the Input Attribute key.

Para resolver isso, certifique-se de que o esquema da mensagem de carga útil de entrada esteja em conformidade com a definição de AWS IoT Events entrada e que a localização correspondaInput attribute Key. Para obter mais informações, consulte Como criar uma entrada no Painel de Navegação para saber como definir AWS IoT Events entradas.