Timestream
La acción de regla Timestream escribe atributos (medidas) de un mensaje MQTT en una tabla de Amazon Timestream. Para obtener información completa sobre Amazon Timestream, consulte ¿Qué es Amazon Timestream?
nota
Amazon Timestream no está disponible en todas las Región de AWS. Si Amazon Timestream no está disponible en su región, no aparecerá en la lista de acciones de reglas.
Los atributos que esta regla almacena en la base de datos de Timestream son los que resultan de la declaración de consulta de la regla. El valor de cada atributo del resultado de la declaración de consulta se analiza para deducir su tipo de datos (como en una acción DynamoDBv2). El valor de cada atributo se escribe en su propio registro de la tabla Timestream. Para especificar o cambiar el tipo de datos de un atributo, utilice la función cast() en la sentencia de consulta. Para obtener más información acerca del contenido de cada registro de Timestream, consulte Contenido de los registros de Timestream.
nota
Con SQL V2 (2016-03-23), los valores numéricos que son números enteros, como 10.0
, se convierten su representación Entera (10
). Convertirlos explícitamente en un valor Decimal
, por ejemplo utilizando la función cast (), no evita este comportamiento: el resultado sigue siendo un valor Integer
. Esto puede provocar errores de discordancia de tipos que impidan que los datos se registren en la base de datos de Timestream. Para procesar los valores numéricos de números enteros como valores Decimal
, utilice SQL V1 (2015-10-08) como instrucción de consulta de regla.
nota
El número máximo de valores que una acción de regla Timestream puede escribir en una tabla de Amazon Timestream es 100. Para obtener más información, consulte la Referencia de Cuotas de Amazon Timestream.
Requisitos
Esta regla tiene los siguientes requisitos:
-
un rol de IAM que AWS IoT puede asumir para realizar las operaciones
timestream:DescribeEndpoints
ytimestream:WriteRecords
. Para obtener más información, consulte Otorgar a una regla AWS IoT el acceso que requiere.En la consola de AWS IoT, puede elegir, actualizar o crear un rol que permita a AWS IoT realizar esta acción de regla.
-
Si utiliza una AWS KMS gestionada por el cliente para cifrar los datos en reposo en Timestream, el servicio debe tener permiso para utilizar el AWS KMS key en nombre de la persona que llama. Para más información, consulte Cómo los servicios AWS utilizan KMS AWS.
Parámetros
Cuando cree una regla AWS IoT con esta acción, debe especificar la información siguiente:
databaseName
-
Nombre de una base de datos de Amazon Timestream que contiene la tabla para recibir los registros que crea esta acción. Véase también
tableName
.Admite plantillas de sustitución: API y AWS CLI únicamente
dimensions
-
Atributos de metadatos de las series de tiempo que se escriben en cada registro de medida. Por ejemplo, el nombre y la zona de disponibilidad de una instancia EC2 o el nombre del fabricante de un aerogenerador son dimensiones.
name
El nombre de la dimensión de metadatos. Es el nombre de la columna en el registro de tabla de la base de datos.
Las dimensiones no se pueden denominar:
measure_name
,measure_value
otime
. Estos nombres están reservados. Los nombres de las dimensiones no pueden empezar ports_
o nimeasure_value
pueden contener el carácter de dos puntos (:
).Admite plantillas de sustitución: No
value
El valor que se va a escribir en esta columna del registro de la base de datos.
Admite plantillas de sustitución: Sí
roleArn
-
El nombre de recurso de Amazon (ARN) del rol que concede permiso a AWS IoT para escribir en la tabla de base de datos Timestream. Para obtener más información, consulte Requisitos.
Admite plantillas de sustitución: No
tableName
-
El nombre de la tabla de la base de datos en la que escribir los registros de la medida. Véase también
databaseName
.Admite plantillas de sustitución: API y AWS CLI únicamente
timestamp
-
El valor que se va a utilizar para la marca de tiempo de la entrada. Si está en blanco, se utiliza la hora en que se procesó la entrada.
unit
-
La precisión del valor de marca de tiempo que resulta de la expresión que se describe en
value
.Valores válidos:
SECONDS
|MILLISECONDS
|MICROSECONDS
|NANOSECONDS
El valor predeterminado esMILLISECONDS
. value
-
Una expresión que devuelve un valor de tiempo de época larga.
Puede utilizar la función time_to_epoch(String, String) para crear una marca de tiempo válida a partir de un valor de fecha u hora incluido en la carga útil del mensaje.
Contenido de los registros de Timestream
Los datos que esta acción escribe en la tabla Amazon Timestream incluyen una marca de tiempo, los metadatos de la acción de la regla Timestream y el resultado de la declaración de consulta de la regla.
Para cada atributo (medida) del resultado de la declaración de consulta, esta acción de regla escribe un registro en la tabla Timestream especificada con estas columnas.
Nombre de la columna |
Tipo de atributo |
Valor |
Comentarios |
---|---|---|---|
|
DIMENSION |
El valor especificado en la entrada de acción de la regla Timestream. |
Cada dimensión especificada en la entrada de acción de la regla crea una columna en la base de datos de Timestream con el nombre de la dimensión. |
measure_name |
MEASURE_NAME |
Nombre del atributo |
El nombre del atributo en el resultado de la declaración de consulta cuyo valor se especifica en la columna |
measure_value:: |
MEASURE_VALUE |
El valor del atributo en el resultado de la sentencia de consulta. El nombre del atributo está en la columna |
El valor se interpreta* y se emite como la coincidencia más adecuada de: |
tiempo |
MARCA DE TIEMPO |
Congela la fecha y la hora de la base de datos. |
Este valor lo asigna el motor de reglas o la propiedad |
* El valor del atributo leído en la carga útil del mensaje se interpreta de la siguiente manera. Consulte la Ejemplos para ver una ilustración de cada uno de estos casos.
-
Un valor sin comillas de
true
ofalse
se interpreta como un tipoboolean
. -
Un número decimal se interpreta como un tipo
double
. -
Un valor numérico sin punto decimal se interpreta como un tipo
bigint
. -
Una cadena entre comillas se interpreta como un tipo
varchar
. -
Los objetos y los valores de la matriz se convierten en cadenas JSON y se almacenan como un tipo
varchar
.
Ejemplos
El siguiente ejemplo JSON define una acción de regla Timestream con una plantilla de sustitución en una regla 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" } } ] } }
Si se utiliza la acción de regla del tema Timestream definida en el ejemplo anterior con la carga útil del mensaje siguiente, se obtienen los registros de Amazon Timestream escritos en la tabla siguiente.
{ "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"] } }
En la siguiente tabla se muestran las columnas y los registros de la base de datos que se crean al utilizar la acción de regla temática especificada para procesar la carga útil del mensaje anterior. Las columnas device_firmware_sku
y device_id
son las DIMENSIONES definidas en la acción de la regla temática. La acción de regla temática Timestream crea la columna time
y las columnas measure_name
y measure_value::*
, que rellena con los valores del resultado de la declaración de consulta de la acción de regla temática.
device_firmware_sku | device_id | measure_name | measure_value::bigint | measure_value::varchar | measure_value::double | measure_value::boolean | hora |
---|---|---|---|---|---|---|---|
Mis metadatos estáticos | iotconsole-159EXAMPLE738-0 | complex_value | - | {"simple_element":42,"array_of_integers":[23,36,56,72],"array of strings":["red","green","blue"]} | - | - | 2020-08-26 22:42:16.423000000 |
Mis metadatos estáticos | iotconsole-159EXAMPLE738-0 | integer_value_as_string | - | 123456789012 | - | - | 2020-08-26 22:42:16.423000000 |
Mis metadatos estáticos | iotconsole-159EXAMPLE738-0 | boolean_value | - | - | - | TRUE | 2020-08-26 22:42:16.423000000 |
Mis metadatos estáticos | iotconsole-159EXAMPLE738-0 | integer_value | 123456789012 | - | - | - | 2020-08-26 22:42:16.423000000 |
Mis metadatos estáticos | iotconsole-159EXAMPLE738-0 | string_value | - | Valor de cadena | - | - | 2020-08-26 22:42:16.423000000 |
Mis metadatos estáticos | iotconsole-159EXAMPLE738-0 | matriz_de_enteros | - | [23,36,56,72] | - | - | 2020-08-26 22:42:16.423000000 |
Mis metadatos estáticos | iotconsole-159EXAMPLE738-0 | matriz de cadenas | - | ["red","green","blue"] | - | - | 2020-08-26 22:42:16.423000000 |
Mis metadatos estáticos | iotconsole-159EXAMPLE738-0 | boolean_value_as_string | - | TRUE | - | - | 2020-08-26 22:42:16.423000000 |
Mis metadatos estáticos | iotconsole-159EXAMPLE738-0 | double_value | - | - | 123.456789012 | - | 2020-08-26 22:42:16.423000000 |
Mis metadatos estáticos | iotconsole-159EXAMPLE738-0 | double_value_as_string | - | 123.45679 | - | - | 2020-08-26 22:42:16.423000000 |