Я работаю с s3 и php. Я сохранил весь контент моего сайта на s3. Чтобы защитить этот контент, я создал политику S3 Bucket. Политика гласит: если контент загружается с моего сайта, он должен загружаться. В противном случае нет. Работает нормально. Но сейчас я столкнулся с одной проблемой. То есть в моем приложении есть функция генерации PDF-файла с некоторыми изображениями. Так что я делаю генерацию PDF внутри моего контроллера. После того, как пользователь нажмет на кнопку, он go перейдет к контроллеру и получит некоторые изображения из s3 в зависимости от условия, а затем создаст файл PDF. Но проблема внутри контроллера, изображения не загружаются, поэтому мой PDF-файл пуст. Эта проблема возникает из-за моей созданной политики ведра. Вот моя политика ведра.
{
"Version": "2012-10-17",
"Id": "http referer policy example",
"Statement": [
{
"Sid": "Explicit deny to ensure requests are allowed only from specific referer.",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucketname/*",
"Condition": {
"StringNotLike": {
"aws:Referer": [
"http://www.mywebsite.com/*",
"http://mywebsite.com/*",
]
}
}
}
]
}
Вот так я генерирую PDF.
$imgBaseUrl = 'https://bucketname.s3.amazonaws.com/img/imagename.png';
$fileName = $userDetails->first_name." ".$userDetails->last_name." (".$serviceDetails->service->name.") - ". date('Y-m-d') . ".pdf";
$this->set(compact('userDetails', 'serviceDetails', 'imgBaseUrl'));
$this->RequestHandler->renderAs($this, 'pdf', ['attachment' => $fileName]);
Здесь эти переменные имеют правильные данные. Там нет проблем с этими переменными.