Удаление всех файлов с одинаковыми именами в разных папках на S3 - PullRequest
0 голосов
/ 05 декабря 2018

Я использую драгоценный камень aws-sdk-ruby.С S3, CloudFront и Lambda.

В S3 я загружаю файл в корень, например.tshirt1.jpg.Когда моя функция Lambda запускается, она создает варианты размеров этого файла и помещает их в структуру, подобную этой:

100x100/ 
  --> webp/tshirt1.jpg
  --> jpg/tshirt1.jpg
500x500
  -->webp/tshirt1.jpg
  -->jpg/tshirt1.jpg
tshirt1.jpg

, где 100x100 - это новый размер изображения, а следующая папка - это тип.

Я знаю имя файла, которое я хочу удалить, однако есть ли способ найти все файлы в корзине в любой папке с таким именем и удалить его.

def delete_resource
  s3 = Aws::S3::Resource.new
  bucket = s3.bucket(settings.aws.bucket)
  bucket.delete_objects({
    delete:{
     objects: [
      {key: 'tshirt1.jpg'}
     ]
    }
   })
end

Я быхотел бы сделать что-нибудь, если это возможно, например {key: '*/*/tshirt1.jpg'}

Возможно ли это, или мне придется передать все возможные пути к папкам?

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Нет встроенной возможности для этого.

Вам нужно написать программу, которая специально делает это.

0 голосов
/ 05 декабря 2018

@ Greyhounddad S3 не поддерживает файловую иерархию и обрабатывает все как объект, а единственный способ получить объект - через его ключ:

Если вы хотите автоматизировать процесс удаления файлов в других каталогахпопробуйте использовать aws lambda, вы можете выполнить лямбда-функцию при удалении файла из одного вашего сегмента, и lambda удалит другие файлы с таким же именем из другого сегмента или в вашем каталоге.

дайте мне знать, если это помогло

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...