AWS Функция IoT parse_time не работает при создании правила с CloudFormation - PullRequest
0 голосов
/ 28 января 2020

Почему функция parse_time не работает при таком создании с CloudFormation?

  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, например.

1 Ответ

0 голосов
/ 28 января 2020

Это потому, что 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'
...