Итак, вот пример использования, над которым я работаю и не могу понять, у меня есть корзина s3, настроенная с доступом publi c, и я хочу загрузить из нее выбранные файлы
use ZipStream\ZipStream;
use ZipStream\Option\Archive as ArchiveOptions;
$fileName = $material->material_title. ".zip";
$names = json_decode($material->material_file, true);
return response()->stream(function () use ($names, $folder, $fileName) {
$opt = new ArchiveOptions();
header("Content-Type: application/force-download");
header("Content-encoding: gzip");
header("Content-Disposition: attachment; filename=" . $fileName . ".zip");
$opt->setContentType('application/force-download');
$zip = new ZipStream( $fileName,$opt);
foreach ($names as $name) {
$path = $folder . $name;
$file = \Storage::disk("s3")->read($path);
$zip->addFile($name, $file);
}
$zip->finish();
});
До некоторой степени все работало нормально, пока я не настроил облачный фронт с моим контейнером
{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "2",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E10DPSE8MHJ2AG"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::midad/*"
}
]
}
Теперь я не могу загружать файлы непосредственно из корзины
Как я могу загрузить выбранные или упомянутые файлы из корзины S3 как почтовый индекс, когда мой дистрибутив CloudFront также настроен с моей корзиной?
Помощь очень ценится