使用 IoT 核心操作时使用 AWS DynamoDB V2 的服务器端时间戳?

Server-sided timestamp with AWS DynamoDB V2 when using an IoT Core Action?

我目前正在使用 IoT Core 操作在 DynamoDB table 中存储一些 JSON 数据。一切正常,唯一的问题是,所有内容都存储在一列中(payload 在我的例子中)。 我发现当使用 DynamoDB V2 操作 时,我的 JSON 输入的每个键值对都将存储在单独的列中。我也能够实现这个。

但现在我遇到了一个问题,我无法再创建可以在使用 DynamoDB V1 时定义的时间戳列。在那里我只能说我的辅助键是一个时间戳,并且使用函数 timestamp() 它将自动为每个输入创建一个服务器端时间戳。 由于在使用版本 2 时没有这样的选项,我想知道是否可以通过 IoT Core MQTT 网关向输入添加带有时间戳的列?

我想我可以使用 lambda 路径并触发一个函数,该函数将 V2 的每个输入写入 DynamoDB,但我尽量避免这种情况,因为我将有大量数据通过。

如果您有任何想法或想法,我很乐意听取。

干杯,

这已经可以通过使用 IoT 规则的 SELECT 子句通过 DynamoDB V2 操作完成。

它在写入 DynamoDB 时使用的密钥可以来自负载 and/or IoT 规则的 SELECT 子句。所以可以使用timestamp()函数自动创建服务器端时间戳。

例如设置一个规则,例如:

SELECT *, timestamp() AS Timestamp FROM 'mytopic/#'

DynamoDB V2 操作使用主键写入 table:

Primary partition key    Id (String)
Primary sort key         Timestamp (Number)

在此示例中,Id 字段来自负载并且是分区键。 timestamp() 函数是作为排序键的服务器端时间戳。

因此发布到具有此负载的主题:

{
  "message": "Hello from AWS IoT console",
  "value": "101",
  "Id": "2"
}

将使用负载中的 Idtimestamp() 函数中的 Timestamp 创建项目。