我有一个要求,我需要将存储桶中的所有 JSON 文件转换为一个新行分隔的 JSON 以供第 3 方使用。但是,我需要确保每个新创建的新分隔 JSON 仅包含过去 24 小时内收到的文件,以避免一遍又一遍地选择相同的文件。这可以在s3.getObject(getParams, function(err, data)
函数内部完成吗?任何有关不同方法的建议表示赞赏
谢谢
我有一个要求,我需要将存储桶中的所有 JSON 文件转换为一个新行分隔的 JSON 以供第 3 方使用。但是,我需要确保每个新创建的新分隔 JSON 仅包含过去 24 小时内收到的文件,以避免一遍又一遍地选择相同的文件。这可以在s3.getObject(getParams, function(err, data)
函数内部完成吗?任何有关不同方法的建议表示赞赏
谢谢
您可以尝试 S3 ListObjects 操作并通过 LastModified 元数据字段过滤结果。对于新对象,LastModified 属性将包含文件创建时间的信息,但对于更改的文件 - 上次修改时间。
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#listObjectsV2-property
还有一种更复杂的方法,将 Amazon Athena 与 AWS Glue 服务结合使用,但这需要修改您的 S3 对象键以拆分为分区,其中分区将是日期时间的键。例如:
这种方法可以通过两种方式实现,具体取决于您的文件架构。如果您的所有 JSON 文件具有相同的格式/属性/架构,那么您可以创建一个 Glue 表,添加根报告路径作为该表的源,添加日期分区值 (2019-08-28) 并使用 Amazon Athena使用常规 SELECT * FROM 报告查询数据 WHERE date='2019-08-28'。如果没有,则使用 JSON 分类器创建一个 Glue 爬虫,它将填充您的表,然后使用相同的 Athena - 将这些数据查询到一个组合的 JSON 文件
https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-samples-legislators.html