Запрос Amazon S3 с использованием регулярного выражения - PullRequest
1 голос
/ 13 марта 2019

У меня следующая структура папок в S3.

myBucket/20190313/20190313_100000/_SUCCESS

Мне нужно проверить, есть ли _SUCCESS Файл присутствует

Запрос, который я сейчас использую:

date = 20190313
bucket = s3Resource.Bucket(myBucket)
objs = list(bucket.objects.filter(Prefix=date+'/'))

Я не знаю, что будет внутри папки с датами. Но в формате yyyymmdd_hhmmss.

Есть ли способ запросить этот конкретный файл "_SUCCESS", если известен только "myBucket / 20190313 /"?

Ответы [ 2 ]

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

Это длинный выстрел, в зависимости от ваших ключей объекта, но вы можете комбинировать свойства prefix и delimiter.

например:.

Prefix = date+'/'
Delimiter = '_' 

Поскольку я уверен, что вы знаете, в ключах S3 нет структуры папок, а есть уникальная строка для идентификации объекта. Использование разделителя '/' создает иерархию или более структуру виртуальной папки.

Использование свойства delimiter изменит структуру виртуальной папки с использования '/' на '_'. При условии, что вы не используете подчеркивания в других ключах, он вернет коллекцию строк между концом префикса и началом следующего префикса, то есть '_' в '_SUCCESS'

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

Документы API говорят, что вы не можете использовать регулярное выражение

Ограничивает ответ клавишами, которые начинаются с указанного префикса . Вы можете использовать префиксы для разделения корзины на различные группы ключей. (Вы можете подумать об использовании префикса для создания групп так же, как при использовании папки в файловой системе.)

...