Я пытаюсь выяснить, почему AWS S3 SDK ListObjects
перестает работать (403 запрещено) при добавлении оператора "aws: Referer" в мою политику корзины.
Следующее работает отлично, пока оператор Referer не будет добавлен в политику пользователя:
<?php
try {
$result = $this->s3->listObjects([
'Bucket' => $this->bucket
]);
echo "Keys retrieved!" . PHP_EOL;
foreach ($result['Contents'] as $object) {
echo $object['Key'] . PHP_EOL;
}
} catch (S3Exception $e) {
echo $e->getMessage() . PHP_EOL;
}
После добавления выписки веб-страница возвращает 403 Запрещено как таковое:
Error executing "ListObjects" on "https://myamazonurl.s3.amazonaws.com/?encoding-type=url"; AWS HTTP error: Client error: `GET https://myBucketName.s3.amazonaws.com/?encoding-type=url` resulted in a `403 Forbidden` response: AccessDenied
Эта политика отлично работает для ListObjects:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowGetRequestsOriginating",
"Effect": "Allow",
"Action": [
"s3:CreateBucket",
"s3:DeleteObject",
"s3:Put*",
"s3:Get*",
"s3:List*"
],
"Resource": [
"arn:aws:s3:::MyBucketName*",
"arn:aws:s3:::MyBucketName"
],
}
]
}
Но как только я добавляю блок "aws: Referer": ListObjects перестает работать:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Allowgetrequestsoriginatingfrom",
"Effect": "Allow",
"Action": [
"s3:CreateBucket",
"s3:DeleteObject",
"s3:Put*",
"s3:Get*",
"s3:List*"
],
"Resource": [
"arn:aws:s3:::MyBucketName*",
"arn:aws:s3:::MyBucketName"
],
"Condition": {
"StringLike": {
"aws:Referer": [
"http://myLocalSite.vagrant",
"http://myLocalSite.vagrant/*"
]
}
}
}
]
}
Есть идеи?