AWS Kinesis Firehose - 按纪元以外的时间戳进行动态分区

AWS Kinesis Firehose - dynamic partitioning by timestamp other than epoch

我的 FirehoseEventbridge 事件中读取的内容类似于:

{
  "detail": {
    "key1": "some value",
    "key2": "some value",
    "Timestamp": "2022-01-21T19:01:05Z"
  }
}

我想在将事件保存到 s3 中的文件时执行动态分区。 我试着像这样提取年份:

.detail.Timestamp| strftime("%Y")

我知道如果 Timestamp 字段以 epoch 格式给出,这会起作用,但现在我收到错误(由 firehose 保存到文件):

{
  . . .
  "errorCode": "DynamicPartitioning.MetadataExtractionFailed",
  "errorMessage": "strftime/1 requires parsed datetime inputs",
  . . .
}

从我的事件包含的时间戳中提取年份(和其他时间部分)的正确语法是什么?

回答我自己的问题:

我意识到 select 键用于分区的方法是使用 jq 语法。 所以使用 | strftime("%Y") 是从 epoch 时间中提取年份的方法。要从我的时间格式中提取它,我需要添加 | strptime("%Y-%m-%dT%H:%M:%SZ").

的另一个步骤

完整的解决方案是:.detail.Timestamp| strptime("%Y-%m-%dT%H:%M:%SZ")| strftime("%Y")

在明白这实际上是 jq 之后,这里的答案 就是我完成拼图的原因。