【问题标题】:Query S3 bucket files by creation date按创建日期查询 S3 存储桶文件
【发布时间】:2018-10-14 16:11:47
【问题描述】:

是否可以通过分页以最新创建顺序查询和获取s3存储桶中的文件?

我什至可以将创建时间戳作为后缀存储在我的文件名中。

任何帮助将不胜感激。

【问题讨论】:

    标签: amazon-web-services amazon-s3


    【解决方案1】:

    2017 年 11 月 29 日,AWS Re:invent AWS 宣布了一项名为 S3 Select 的服务,该服务可在预览版中使用。

    S3 Select 是一项新的 Amazon S3 功能,旨在仅提取 您需要来自对象的数据,显着提高性能 并降低需要访问数据的应用程序的成本

    还有,

    在预览期间,您可以通过可用的 Amazon S3 Select Presto 连接器,使用 AWS Lambda,或从任何其他应用程序使用 S3 选择适用于 Java 或 Python 的 SDK。此预览版可在 美国东部(弗吉尼亚北部)、美国东部(俄亥俄)、美国西部(俄勒冈)、欧洲(爱尔兰)、 和亚太地区(新加坡)AWS 区域

    你可以Apply for Preview here

    谢谢

    【讨论】:

    • youtube.com/watch?v=2_8ZK_64hBc,我可以看到 S3 选择用于拉取部分 s3 对象。我的问题是如何对对象选择本身进行过滤。假设我的 s3 存储桶中有 10 个 csv 文件。我想根据从最新开始的创建日期顺序获取文件名。
    【解决方案2】:

    也许这个link 会有所帮助。它使用 boto3 python SDK。

    基本上,编写一个函数:

    1. 使用list_all_objects API 调用
    2. 遍历对象
    3. 将对象的 Key(name) 和“LastModified”属性存储在字典中。
    4. 对字典进行排序,然后返回。

      def sort_objects_in_bucket_by_timestamp( bucket_name ):
        sorted_objects_dict = {}
        for curr_obj_attr_dict in  s3_client.list_objects_v2( Bucket = bucket_name )['Contents']:
          sorted_objects_dict[curr_obj_attr_dict['Key']] = curr_obj_attr_dict['LastModified']
      return sorted(sorted_objects_dict.items(), key=lambda x: x[1])
      

    该函数将返回特定存储桶中的对象列表,按“LastModified”时间戳从最旧到最新排序。

    如果您不想要 LastModified 时间戳,则更改函数以从存储桶的名称中读取时间戳部分(您说这是可行的),并将该值设为时间戳。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-13
      • 1970-01-01
      • 1970-01-01
      • 2018-02-26
      • 1970-01-01
      • 1970-01-01
      • 2019-08-26
      • 1970-01-01
      相关资源
      最近更新 更多