AWS Kinesis Firehose - 按纪元以外的时间戳进行动态分区
AWS Kinesis Firehose - dynamic partitioning by timestamp other than epoch
我的 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",
. . .
}
从我的事件包含的时间戳中提取年份(和其他时间部分)的正确语法是什么?
回答我自己的问题:
我意识到 select 键用于分区的方法是使用 jq
语法。
所以使用 | strftime("%Y")
是从 epoch 时间中提取年份的方法。要从我的时间格式中提取它,我需要添加 | strptime("%Y-%m-%dT%H:%M:%SZ")
.
的另一个步骤
完整的解决方案是:.detail.Timestamp| strptime("%Y-%m-%dT%H:%M:%SZ")| strftime("%Y")
。
在明白这实际上是 jq
之后,这里的答案 就是我完成拼图的原因。
我的 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",
. . .
}
从我的事件包含的时间戳中提取年份(和其他时间部分)的正确语法是什么?
回答我自己的问题:
我意识到 select 键用于分区的方法是使用 jq
语法。
所以使用 | strftime("%Y")
是从 epoch 时间中提取年份的方法。要从我的时间格式中提取它,我需要添加 | strptime("%Y-%m-%dT%H:%M:%SZ")
.
完整的解决方案是:.detail.Timestamp| strptime("%Y-%m-%dT%H:%M:%SZ")| strftime("%Y")
。
在明白这实际上是 jq
之后,这里的答案