我使用Ansible playbook创建AWS IoT规则以形成云。 下面是我想要创建一个简单规则来编写从更新的设备阴影到S3的所有内容的片段。 Key的名称应为YYYY / MM / DD。
my_iot_rule:
region: "{{ region }}"
state: present
name: "{{ envType }}_deviceshadow_rule_v1"
description: Forward device shadow status to S3
sql: SELECT * FROM "${aws}/things/#/shadow/get/accepted" WHERE schemaVersion='mySchemaVersion1.0'
sqlVersion: "2016-03-23"
actions:
- s3:
roleArn: arn:aws:iam::{{ awsAccount.accountId }}:role/iot-rule-engine
bucketName: "{{ s3.someBucketName}}"
"key": "deviceshadow/${device.deviceId}**/YYYY/MM/DD/somename.someextention**"
如何转换"时间":1471618669000以获得YYYY,MM和DD的"键"的值在上面。 IoT SQL中是否有任何功能?
或者我如何在物联网规则SQL中获得Sysdate? 提前致谢。
答案 0 :(得分:1)
今天,AWS IOT SQL功能没有date
功能。最近的解决方案是将纪元转换为自1970-1-1以来的天数deviceshadow/${device.deviceId}/${timestamp()/86400000}/${timestamp()}
。
这会将每个事件消息(唯一ID作为时间戳)按天分组。
这仍然不是人类可读的,我想唯一的方法是使用lambda进行日期转换。
答案 1 :(得分:0)
请使用:
key:${parse_time("yyyy", timestamp())}/${parse_time("MM", timestamp())}/${parse_time("dd", timestamp())}/${parse_time("HH", timestamp())}//${timestamp()}
它将创建类似 "year/month/date/hour/file_name"