我的 Firehose
从 Eventbridge
事件中读取,看起来像这样:
{
"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",
. . .
}
从我的事件包含的时间戳中提取年份(和其他时间部分)的正确语法是什么?
最佳答案
回答我自己的问题:
我意识到选择要用于分区的键的方法是使用 jq
语法。
所以使用 | strftime("%Y")
是从纪元 时间中提取年份的方法。要从我的时间格式中提取它,我需要添加另一个步骤 | strptime("%Y-%m-%dT%H:%M:%SZ")
.
完整的解决方案是:.detail.Timestamp| strptime("%Y-%m-%dT%H:%M:%SZ")| strftime("%Y")
.
在理解了这实际上是jq
之后,这里的答案How to to extract the year from JSON date using jq是我完成拼图的原因。
关于amazon-web-services - AWS Kinesis Firehose - 按纪元以外的时间戳进行动态分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71124898/