Хостинг загрузок на amazon s3 в приватном хранилище, доступ к URL из Laravel - PullRequest
1 голос
/ 29 апреля 2020

Я использую ведро s3 для загрузки пользователем своего приложения. Это ведро является приватным.

Когда я использую следующий код, сгенерированный URL не доступен из приложения:

return Storage::disk('s3')->url($this->path);

Я могу решить эту проблему, сгенерировав временный URL, это доступно:

return Storage::disk('s3')->temporaryUrl($this->path, Carbon::now()->addMinutes(10));

Это единственный способ сделать это? Или есть другие альтернативы?

1 Ответ

2 голосов
/ 29 апреля 2020

Когда объекты являются частными в Amazon S3, они не могут быть доступны по «анонимному» URL. Это то, что делает их частными.

Доступ к объектам можно получить с помощью вызова API AWS из вашего приложения, если учетные данные IAM, связанные с приложением, имеют разрешение на доступ к объекту.

Если вы хотите sh сделать объект доступным через URL-адрес в веб-браузере (например, в качестве URL-адреса страницы или при ссылке в теге, таком как <img>), то вам нужно будет создать Amazon S3 pre -подписанные URL-адреса , которые предоставляют ограниченный по времени доступ к частному объекту. URL включает информацию об авторизации.

Хотя я не знаю Laravel, может показаться, что ваш первый пример кода просто предоставляет нормальный «анонимный» URL-адрес для объекта в Amazon S3 и поэтому (правильно не удается Ваш второй пример кода, очевидно, генерирует предварительно подписанный URL, который будет работать в течение заданного периода времени. Это правильный способ создания URL, который вы можете использовать в браузере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...