我的任务是弄清楚aws-php-sdk是如何工作的,这样我们就可以使用它托管web服务器的客户图像数据。我已经成功地测试了创建、管理数据和将数据加载到bucket中的大部分功能,但是当我试图查看内容时,我得到了“拒绝访问”。
进入管理控制台后,我找到了如何设置权限,以便可以使用特定的主机规则或通过设置bucket和对象world可读性来查看文件。
然而,无论我如何尝试遵循php sdk[limited]文档中的示例,我似乎都无法使用amazon提供的php代码设置acl值。
他们的例子只是列出了不同的值,我试着为我的bucket、object和account填充相关的数据,但是没有用。我试着做一个
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
“;
AWS HTTP错误:客户端错误:
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”时出错
https://our-test-bucket.s3.us-east-2.amazonaws.com/800x600.jpg?国际计算语言学协会
“;
AWS HTTP错误:客户端错误:
放
https://our-test-bucket.s3.us-east-2.amazonaws.com/800x600.jpg?国际计算语言学协会
导致
400 Bad Request
回应:
MalformedACLError
您提供的xml不是well-f(截断…)
MalformedAlerror(客户端):您提供的XML格式不正确,或者没有根据我们发布的架构进行验证-
格式错误
您提供的XML格式不正确,或者没有根据我们发布的
schemab24661919936c2dadft/*****************************************=in/project/vendor/aws/aws sdk php/src/wrappedhttphandler.php联机
一百九十一