#amazon-web-services #amazon-s3 #boto3
#amazon-веб-сервисы #amazon-s3 #boto3
Вопрос:
Я сохранил несколько размеров изображения на s3. например, image100_100, image200_200, image300_150;
Я хочу удалить определенный размер изображений, таких как изображения с суффиксом 200_200, из папки. в этой папке много изображений, так как же удалить эти изображения?
Комментарии:
1. Хорошо, через что? Лямбда-функция? Если да, то на каком языке (Python, Java, Go и т.д.)?
Ответ №1:
Используйте интерфейс командной строки AWS (AWS CLI):
aws s3 rm s3://Path/To/Dir/ --recursive --exclude "*" --include "*200_200"
Сначала мы исключаем все, затем включаем то, что нам нужно удалить. Это обходной путь, позволяющий имитировать поведение rm -r "*200_200"
команды в Linux.
Комментарии:
1. Спасибо, это работает, просто нужно добавить расширение как «200×200.jpeg »
Ответ №2:
Самым простым методом было бы написать скрипт на 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