如何从S3存储桶中的文件夹中删除带后缀的图像

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从S3存储桶中的文件夹中删除带后缀的图像相关的知识,希望对你有一定的参考价值。

我在s3上存储了多种尺寸的图像。例如image100_100,image200_200,image300_150;

我想从文件夹中删除图像的特定大小,例如后缀为200_200的图像。这个文件夹中有很多图像,所以如何删除这些图像?

答案

使用AWS命令行界面(AWS CLI):

aws s3 rm s3://Path/To/Dir/ --recursive --exclude "*" --include "*200_200"

我们首先排除所有内容,然后包含我们需要删除的内容。这是一种模拟Linux中rm -r "*200_200"命令行为的解决方法。

另一答案

最简单的方法是编写Python脚本,类似于:

import boto3

BUCKET = 'my-bucket'
PREFIX = '' # eg 'images/'

s3_client = boto3.client('s3', region_name='ap-southeast-2')

# Get a list of objects
list_response = s3_client.list_objects_v2(Bucket = BUCKET, Prefix = PREFIX)

while True:
    # Find desired objects to delete
    objects = [{'Key':object['Key']} for object in list_response['Contents'] if object['Key'].endswith('200_200')]
    print ('Deleting:', objects)

    # Delete objects
    if len(objects) > 0:
        delete_response = s3_client.delete_objects(
            Bucket=BUCKET,
            Delete={'Objects': objects}
        )

    # Next page
    if list_response['IsTruncated']:
        list_response = s3_client.list_objects_v2(
            Bucket = BUCKET,
            Prefix = PREFIX,
            ContinuationToken=list_reponse['NextContinuationToken'])
    else:
        break

以上是关于如何从S3存储桶中的文件夹中删除带后缀的图像的主要内容,如果未能解决你的问题,请参考以下文章

如何(批量)删除Amazon S3存储桶中几百个文件的列表

如何从 url 视频中获取图像(存储在 s3 存储桶中)

如何使用 html 中的 url 访问存储在我的 s3 存储桶中的图像

如何删除/计算 s3 存储桶中的对象?

从 pyspark 访问 S3 存储桶中的文件

从同一存储桶中另一个子文件夹中的 s3 子文件夹中复制文件