Modelos de substituição
Você pode usar um modelo de substituição para aumentar os dados JSON gerados quando uma regra é acionada e a AWS IoT realiza uma ação. A sintaxe de um modelo de substituição é ${
expressão}
, em que expressão pode ser qualquer expressão compatível com o AWS IoT na cláusula SELECT, na cláusula WHERE e em Ações de regra do AWS IoT. Essa expressão pode ser conectada a um campo de ação em uma regra, permitindo que você configure dinamicamente uma ação. Na verdade, esse recurso substitui uma informação em uma ação. Isso inclui funções, operadores e informações presentes na carga da mensagem original.
Importante
Como uma expressão em um modelo de substituição é avaliada separadamente da instrução "SELECT...", você não pode fazer referência a um alias criado com a cláusula AS. Você pode fazer referência somente às informações presentes na carga original, além das funções e dos operadores compatíveis.
Para obter mais informações sobre as expressões compatíveis, consulte Referência SQL do AWS IoT.
As ações de regra a seguir oferecem suporte a modelos de substituição. Cada ação oferece suporte a campos diferentes que podem ser substituídos.
Os modelos de substituição aparecem nos parâmetros de ação dentro de uma regra:
{ "sql": "SELECT *, timestamp() AS timestamp FROM 'my/iot/topic'", "ruleDisabled": false, "actions": [{ "republish": { "topic": "${topic()}/republish", "roleArn": "arn:aws:iam::123456789012:role/my-iot-role" } }] }
Se essa regra for acionada pelo JSON a seguir publicado em my/iot/topic
:
{ "deviceid": "iot123", "temp": 54.98, "humidity": 32.43, "coords": { "latitude": 47.615694, "longitude": -122.3359976 } }
Depois, esta regra publica o JSON a seguir como my/iot/topic/republish
, que o AWS IoT substitui de ${topic()}/republish
:
{ "deviceid": "iot123", "temp": 54.98, "humidity": 32.43, "coords": { "latitude": 47.615694, "longitude": -122.3359976 }, "timestamp": 1579637878451 }