【问题标题】:AWS IoT parse_time function does not work when creating rule with CloudFormation使用 CloudFormation 创建规则时,AWS IoT parse_time 函数不起作用
【发布时间】:2020-01-29 03:14:58
【问题描述】:

当我以这种方式使用 CloudFormation 创建时,为什么 parse_time 函数不起作用?

  IoTTopicRule:
    Type: AWS::IoT::TopicRule
    Properties:
      TopicRulePayload:
        Actions:
          - DynamoDBv2:
              ...
        RuleDisabled: false
        Sql: |
          SELECT 
            clientid() as hashKey,
            concat('weather_', parse_time("YYYY-MM-dd'T'hh:mm:ss", timestamp())) as rangeKey,           
          FROM 'topic'

当数据保存在 DynamoDB 上时,rangeKey 会保存为 weather_,例如,我希望它会保存为 weather_2020-05-28T07:05:57

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation aws-iot


    【解决方案1】:

    这是因为CloudFormation创建的SQL查询是2015-10-08版本,这个版本不支持parse_time函数:

    使用 parse_time 函数将时间戳格式化为人类可读的日期/时间格式。受 SQL 版本 2016-03-23 及更高版本支持。

    在模板中添加AwsIotSqlVersion: '2016-03-23' 可以解决问题。

      IoTTopicRule:
        Type: AWS::IoT::TopicRule
        Properties:
          TopicRulePayload:
            Actions:
              - DynamoDBv2:
                  ...
            AwsIotSqlVersion: '2016-03-23'
            RuleDisabled: false
            Sql: |
              SELECT 
                clientid() as hashKey,
                concat('weather_', parse_time("YYYY-MM-dd'T'hh:mm:ss", timestamp())) as rangeKey,           
              FROM 'topic'
    

    【讨论】:

      猜你喜欢
      • 2019-05-03
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 2019-04-07
      • 1970-01-01
      • 1970-01-01
      • 2021-02-04
      • 2020-06-22
      相关资源
      最近更新 更多