AWS IoT Core - Amazon Timestream

Amazon Timestream for LiveAnalytics와 유사한 기능을 원하는 경우 Amazon Timestream for InfluxDB를 고려해 보세요. 간소화된 데이터 수집과 실시간 분석을 위한 10밀리초 미만의 쿼리 응답 시간을 제공합니다. 여기에서 자세히 알아보세요.

AWS IoT Core

AWS IoT Core를 사용하여 IoT 디바이스에서 데이터를 수집하고 IoT Core 규칙 작업을 통해 해당 데이터를 Amazon Timestream으로 라우팅할 수 있습니다. AWS IoT 규칙 작업은 규칙이 트리거될 경우 수행할 작업을 지정합니다. Amazon Timestream 테이블과 Amazon DynamoDB 데이터베이스로 데이터를 전송하고 AWS Lambda 함수를 간접적으로 호출하는 작업을 정의할 수 있습니다.

IoT 규칙의 Timestream 작업은 Timestream에 직접 수신 메시지의 데이터를 삽입하는 데 사용됩니다. 작업은 IoT Core SQL 문의 결과를 구문 분석하고 Timestream에 데이터를 저장합니다. 반환된 SQL 결과 세트의 필드 이름은 measure::name으로 사용되며 필드 값은 measure::value입니다.

예를 들어 SQL 문과 샘플 메시지 페이로드를 고려합니다.

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 }

위의 SQL 문으로 Timestream에 대한 IoT Core 규칙 작업이 생성되는 경우 측정값 이름이 각각 temperature와 humidity이고 측정값이 각각 24.04와 43.605인 2개의 레코드가 Timestream에 추가됩니다.

SELECT 문에서 AS 연산자를 사용하여 Timestream에 추가되는 레코드의 측정값 이름을 수정할 수 있습니다. 아래의 SQL 문은 메시지 이름이 temperature 대신 temp인 레코드를 생성합니다.

측정값의 데이터 유형은 메시지 페이로드 값의 데이터 유형으로부터 추론됩니다. integer, double, boolean, string 등의 JSON 데이터 유형은 각각 BIGINT, DOUBLE, BOOLEAN 및 VARCHAR의 Timestream 데이터 유형에 매핑됩니다. cast() 함수를 사용하여 데이터를 특정 데이터 유형으로 강제 변환할 수도 있습니다. 측정값의 타임스탬프를 지정할 수 있습니다. 타임스탬프를 비워 두면 항목이 처리된 시간이 사용됩니다.

자세한 내용은 Timestream 규칙 작업 설명서를 참조하세요.

Timestream에 데이터를 저장하기 위한 IoT Core 규칙 작업을 생성하려면 다음 단계를 따르세요.

사전 조건

  1. 데이터베이스 생성에 설명된 지침에 따라 Amazon Timestream에서 데이터베이스를 생성합니다.

  2. 테이블 생성에 설명된 지침에 따라 Amazon Timestream에서 테이블을 생성합니다.

콘솔 사용

  1. 관리 > 메시지 라우팅 > 규칙을 클릭한 후 규칙 생성을 클릭하여 AWS IoT Core용 AWS Management Console에서 규칙을 생성합니다.

  2. 규칙 이름을 원하는 이름으로 설정하고 SQL을 아래에 표시된 텍스트로 설정합니다.

    SELECT temperature as temp, humidity from 'iot/topic'
  3. 작업 목록에서 Timestream을 선택합니다.

  4. Timestream 데이터베이스, 테이블 및 차원 이름을 지정하고, Timestream에 데이터를 쓸 역할을 지정합니다. 역할이 없는 경우 역할 생성을 클릭하여 역할을 생성할 수 있습니다.

  5. 규칙을 테스트하려면 여기에 표시된 지침을 따릅니다.

CLI 사용

AWS Command Line Interface(AWS CLI)를 설치하지 않은 경우 여기에서 설치하세요.

  1. timestream_rule.json이라는 JSON 파일에 다음 규칙 페이로드를 저장합니다. arn:aws:iam::123456789012:role/TimestreamRole을 Amazon Timestream에 데이터를 저장할 수 있는 액세스 권한을 AWS IoT에 부여하는 역할 arn으로 바꿉니다.

    { "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. 다음 명령을 사용하여 주제 규칙 생성

    aws iot create-topic-rule --rule-name timestream_test --topic-rule-payload file://<path/to/timestream_rule.json> --region us-east-1
  3. 다음 명령을 사용하여 주제 규칙의 세부 정보 검색

    aws iot get-topic-rule --rule-name timestream_test
  4. 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. 다음 명령을 사용하여 규칙 테스트

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

샘플 애플리케이션

AWS IoT Core와 함께 Timestream 사용을 시작하는 데 도움을 드리고자 주제 규칙 생성 및 해당 주제에 데이터를 게시하는 샘플 애플리케이션을 위해 AWS IoT Core와 Timestream에 필요한 아티팩트를 생성하는 완전한 기능을 갖춘 샘플 애플리케이션을 만들었습니다.

  1. GitHub의 지침에 따라 AWS IoT Core 통합용 샘플 애플리케이션의 GitHub 리포지토리를 복제합니다.

  2. README의 지침에 따라 AWS CloudFormation 템플릿을 사용하여 Amazon Timestream과 AWS IoT Core에서 필요한 아티팩트를 생성하고 주제에 샘플 메시지를 게시합니다.

동영상 자습서

동영상에서는 IoT Core가 Timestream과 어떻게 연동되는지 설명합니다.