Timestream
A ação da regra Timestream grava atributos (medidas) de uma mensagem MQTT em uma tabela do Amazon Timestream. Para obter mais informações sobre o Amazon Timestream, consulte O que é o Amazon Timestream?.
nota
Amazon Timestream não está disponível em todos Região da AWS. Se o Amazon Timestream não estiver disponível em sua região, ele não aparecerá na lista de ações de regras.
Os atributos que essa regra armazena no banco de dados do Timestream são aqueles que resultam da instrução de consulta da regra. O valor de cada atributo no resultado da instrução de consulta é analisado para inferir seu tipo de dados (como em uma ação DynamoDBv2). O valor de cada atributo é gravado em seu próprio registro na tabela do Timestream. Para especificar ou alterar o tipo de dados de um atributo, use a função cast() na instrução de consulta. Para obter mais informações sobre o conteúdo de cada registro do Timestream, consulte. Conteúdo do registro do Timestream
nota
Com o SQL V2 (23-03-2016), valores numéricos que são números inteiros, como 10.0
, são convertidos em sua representação inteira (10
). Convertê-los explicitamente em um valor Decimal
, como usar a função cast(), não impede esse comportamento — o resultado ainda é um valor Integer
. Isso pode causar erros de incompatibilidade de tipos que impedem que os dados sejam registrados no banco de dados do Timestream. Para processar valores numéricos inteiros como valores Decimal
, use o SQL V1 (08/10/2015) para a instrução de consulta de regra.
nota
O número máximo de valores que uma ação de regra do Timestream pode gravar em uma tabela do Amazon Timestream é 100. Para obter mais informações, consulte a Referência da cota do Amazon Timestream.
Requisitos
Esta ação de regra tem os seguintes requisitos:
-
Um perfil do IAM que AWS IoT pode assumir a execução de operações
timestream:DescribeEndpoints
, etimestream:WriteRecords
. Para obter mais informações, consulte Conceder a uma regra AWS IoT o acesso que ela exige.No console AWS IoT, você pode escolher, atualizar ou criar uma função para permitir que AWS IoT execute essa ação de regra.
-
Se você usar um cliente AWS KMS para criptografar dados em repouso no Timestream, o serviço deverá ter permissão para usar o AWS KMS key em nome do chamador. Para obter mais informações, consulte Como AWS os serviços usam o AWS KMS.
Parâmetros
Ao criar uma regra AWS IoT com esta ação, você deve especificar as seguintes informações:
databaseName
-
O nome de um banco de dados do Amazon Timestream que tem a tabela para receber os registros que essa ação cria. Consulte também
tableName
.Compatível com modelos de substituição: API e AWS CLI somente
dimensions
-
Atributos de metadados das séries temporais que são gravados em cada registro de medida. Por exemplo, o nome e a zona de disponibilidade de uma instância do EC2 ou o nome do fabricante de uma turbina eólica são dimensões.
name
O nome da dimensão de metadados. Este é o nome da coluna no registro da tabela do banco de dados.
As dimensões não podem ser nomeadas:
measure_name
,measure_value
, outime
. Esses nomes são reservados. Os nomes das dimensões não podem começar comts_
oumeasure_value
e não podem conter o caractere de dois pontos (:
).Compatível com modelos de substituição: Não
value
O valor a ser gravado nesta coluna do registro do banco de dados.
Compatível com modelos de substituição: Sim
roleArn
-
O nome do recurso da Amazon (ARN) da função que concede permissão AWS IoT para gravar na tabela do banco de dados do Timestream. Para obter mais informações, consulte Requisitos.
Compatível com modelos de substituição: Não
tableName
-
O nome da tabela de banco de dados na qual gravar os registros de medida. Consulte também
databaseName
.Compatível com modelos de substituição: API e AWS CLI somente
timestamp
-
O valor a ser usado para o carimbo e data/hora da entrada. Se estiver em branco, a hora em que a entrada foi processada será usada.
unit
-
A precisão do valor do carimbo de data/hora que resulta da expressão descrita em
value
.Valores válidos:
SECONDS
|MILLISECONDS
|MICROSECONDS
|NANOSECONDS
. O padrão éMILLISECONDS
. value
-
Uma expressão que retorna um valor de tempo epoch longo.
Você pode usar a função time_to_epoch(String, String) para criar um carimbo de data/hora válido a partir de um valor de data ou hora transmitido na carga da mensagem.
Conteúdo do registro do Timestream
Os dados gravados na tabela do Amazon Timestream por essa ação incluem um carimbo de data e hora, metadados da ação da regra Timestream e o resultado da instrução de consulta da regra.
Para cada atributo (medida) no resultado da instrução de consulta, essa ação de regra grava um registro na tabela Timestream especificada com essas colunas.
Nome da coluna |
Tipo de atributo |
Valor |
Comentários |
---|---|---|---|
|
DIMENSÃO |
O valor especificado na entrada de ação da regra Timestream. |
Cada Dimensão especificada na entrada de ação da regra cria uma coluna no banco de dados do Timestream com o nome da dimensão. |
nome_medida |
NOME_MEDIDA |
O nome do atributo |
O nome do atributo no resultado da instrução de consulta cujo valor é especificado na coluna |
valor_medida:: |
VALOR_MEDIDA |
O nome do atributo no resultado da instrução de consulta. O nome do atributo está na coluna |
O valor é interpretado* e convertido como a combinação mais adequada de: |
tempo |
TIMESTAMP |
A data e a hora do registro no banco de dados. |
Esse valor é atribuído pelo mecanismo de regras ou pela propriedade |
* O valor do atributo lido da carga da mensagem é interpretado da seguinte forma. Consulte a Exemplos para obter uma ilustração de cada um desses casos.
-
Um valor sem aspas de
true
oufalse
é interpretado como um tipoboolean
. -
Um numérico decimal é interpretado como um tipo
double
. -
Um valor numérico sem ponto decimal é interpretado como um tipo
bigint
. -
Uma string entre aspas é interpretada como um tipo
varchar
. -
Objetos e valores de matriz são convertidos em strings JSON e armazenados como um tipo
varchar
.
Exemplos
O exemplo JSON a seguir define uma ação de regra do Timestream com modelos de substituição em uma regra AWS IoT.
{ "topicRulePayload": { "sql": "SELECT * FROM 'iot/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "timestream": { "roleArn": "arn:aws:iam::123456789012:role/aws_iot_timestream", "tableName": "devices_metrics", "dimensions": [ { "name": "device_id", "value": "${clientId()}" }, { "name": "device_firmware_sku", "value": "My Static Metadata" } ], "databaseName": "record_devices" } } ] } }
Usar a ação de regra de tópico Timestream definida no exemplo anterior com a carga útil da mensagem a seguir resulta nos registros do Amazon Timestream escritos na tabela a seguir.
{ "boolean_value": true, "integer_value": 123456789012, "double_value": 123.456789012, "string_value": "String value", "boolean_value_as_string": "true", "integer_value_as_string": "123456789012", "double_value_as_string": "123.456789012", "array_of_integers": [23,36,56,72], "array of strings": ["red", "green","blue"], "complex_value": { "simple_element": 42, "array_of_integers": [23,36,56,72], "array of strings": ["red", "green","blue"] } }
A tabela a seguir exibe as colunas e os registros do banco de dados que usam a ação de regra de tópico especificada para processar a carga útil da mensagem anterior criada. As colunas device_firmware_sku
e device_id
são as DIMENSÕES definidas na ação da regra de tópico. A ação de regra de tópico Timestream cria a coluna time
e as colunas measure_name
e measure_value::*
, que ela preenche com os valores do resultado da instrução de consulta da ação de regra de tópico.
device_firmware_sku | id_dispositivo | nome_medida | valor_medida::bigint | valor_medida::varchar | valor_medida::duplo | valor_medida::booleano | tempo |
---|---|---|---|---|---|---|---|
Meus metadados estáticos | iotconsole-159EXAMPLE738-0 | valor_complexo | - | {"elemento_simples":42,"matriz_de_inteiros":[23,36,56,72],"matriz de strings":["vermelho","verde","azul"]} | - | - | 2020-08-26 22:42:16.423000000 |
Meus metadados estáticos | iotconsole-159EXAMPLE738-0 | valor_inteiro_como_string | - | 123456789012 | - | - | 2020-08-26 22:42:16.423000000 |
Meus metadados estáticos | iotconsole-159EXAMPLE738-0 | valor_booleano | - | - | - | VERDADEIRO | 2020-08-26 22:42:16.423000000 |
Meus metadados estáticos | iotconsole-159EXAMPLE738-0 | valor_inteiro | 123456789012 | - | - | - | 2020-08-26 22:42:16.423000000 |
Meus metadados estáticos | iotconsole-159EXAMPLE738-0 | valor_string | - | Valor da string | - | - | 2020-08-26 22:42:16.423000000 |
Meus metadados estáticos | iotconsole-159EXAMPLE738-0 | matriz_de_inteiros | - | [23,36,56,72] | - | - | 2020-08-26 22:42:16.423000000 |
Meus metadados estáticos | iotconsole-159EXAMPLE738-0 | matriz de strings | - | ["vermelho","verde","azul"] | - | - | 2020-08-26 22:42:16.423000000 |
Meus metadados estáticos | iotconsole-159EXAMPLE738-0 | valor_booleano_como_string | - | VERDADEIRO | - | - | 2020-08-26 22:42:16.423000000 |
Meus metadados estáticos | iotconsole-159EXAMPLE738-0 | valor_duplo | - | - | 123.456789012 | - | 2020-08-26 22:42:16.423000000 |
Meus metadados estáticos | iotconsole-159EXAMPLE738-0 | valor_duplo_como_string | - | 123.45679 | - | - | 2020-08-26 22:42:16.423000000 |