Публичный доступ к конкретным файлам в Amazon S3
Есть ведро на Amazon S3
Я работаю с ним через .NET Core SDK для амазона и загружаю файлы без политики доступа (noACL), отчего они по умолчанию приватные.
Если я хочу получить ссылку на файл, чтобы можно было вставить её в HTML, я делаю так.
string url = _amazon.GetPreSignedUrl(pathToFile, 24(link valid time));
Казалось бы, идеальное решение проблемы, все защищено, а когда нужно - делается одноразовая ссылка, да только операция GetPresignedUrl - ужасно долгая! От 50 до 500 мс, в среднем около 300, что в случае если я гружу страничку с 100 картинками - 30 секунд загрузки только на обращение к амазону!
Поэтому вопрос - возможно ли сделать генерацию и выдачу подписанных ссылок амазоном быстрее? Может, это как то батчится, типа сразу 100 картинок затребовать, пусть выдает к ним одну ссылку например, а я распарсю, мне недолго.
Думаю, надо файлы закидывать туда с публичным доступом, но чтобы поисковой системой не индексировалось.
Ведро приватное, закидываю файл
var uploadRequest = new TransferUtilityUploadRequest
{
InputStream = stream,
Key = filePath,
BucketName = _s3BucketOptions.BucketName,
CannedACL = S3CannedACL.PublicRead // ЗЛОПОЛУЧНАЯ СТРОЧКА!
};
await fileTransferUtility.UploadAsync(uploadRequest);
И на строчке с явным указанием уровня доступа у мне выдает access denied, дескать, не могу залить файл с публичным доступом. Без этой строчки заливатся, но доступ только по долгогенерирующейся ссылке.
Как решить такую проблему? Как настроить AWS чтобы он не индексировался поисковиками, но конкретно по ссылке мог человек получить 1 файл, но не генерировать эту ссылку каждый раз долго.