未插入timestream的旧数据:RejectedRecordsException

0

【以下的问题经过翻译处理】

你好! 我们有一个 IoT Core 规则,当 MQTT 消息发布到特定主题时触发。消息结构如下:

{
  "triggers":["door"],
  “datetime”:“2022-06-01T00:00:00Z”,
  "errCodes":[100],
  "strength":107,
  "net":“GMS”,
  "eco":0,
  "light":0,
  "def":0,
  "fan":0,
  "defrost":1,
  "Mdef":0,
  "comp":0,
  "door":0,
  "Tcond":38.1,
  "Tevap":1,
  "Tint":3.8,
  "topic":“abc / ar / data / NVC1 / test-vscode-3”
}

我们有一个需求,缓存在远程设备中的数据可以发送到 IoT Core,因此我们需要在有效负载中发送“datetime”字段(第二个字段)。 Iot Core 规则触发 AWS Lambda 函数,生成一个多测量记录,最终发送到 Timestream:

{
   “Dimensions”:
      [
         {
            “Name”:“hw_model”,
            “Value”:“NVC1”
         },
         {
            “Name”:“serial_device”,
            “Value”:“test-vscode-3”
         }
      ],
   “MeasureName”:“multimeasuredata”,
   “MeasureValueType”:“MULTI”,
   “MeasureValues”:
      [
         {
            “Name”:“Tint”,
            “Value”:“3.8”,
            “Type”:“DOUBLE”
         },
         {
            “Name”:“Tevap”,
            “Value”:“1”,
            “Type”:“DOUBLE”
         }
      ],
   “Time”:“1654041600000”
}

Timestream 表保留期如下:

内存存储保留期:45 天 磁盘存储保留期:180 天 磁盘存储写入:启用 具体报错如下: { "errorType":"RejectedRecordsException", "errorMessage":"One or more records have been rejected. See RejectedRecords for details.", "name":"RejectedRecordsException", "$fault":"client", "$metadata":{ "httpStatusCode":419, "requestId":"VKL72WIIMCBGQNWMMSQLK7CAAQ", "attempts":1, "totalRetryDelay":0 }, "RejectedRecords":[ { "Reason":"The record timestamp is outside the time range [2022-06-17T15:21:13.756Z, 2022-06-27T22:51:04.174Z) of the data ingestion window.", "RecordIndex":0 } ], "__type":"com.amazonaws.timestream.v20181101#RejectedRecordsException", "message":"One or more records have been rejected. See RejectedRecords for details.", "stack":[ "RejectedRecordsException: One or more records have been rejected. See RejectedRecords for details.", " at deserializeAws_json1_0RejectedRecordsExceptionResponse (/var/task/node_modules/@aws-sdk/client-timestream-write/dist-cjs/protocols/Aws_json1_0.js:947:23)", " at deserializeAws_json1_0WriteRecordsCommandError (/var/task/node_modules/@aws-sdk/client-timestream-write/dist-cjs/protocols/Aws_json1_0.js:888:25)", " at processTicksAndRejections (node:internal/process/task_queues:96:5)", " at async /var/task/node_modules/@aws-sdk/middleware-serde/dist-cjs/deserializerMiddleware.js:7:24", " at async /var/task/node_modules/@aws-sdk/middleware-signing/dist-cjs/middleware.js:11:20", " at async StandardRetryStrategy.retry (/var/task/node_modules/@aws-sdk/middleware-retry/dist-cjs/StandardRetryStrategy.js:51:46)", " at async /var/task/node_modules/@aws-sdk/middleware-logger/dist-cjs/loggerMiddleware.js:6:22", " at async Runtime.exports.handler (/var/task/lambda.js:58:20)" ] }

在这个场景下(27天)我们并没有超出内存存储保留期限(45天),但是我也不知道为什么返回的范围是 [2022-06-17T15:21:13.756Z, 2022-06-27T22:51:04.174Z) 。请问是否清楚为什么返回的时间区间是这个,从而导致的记录无法插入timestream?

profile picture
专家
已提问 6 个月前18 查看次数
1 回答
0

【以下的回答经过翻译处理】 在创建表之后更改了保留期吗?

错误消息显示它期望的数据不应超过10天(即6月17日至6月27日之间)。保留期的更改不具有追溯效应,即如果在创建表后将保留期从10天更改为45天,则不能立即将10-45天之前的数据纳入其中。这种行为在https://docs.aws.amazon.com/timestream/latest/developerguide/storage.html中作为注释记录。

在这种保留期在表创建后更改的假设下,如果您需要立即能够纳入45天以前的数据,则需要重新创建保留期为45天的表。

  • Syd
profile picture
专家
已回答 6 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则