Я бы посоветовал вам назвать ваши фотографии так при загрузке в пакетном режиме:
user1 / image1.jpeg
user2 / image2.jpeg
Хотя эти имена не будут влиять на способ хранения объектов на s3, эти имена будут просто 'keys' из 'objects' , посколькунет никакой папки, подобной иерархической структуре в s3, но при этом объекты будут появляться в папках, что поможет легко разделять изображения, если вы захотите это сделать позже.
Например, предположим, вы сохранили все изображения с уникальнымиимена, и вы используете уникальный UUID для сопоставления записей в базе данных с изображениями в вашем ведре.
Но позже предположим, что вам нужны все 5 фотографий определенного пользователя, тогда вам нужно будет
- сканировать базу данных на предмет определенного имени пользователя
- ПолучитьUUID для изображений этого пользователя
- и последующее использование UUID для извлечения изображений из s3
Но если вы называете изображения с помощью префикса имени пользователя, вы можете напрямую получать изображения из s3без ссылки на вашу базу данных.
Например, чтобы вывести список всех фотографий пользователя user1, вы можете использовать этот небольшой фрагмент кода в python:
import boto3
s3 = boto3.resource('s3')
Bucket=s3.Bucket('bucket_name')
for obj in Bucket.objects.filter(Prefix='user1/'):
print(obj.key)
, а если не используетелюбой идентификатор пользователя в ключе объекта, тогда вам нужно обратиться к базе данных, чтобы сделать сопоставление между фотографиями и записями, даже просто чтобы получить список изображений конкретного пользователя