Как показать private картинку из Amazon s3 через Laravel Resource?
Картинка в Амазоне. Доступ private. Запрашиваю урл картинки $url = Storage::диск->url('file.jpg');
Чтобы вставить в img на фронте. Я использую Vue и Laravel Resource. В ресурсе получаю полный урл, отдаю его в VUE компонент, но доступа к урлу нет. Т.к. private. Но мне приват и нужен (поэтому установка public через put или setVisibility, как в доках и в гуглах мне не подходит). Можно ли получить доступ к приват через Laravel Resource и как?
Иван Шумов
@inoise Куратор тега Amazon Web Services
Solution Architect, AWS Certified, Serverless
Вопрос не по laravel, а AWS. Вы не можете так сделать. Если вы хотите оставлять файлы приватными то у вас есть 2 варианта - скачивать файл на свой сервер и отдавать оттуда или же signed urls (это в Cloudfront)
Я могу скачивать приватные файлы с помощью Storage::disk('s3')->download($patch);
также в гуглах находил способы при прямом обращении к методу url из blade (типа он в данном случае на время показывает насколько я понял). Но у меня не работает т.к. фронт работает без методов
приватные я имею ввиду те, которые методом getVisibility показывает private
Написано
Иван Шумов
@inoise Куратор тега Amazon Web Services
jazzus, повторюсь) это правила работы с AWS s3. 2 варианта. Есть ещё разовый iam policy, но это уже жесть ибо приложению давать подобные права считаю дикостью.
Написано
Иван Шумов
@inoise Куратор тега Amazon Web Services
jazzus, вам стоит познакомиться с AWS. Приватные означает не доступные без авторизации или любым другим способом. Вы не можете забрать этот файл с s3 по http иным способом, кроме того как я указал)
Иван Шумов, непонятно зачем скачивать файл к себе, создавать нагрузку, а потом показывать. Проще тогда сразу на сервер загружать. Насчет signed urls - буду гуглить. Это нормальная практика?
Написано
Иван Шумов
@inoise Куратор тега Amazon Web Services
jazzus, все зависит от задач. Что у вас за приложение я не знаю. Могу посоветовать стратегию, но если только это вам надо - загляните в профиль)
Иван Шумов, я понял, спасибо. Вопрос не про стратегию, мне нужно просто приватные картинки показать. Также, как я сейчас скачиваю приватные файлы, но только не скачивать. В примерах в гугле показывают приватные картинки методом url из blade. У меня не blade, а Laravel Resource и фронт. Проблема в том, что url и Storage на фронте вызвать нельзя. Вот и думаю как это обойти
Написано
Иван Шумов
@inoise Куратор тега Amazon Web Services
jazzus, вы вообще не можете это сделать с фронта. Если бы вы хоть немного изучили AWS s3 то поняли бы. Приватный объект никому без авторизации не доступен. Никогда
Иван Шумов, разве это вопрос aws? Я про тег, который вы поставили. Меня устраивают права в aws. Вопрос про получение прав в приложении (это с вами уже разобрали)
Написано
Иван Шумов
@inoise Куратор тега Amazon Web Services
jazzus, да, это про aws. Laravel в этом вопросе просто посредник