【以下的问题经过翻译处理】
你好!
我们有一个 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?