Как удалить изображения с суффиксом из папки в корзине S3 - PullRequest
1 голос
/ 08 марта 2019

Я сохранил несколько размеров изображения на s3. например image100_100, image200_200, image300_150;

Я хочу удалить из папки изображения определенного размера, например изображения с суффиксом 200_200. в этой папке много изображений, так как их удалить?

Ответы [ 2 ]

0 голосов
/ 09 марта 2019

Использовать интерфейс командной строки AWS (AWS CLI):

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

Сначала мы исключаем все, затем включаем то, что нам нужно удалить. Это обходной путь, имитирующий поведение команды rm -r "*200_200" в Linux.

0 голосов
/ 09 марта 2019

Самый простой способ - написать скрипт на 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
...