У меня есть ведро s3 (например, mybucket), для которого в настоящее время установлены следующие разрешения:
Block all public access
On
|
|_Block public access to buckets and objects granted through new access control lists (ACLs)
| On
|
|_Block public access to buckets and objects granted through any access control lists (ACLs)
| On
|
|_Block public access to buckets and objects granted through new public bucket or access point policies
| On
|
|_Block public and cross-account access to buckets and objects through any public bucket or access point policies
On
Внутри этого ведра есть две папки:
images (e.g. https://mybucket.s3.us-west-2.amazonaws.com/images/puppy.jpg)
private (e.g. https://mybucket.s3.us-west-2.amazonaws.com/private/mydoc.doc)
Я хочу, чтобы папка изображений была общедоступной, чтобы я мог отображать изображения на моем сайте
Я хочу, чтобы личная папка была ограничена и могла быть доступна только с использованием учетной записи IAM программно
Как мне установить эти разрешения? Я попытался отключить указанные выше разрешения, я также щелкнул изображения и действия под заголовком, щелкнул «сделать общедоступным». Затем я пытаюсь загрузить следующее:
$image = Image::make($file->getRealPath())->resize(360, 180);
Storage::disk('s3')->put($filePath, $image->stream());
Файл загружается, но когда я пытаюсь отобразить изображение следующим образом, я получаю ошибку 403:
<img src="{{ Storage::disk('s3')->url($file->path) }}" />
А для загрузки личных документов у меня есть следующее:
$response = [
'Content-Type' => $file->mime_type,
'Content-Length' => $file->size,
'Content-Description' => 'File Transfer',
'Content-Disposition' => "attachment; filename={$file->name}",
'Content-Transfer-Encoding' => 'binary',
];
return Response::make(Storage::disk('s3')->get($file->path), 200, $response);
Как правильно настроить эти разрешения?
Прежде чем кто-нибудь начнет кричать, что я новичок в хранилище S3, пожалуйста, потерпите меня.
Любая помощь и руководство будут оценены.