【问题标题】:Date conversion in AWS IoT Rule SQLAWS IoT Rule SQL 中的日期转换
【发布时间】:2021-07-01 16:13:01
【问题描述】:

我使用 Ansible 剧本创建 AWS IoT 规则以形成云。 下面是 sn-p,我想创建一个简单的规则来编写从更新的设备影子到 S3 的所有内容。密钥名称应为 YYYY/MM/DD。

  • 物联网规则 SQL 的代码 sn-p:

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,它将在 SELECT *,time 的输出中。
  • 如何转换“时间”:1471618669000 以获取上面“键”值中的 YYYY、MM 和 DD。 IoT SQL 有什么功能吗?

  • 或者如何在 IoT Rule SQL 中获取 Sysdate? 提前致谢。

【问题讨论】:

    标签: aws-iot


    【解决方案1】:

    请使用:

    key:${parse_time("yyyy", timestamp())}/${parse_time("MM", timestamp())}/${parse_time("dd", timestamp())}/${parse_time("HH", timestamp())}//${timestamp()} 
    

    它将创建类似"year/month/date/hour/file_name"的文件夹结构

    【讨论】:

    【解决方案2】:

    直到今天,AWS IOT SQL 函数还没有 date 函数。最接近的解决方案是将纪元转换为自 1970 年 1 月 1 日以来的天数,deviceshadow/${device.deviceId}/${timestamp()/86400000}/${timestamp()}

    这将按天对每条事件消息(唯一的 id 作为时间戳)进行分组。

    这仍然不是人类可读的,我想唯一的方法是使用 lambda 进行日期转换。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-08
      • 2013-11-18
      • 1970-01-01
      相关资源
      最近更新 更多