设置桶访问权限

您可以使用 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";
}