Я использую временные сеансы в Amazon S3 с GetSessionToken / GetFederationToken, я планирую иметь более 10K пользователей, каждый из которых может загружать на S3, поэтому сначала я подумал об использовании корзины для каждого пользователя и установил разрешения на запись (выгрузку)для каждого сегмента для каждого пользователя, но поскольку существует ограничение на количество сегментов для каждого аккаунта Amazon, я отказался от этой идеи.
Как я могу установить разрешение, например разрешить публичное чтение и выгрузку, только если префикс включенключ объекта, который пользователь хочет загрузить?
Например, если имя пользователя X загружает файл, ключ должен быть похож на X_filename.
Или любым другим способом, который позволяет мне иметь безопасность,это для мобильного приложения, и я не хотел бы проходить через наши собственные серверы при загрузке файла.
Редактировать:
Я пробовал операцию GetFederationToken со следующей политикой
"{
"Statement":[{
"Effect":"Allow",
"Action":["s3:PutObject","s3:GetObject","s3:GetObjectVersion",
"s3:DeleteObject",\"s3:DeleteObjectVersion"],
"Resource":"arn:aws:s3:::user.uploads/john/*"
}
]
}"
У меня есть пакет user.uploads на S3 и папка john
, однако любая загрузка с использованием сессииials to bucket user.uploads с ключом john / имя файла завершается неудачно с доступом запрещен "