设置桶访问权限
您可以使用 putBucketAcl 接口进行桶访问权限的修改。用户在设置 bucket 的 ACL 之前需要具备 WRITE_ACP 权限。桶访问权限包含了 AccessControlList 与CannedAccesssControlList 两种格式。
- AccessControlList
使用 AccessControlList 设置桶访问权限时,可以设置特定用户对桶的访问权限。桶的 AccessControlList 权限如下表:
权限 | 对应Permission值 |
---|---|
可读,可列出桶下的对象。 | READ |
可写,可创建/删除/覆盖写该桶下的对象。 | WRITE |
可读取桶的acl规则。 | READ_ACP |
可修改桶的acl规则。 | WRITE_ACP |
完全控制权限。拥有以上所有权限。 | FULL_CONTROL |
使用AccesssControlList设置桶的访问权限示例代码如下:
$bucket = '<your-bucket-name>';
$params = [
'AccessControlPolicy' => [
// 可以从 getBucketAcl 接口获取 Owner 信息
'Owner' => [
'ID' => 'exampleuser',
'DisplayName' => 'Example DisplayName',
],
'Grants' => [
[
//开启用户 exampleuser 的完全控制权限
'Grantee' => [
'ID' => 'exampleuser',
'Type' => 'CanonicalUser',
],
'Permission' => 'FULL_CONTROL',
],
[
//开启所有用户的读权限
'Grantee' => [
'Type' => 'Group',
'URI' => 'http://acs.amazonaws.com/groups/global/AllUsers',
],
'Permission' => 'READ',
],
// ...
],
],
'Bucket' => $bucket,
];
try {
$resp = $s3Client->putBucketAcl($params);
echo "Succeed in setting bucket ACL.\n";
} catch (AwsException $e) {
echo $e->getMessage();
echo "\n";
}
- CannedAccesssControlList
CannedAccesssControlList 是一系列的预定义访问权限,包含了:Private(私有读写),PublicRead(公共读私有写),PublicReadWrite(公共读写)。
权限 | 对应ACL值 |
---|---|
私有读写 | private |
公共读私有写 | public-read |
公共读写 | public-read-write |
注册用户可读 | authenticated-read |
使用 CannedAccesssControlList 设置桶的访问权限示例代码如下:
//设置桶为公共读写
$bucket = '<your-bucket-name>';
$params = [
'ACL' => 'public-read',
'Bucket' => $bucket,
];
try {
$resp = $s3Client->putBucketAcl($params);
echo "Succeed in setting bucket ACL.\n";
} catch (AwsException $e) {
// Display error message
echo $e->getMessage();
echo "\n";
}