Мне было поручено выяснить, как работает AWS PHP SDK, чтобы мы могли использовать его для размещения данных изображений клиентов для нашего веб-сервера.Мне удалось успешно протестировать большинство функций создания, управления и загрузки данных в корзину, но когда я пытаюсь просмотреть содержимое, я получаю сообщение «Отказано в доступе».
Зайдя в консоль управления,Я выяснил, как установить разрешения, чтобы я мог просматривать файл, либо с определенным правилом хоста, либо установив как контейнер, так и объект, доступный для чтения.
Однако, как бы я ни старался следовать примерамВ документации PHP sdk [limited] я не могу установить значения ACL, используя php-код, предоставленный Amazon.
Их примеры просто перечислены вместо различных значений, и я попытался заполнить соответствующиеданные для моего ведра, объекта и учетной записи в тех, и это не работает.Я попытался сделать getObjectAcl
и отослать что-то похожее на то, что было получено, и это не работает.Я попытался посмотреть примеры в Интернете, и то, что я нашел, не работает.
Вот пример последней, которую я пробовал:
$params = [
'ACL' => 'public-read',
'AccessControlPolicy' => [
'Grants' => [
[
'Grantee' => [
'DisplayName' => 'Owner',
'ID' => $awsId,
'Type' => "CanonicalUser"
],
'Permission' => "FULL_CONTROL"
],
[
'Grantee' => [
'DisplayName' => 'All Users',
'URI' => "http://acs.amazonaws.com/groups/global/AllUsers",
'Type' => "Group"
],
'Permission' => "READ"
],
],
'Owner' => [
'ID' => $awsId
]
],
'Bucket' => "our-test-bucket",
'Key' => "800x600.jpg"
];
$result = $awsSdk->getS3Client()->putObjectAcl($params);
Полученный результат:
Неустранимая ошибка: необработанное исключение «Aws \ S3 \ Exception \ S3Exception» с сообщением «Ошибка при выполнении« PutObjectAcl »на» https://our -test-bucket.s3.us-east-2.amazonaws.com/800x600.jpg?acl ";Ошибка HTTP AWS: ошибка клиента: PUT
https://our-test-bucket.s3.us-east-2.amazonaws.com/800x600.jpg?acl
, приведший к /project/vendor/aws/aws-sdk-php/src/WrappedHttpHandler.php в строке 191
Aws \ S3 \ Exception \ S3Exception: Ошибка выполнения "PutObjectAcl "on" https://our -test-bucket.s3.us-east-2.amazonaws.com / 800x600.jpg? Acl";Ошибка HTTP AWS: ошибка клиента: PUT
https://our-test-bucket.s3.us-east-2.amazonaws.com/800x600.jpg?acl
привел к ответу 400 Bad Request
: MalformedACLError
Предоставленный вами XML-файл был не очень хорошо (усечен ...) MalformedACLError (клиент): Предоставленный вами XML-файл был неправильно сформированили не проверено на соответствие нашей опубликованной схеме - MalformedACLError
Предоставленный вами XML не был правильно сформирован или не проверен на соответствие нашей опубликованной схемеB24661919936C2DADft / *********************************************** = в /project/vendor/aws/aws-sdk-php/src/WrappedHttpHandler.php в строке 191