【问题标题】:Delete multiple s3 bucket files with Last Modified date condition删除多个具有上次修改日期条件的 s3 存储桶文件
【发布时间】:2019-03-14 03:34:25
【问题描述】:

如何删除具有上次修改时间日期条件的多个 S3 文件?

我在 s3 上有这个文件夹结构。

  • dentca-lab-dev-sample
    • 2019-03-13
      • file1 最后修改时间:2019 年 3 月 13 日下午 2:34:06 GMT-0700
      • file2 最后修改时间:2019 年 3 月 13 日下午 3:18:01 GMT-0700
      • file3 最后修改时间:2019 年 3 月 13 日下午 2:34:30 GMT-0700
      • file4 最后修改时间:2019 年 3 月 13 日下午 2:32:40 GMT-0700

并想删除小于Mar 13, 2019 2:34:30 PM的文件(这只是一个示例)

所以我制作了这个 bash 脚本,但它不起作用。

aws s3 ls --recursive s3://dentca-lab-dev-sample/2019-03-13/ | awk '$1 <= "2019-03-13 14:34:30" {print $4}'

** ls 仅用于测试。将其更改为rm

我也有这个脚本用于测试

aws s3 ls --recursive s3://dentca-lab-dev-sample/2019-03-13/

输出:

2019-03-13 14:34:06   11656584 2019-03-13/mandibular.stl
2019-03-13 15:18:01   11969184 2019-03-13/maxillary.stl
2019-03-13 14:34:30    9169657 2019-03-13/obj.obj
2019-03-13 14:32:40   15690284 2019-03-13/upperAIO_50005.stl

但是当我使用awk 来制作条件时不起作用。可能是因为$1 只捕捉到这个论点2019-03-13 并且我将它与2019-03-13 14:34:30 竞争

也尝试过这样做。 awk '$1 $2 <= "2019-03-13 14:34:30" {print $4}' 抓住第二个论点,但仍然一无所获。顺便说一句,这是我第一次制作 bash。

谢谢!我有这个作为参考顺便说一句。 aws cli s3 bucket remove object with date condition

【问题讨论】:

    标签: bash amazon-web-services amazon-s3


    【解决方案1】:

    您可以使用它来获取在给定日期之前带有LastModified 的对象列表:

    aws s3api list-objects --bucket my-bucket --query "Contents[?LastModified<='2019-03-13'].[Key]" --output text
    

    请注意,它使用s3api 而不是s3,后者可以访问更多信息。

    然后您可以获取结果并将它们泵入aws s3 rm 以删除对象。

    坦率地说,如果您希望像这样获得细粒度,我建议您使用 Python 而不是 bash。它会是这样的:

    import boto3
    
    s3 = boto3.client('s3', region_name='ap-southeast-2')
    response = s3.list_objects_v2(Bucket='my-bucket')
    
    keys_to_delete = [{'Key': object['Key']} for object in response['Contents'] if object['LastModified'] < datetime(2019, 3, 13)]
    s3.delete_objects(Bucket='my-bucket', Delete={'Objects': keys_to_delete})
    

    【讨论】:

    • 我明天要试试这个,但是。您如何将其与 ruby​​ on rails 后端结合起来?抱歉,我是这个开发操作的新手。
    • 谢谢你。经过昨晚的研究,我发现您可以对 s3 文件进行生命周期删除。我建议我们的会议,如果他们不接受,那么我们的后备就是这个。谢谢楼主!
    • 嗨@JohnRotenstein - 在运行提供的 Python 脚本时,我收到一个错误:“TypeError: 'module' object is not callable”。你能帮帮我吗?
    • @PardeepNaik 请创建一个新问题,而不是通过对旧问题的评论来提问。您应该包括您的relevant code 和您收到的错误消息。
    猜你喜欢
    • 2020-01-12
    • 2022-01-09
    • 2021-10-19
    • 1970-01-01
    • 2018-05-16
    • 2015-06-23
    • 1970-01-01
    • 2017-06-03
    • 2022-01-04
    相关资源
    最近更新 更多