我正在尝试设置AWS IOT规则,以便在没有lambda帮助的情况下将数据发送到DynamoDB。
我的规则查询语句是:A
我的数据在AWS IOT中很好,因为我已成功使用lambda检索它。但是,即使按照the developer guide创建规则,为了将信息传递给Dynamo,通过设置$ {topic}和$ {timestamp}的2表单字段,它应该可以工作,我什么也得不到在DynamoDB中,我可以在Cloudwatch中找到以下异常:
SELECT *, topic() AS topic, timestamp() AS timestamp FROM '+/#'
HashKeyValue和RangeKeyValue似乎是空的。为什么?
我还在AWS论坛上发布了这个问题:https://forums.aws.amazon.com/thread.jspa?threadID=267987
答案 0 :(得分:0)
假设您的devide发送此有效负载:
mess={"reported":
{"light": "blue","Temperature": int(temp_data)),
"timestamp": str(pd.to_datetime(time.time()))}}
args.message =乱七八糟
您应该查询为:
SELECT message.reported.* FROM '#'
然后,将DynamoDB哈希键值设置为$ {MessageID()}
你会得到:
MessageID ||数据
1527010174562 { "light" : { "S" : "blue" }, "Temperature" : { "N" : "41" }, "timestamp" : { "S" : "1970-01-01 00:00:01.527010174" }}
然后,您可以使用Lambda轻松提取值,并通过Data Pipeline或Firehose发送到S3以创建数据流。