繁体   English   中英

AWS Lambda Nodejs:从S3存储桶中获取过去24小时内创建的所有对象

[英]AWS Lambda Nodejs: Get all objects created in the last 24hours from a S3 bucket

我有一个要求,我需要将我的存储桶中的所有JSON文件转换为一个新行分隔的JSON,以供第三方使用。 但是,我需要确保每个新创建的新定界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 Object密钥以拆分为多个分区,其中分区将是日期时间的密钥。 例如:

  • S3://bucket/reports/date=2019-08-28/report1.json
  • S3://bucket/reports/date=2019-08-28/report2.json
  • S3://bucket/reports/date=2019-08-28/report3.json
  • S3://bucket/reports/date=2019-08-29/report1.json

可以通过两种方式实现此方法,具体取决于您的文件架构。 如果您所有的JSON文件都具有相同的格式/属性/模式,则可以创建一个粘合表,将根报告路径添加为该表的源,添加日期分区值(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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM