![](/img/trans.png)
[英]Missing required field Principal - Amazon S3 - Bucket Policy
[英]Amazon s3 put bucket with bucket policy
我正在尝试添加存储桶策略,我正在此处阅读 amazon s3 文档。 http://docs.amazonwebservices.com/AmazonS3/latest/dev/setpolicyonbucket.html
在文档中它说要运行此代码。
PUT /?policy HTTP/1.1
Host: bucket.s3.amazonaws.com
Date: Tue, 04 Apr 2010 20:34:56 GMT
Authorization: AWS AKIAIOSFODNN7EXAMPLE:VGhpcyBSAMPLEBieSBlbHZpbmc=
{
"Version":"2008-10-17",
"Id":"aaaa-bbbb-cccc-dddd",
"Statement" : [
{
"Effect":"Allow",
"Sid":"1",
"Principal" : {
"AWS":["1111-2222-3333","4444-5555-6666"]
},
"Action":["s3:GetObject*"],
"Resource":"arn:aws:s3:::mybucket/*"
}
]
}
这正是我需要做的,我正在努力解决的是如何运行 php curl 请求来执行此操作我从哪里开始? 这是我的新手,因为到目前为止我一直在使用 undesigned 的 amazon s3 class。
谢谢
setAccessControlPolicy方法是您要找的吗? 它允许您像上面的示例一样设置访问控制。 从文档:
setAccessControlPolicy (string $bucket, [string $uri = ''], [array $acp = array()]) 返回顶部
当 $uri = '' 时为 object 或桶设置访问控制策略
例子:
<?php
if (($acp = S3::getAccessControlPolicy($bucket, $uri)) !== false) {
// Here you would modify the $acp array...
// For example, grant access to the S3 LogDelivery system:
$acp["acl"][] = array(
"type" => "Group", "uri" => "http://acs.amazonaws.com/groups/s3/LogDelivery", "permission" => "WRITE"
);
$acp["acl"][] = array(
"type" => "Group", "uri" => "http://acs.amazonaws.com/groups/s3/LogDelivery", "permission" => "READ_ACP"
);
// Then update the policy using the modified $acp array:
if (S3::setAccessControlPolicy($bucket, $uri, $acp)) {
echo "Policy updated";
}
}
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.