AWS IoT에서 DynamoDB로 Rules를 사용하여 데이터를 투입하면 Payload부가 데이터 변환되어 초조한 이야기
준비
AWS IoT 측 설정
Rules에서 DynamoDB쪽으로 흐르도록 해 둡니다.
Rules는 다음 설정을 유지합니다.
카테고리
내용
Query
SELECT * FROM '/test/#'
액션
DynamoDB 측 설정
다음 설정을 유지합니다.
카테고리
내용
유형
주 파티션 키
id
문자열
기본 정렬 키
timestamp
문자열
*timestamp는 수신 시간용
송부용 데이터
다음 데이터를 흘려 보겠습니다. 보내는 주제는 "/test/sensor_result"
{
"sensor_id": 101,
"temperature": 25.4,
"humidity": 40.5,
"timestamp": '2016-09-11T11:00:00'
}
송부 결과
데이터 송부를 하면 DynamoDB에 데이터가 투입되는데 이런 느낌으로 보낸 데이터가 payload_raw로 인코딩된 상태로 저장되어 버렸습니다. 이것으로는 투입한 데이터를 사용하려고 해도 사용할 수 없습니다. 조금 초조했습니다.
※ 참고로 payload_raw는 Base64로 인코딩되었습니다.
데이터를 얻으면 문제가 없었습니다.
아무것도 없는, Python등으로 데이터 취득했을 때에는 특히 문제 없게 표시되었습니다. DynamoDB 측에 표시 모드 같은 것이 있으면 초조하지 않고 끝났는데.
일단 확인하기 위해 Lambda에서 스크립트를 작성했습니다.
import boto3
import logging
from boto3.dynamodb.conditions import Key
logger = logging.getLogger()
logger.setLevel(logging.INFO)
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('AWSTest')
def handle_request(event, context):
response = table.query(
KeyConditionExpression=Key('id').eq('sensor_result')
)
logger.info("response: {}".format(response))
결과는 이런 느낌.
[INFO] 2016-09-11T13:08:27.232Z d3c0e7af-7820-11e6-801d-230a9d8bdc12 response: {u'Count': 4, u'Items': [{u'timestamp': u'1473595931501', u'payload_raw': Binary('{
"sensor_id": 101,
"temperature": 25.4,
"humidity": 40.5,
"timestamp": \'2016-09-11T11:00:00\'
}')
Reference
이 문제에 관하여(AWS IoT에서 DynamoDB로 Rules를 사용하여 데이터를 투입하면 Payload부가 데이터 변환되어 초조한 이야기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kojiisd/items/52ea3df7bf58608aee40
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
{
"sensor_id": 101,
"temperature": 25.4,
"humidity": 40.5,
"timestamp": '2016-09-11T11:00:00'
}
데이터 송부를 하면 DynamoDB에 데이터가 투입되는데 이런 느낌으로 보낸 데이터가 payload_raw로 인코딩된 상태로 저장되어 버렸습니다. 이것으로는 투입한 데이터를 사용하려고 해도 사용할 수 없습니다. 조금 초조했습니다.
※ 참고로 payload_raw는 Base64로 인코딩되었습니다.
데이터를 얻으면 문제가 없었습니다.
아무것도 없는, Python등으로 데이터 취득했을 때에는 특히 문제 없게 표시되었습니다. DynamoDB 측에 표시 모드 같은 것이 있으면 초조하지 않고 끝났는데.
일단 확인하기 위해 Lambda에서 스크립트를 작성했습니다.
import boto3
import logging
from boto3.dynamodb.conditions import Key
logger = logging.getLogger()
logger.setLevel(logging.INFO)
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('AWSTest')
def handle_request(event, context):
response = table.query(
KeyConditionExpression=Key('id').eq('sensor_result')
)
logger.info("response: {}".format(response))
결과는 이런 느낌.
[INFO] 2016-09-11T13:08:27.232Z d3c0e7af-7820-11e6-801d-230a9d8bdc12 response: {u'Count': 4, u'Items': [{u'timestamp': u'1473595931501', u'payload_raw': Binary('{
"sensor_id": 101,
"temperature": 25.4,
"humidity": 40.5,
"timestamp": \'2016-09-11T11:00:00\'
}')
Reference
이 문제에 관하여(AWS IoT에서 DynamoDB로 Rules를 사용하여 데이터를 투입하면 Payload부가 데이터 변환되어 초조한 이야기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kojiisd/items/52ea3df7bf58608aee40
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import boto3
import logging
from boto3.dynamodb.conditions import Key
logger = logging.getLogger()
logger.setLevel(logging.INFO)
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('AWSTest')
def handle_request(event, context):
response = table.query(
KeyConditionExpression=Key('id').eq('sensor_result')
)
logger.info("response: {}".format(response))
[INFO] 2016-09-11T13:08:27.232Z d3c0e7af-7820-11e6-801d-230a9d8bdc12 response: {u'Count': 4, u'Items': [{u'timestamp': u'1473595931501', u'payload_raw': Binary('{
"sensor_id": 101,
"temperature": 25.4,
"humidity": 40.5,
"timestamp": \'2016-09-11T11:00:00\'
}')
Reference
이 문제에 관하여(AWS IoT에서 DynamoDB로 Rules를 사용하여 데이터를 투입하면 Payload부가 데이터 변환되어 초조한 이야기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kojiisd/items/52ea3df7bf58608aee40텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)