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

标签 amazon-web-services amazon-kinesis amazon-kinesis-firehose aws-event-bridge

我的 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",
  . . .
}

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

最佳答案

回答我自己的问题:

我意识到选择要用于分区的键的方法是使用 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/

相关文章:

python - 是否可以在 AWS Lambda 环境中正确指向 Python Shapely 库的 LIBGEOS_C?

amazon-web-services - 如何使用 awscli 停止 Elasticache 节点?

apache-kafka - Kinesis如何实现Kafka风格的Consumer Groups?

php - 有没有办法在通过 AWS Kinesis Firehose 插入时手动设置 ElasticSearch 文档 ID?

amazon-web-services - 使用 Kinesis Firehose 时 VPC 内的 Elasticsearch 持续出现 503 错误

java - 可以从 Java 或 PHP 读取 AWS 环境属性吗?

ios - 从 Parse-Server 传输到 dynamoDB。有哪些可预见的障碍?

amazon-s3 - 将 DynamoDB 记录推送到 Kinesis Stream,然后推送到 S3(仅使用 AWS 控制台)

amazon-web-services - 使用 lambda 函数将数据发送到 Kinesis 流(在不同的 AWS 账户中)

duplicates - 如何对从AWS Kinesis Firehose到Redshift的记录进行重复数据删除?