AWS IoT Core - Amazon Timestream

Para obtener capacidades similares a las de Amazon Timestream para LiveAnalytics, considere Amazon Timestream para InfluxDB. Ofrece una ingesta de datos simplificada y tiempos de respuesta a las consultas en milisegundos de un solo dígito para realizar análisis en tiempo real. Obtenga más información aquí.

AWS IoT Core

Puede recopilar datos de dispositivos de IoT mediante AWS IoT Core y enrutar los datos a Amazon Timestream mediante acciones de las reglas de AWS IoT Core. Las acciones de las reglas de IoT especifican qué hacer cuando se desencadena una regla. Puede definir acciones para enviar datos a una tabla de Amazon Timestream o a una base de datos de Amazon DynamoDB e invocar una función de Lambda de AWS.

La acción de Timestream en las reglas de IoT se utiliza para insertar datos de los mensajes entrantes directamente en Timestream. La acción analiza los resultados de la instrucción SQL de IoT Core y almacena los datos en Timestream. Los nombres de los campos del conjunto de resultados de SQL devuelto se utilizan como measure::name y el valor del campo es measure::value.

Por ejemplo, observe la instrucción de SQL y la carga útil del mensaje de ejemplo:

SELECT temperature, humidity from 'iot/topic'
{ "dataFormat": 5, "rssi": -88, "temperature": 24.04, "humidity": 43.605, "pressure": 101082, "accelerationX": 40, "accelerationY": -20, "accelerationZ": 1016, "battery": 3007, "txPower": 4, "movementCounter": 219, "device_id": 46216, "device_firmware_sku": 46216 }

Si se crea una acción de la regla de IoT Core para Timestream con la instrucción de SQL anterior, se agregarán dos registros a Timestream con nombres de medida de temperatura y humedad y valores de medida de 24,04 y 43,605, respectivamente.

Puede modificar el nombre de medida de un registro que se va a agregar a Timestream mediante el operador de AS de la instrucción SELECT. La siguiente instrucción de SQL creará un registro con el nombre del mensaje temp en vez de temperature.

El tipo de datos de la medida se deduce del tipo de datos del valor de la carga útil del mensaje. Los tipos de datos JSON, como entero, doble, booleano y cadena, se asignan a los tipos de datos de Timestream, BIGINT, DOUBLE, BOOLEAN y VARCHAR, respectivamente. También se pueden forzar los datos a los tipos de datos específicos mediante la función cast(). Puede especificar la marca de tiempo de la medida. Si la marca de tiempo está en blanco, se utiliza la hora en que se procesó la entrada.

Puede consultar la documentación sobre las reglas y acciones de Timestream para obtener más información.

Para crear una acción de la regla de IoT Core para almacenar datos en Timestream, siga los pasos que se indican a continuación:

Requisitos previos

  1. Cree una base de datos en Amazon Timestream según las instrucciones que se describen en Creación de una base de datos de .

  2. Cree una tabla en Amazon Timestream según las instrucciones que se describen en Creación de una tabla.

Uso de la consola

  1. Use la consola de administración de AWS para AWS IoT Core a fin de crear una regla. Para ello, haga clic en Administrar > Enrutamiento de mensajes > Reglas y, luego, en Crear regla.

  2. Defina el nombre de la regla con el nombre que desee y el SQL con el texto que se muestra a continuación.

    SELECT temperature as temp, humidity from 'iot/topic'
  3. Seleccione Timestream en la lista de acciones.

  4. Especifique los nombres de la base de datos, las tablas y las dimensiones de Timestream junto con el rol para escribir los datos en Timestream. Si el rol no existe, puede crearlo haciendo clic en Crear roles

  5. Para probar la regla, siga las instrucciones que se indican aquí.

Uso de la CLI

Si no instaló la interfaz de la línea de comandos de AWS (AWS CLI), hágalo desde aquí.

  1. Guarde la siguiente carga útil de las reglas en un archivo JSON llamado timestream_rule.json. Reemplace arn:aws:iam::123456789012:role/TimestreamRole con su rol de ARN, que permite a AWS IoT acceder a los datos almacenados en Amazon Timestream.

    { "actions": [ { "timestream": { "roleArn": "arn:aws:iam::123456789012:role/TimestreamRole", "tableName": "devices_metrics", "dimensions": [ { "name": "device_id", "value": "${clientId()}" }, { "name": "device_firmware_sku", "value": "My Static Metadata" } ], "databaseName": "record_devices" } } ], "sql": "select * from 'iot/topic'", "awsIotSqlVersion": "2016-03-23", "ruleDisabled": false }
  2. Cree una regla de tema mediante el uso del siguiente comando.

    aws iot create-topic-rule --rule-name timestream_test --topic-rule-payload file://<path/to/timestream_rule.json> --region us-east-1
  3. Recupere la información de la regla de tema con el siguiente comando.

    aws iot get-topic-rule --rule-name timestream_test
  4. Guarde la siguiente carga útil del mensaje en un archivo llamado timestream_msg.json

    { "dataFormat": 5, "rssi": -88, "temperature": 24.04, "humidity": 43.605, "pressure": 101082, "accelerationX": 40, "accelerationY": -20, "accelerationZ": 1016, "battery": 3007, "txPower": 4, "movementCounter": 219, "device_id": 46216, "device_firmware_sku": 46216 }
  5. Pruebe la regla con el siguiente comando.

    aws iot-data publish --topic 'iot/topic' --payload file://<path/to/timestream_msg.json>

Aplicación de muestra

Para ayudarlo a empezar a utilizar Timestream con AWS IoT Core, hemos creado una aplicación de muestra totalmente funcional que crea los artefactos necesarios en AWS IoT Core y Timestream para crear una regla de tema y una aplicación de muestra a fin de publicar datos sobre el tema.

  1. Clone el repositorio de GitHub para la aplicación de muestra para la integración de AWS IoT Core según las instrucciones que se encuentran en GitHub.

  2. Siga las instrucciones del README para utilizar una plantilla de AWS CloudFormation a fin de crear los artefactos necesarios en Amazon Timestream y AWS IoT Core y publicar mensajes de muestra sobre el tema.

Tutoriales en video

En este video se explica cómo funciona IoT Core con Timestream.