Bucket

优质
小牛编辑
132浏览
2023-12-01

Bucket是OSS上的命名空间,也是计费、权限控制、日志记录等高级功能的管理实体;Bucket名称在整个OSS服务中具有全局唯一性,且不能修改;存储在OSS上的每个Object必须都包含在某个Bucket中。一个应用,例如图片分享网站,可以对应一个或多个Bucket。一个用户最多可创建10个Bucket,但每个Bucket中存放的Object的数量和大小总和没有限制,用户不需要考虑数据的可扩展性。

命名规范

Bucket的命名有以下规范:

  • 只能包括小写字母,数字,短横线(-)
  • 必须以小写字母或者数字开头
  • 长度必须在3-63字节之间

新建Bucket

你可以通过以下代码来创建Bucket:

<?php

$client->createBucket(array(
    'Bucket' => 'your-bucket-name',
));

通过指定 Bucket 参数来制定Bucket的名字,Bucket的名称有全局唯一性,请尽量保证你的Bucket名称不与别人的重复。

获取用户所拥有的Bucket

<?php

$buckets = $client->listBuckets();

foreach ($buckets as $bucket) {
    echo $bucket->getName() . "\n";
}

listBuckets 方法返回一个装有 \Aliyun\OSS\Models\Bucket 实例的array,你可以遍历这个array来获取每个Bucket的信息。

创建Bucket

你可以通过以下代码来创建Bucket:

<?php

$client->createBucket(array(
    'Bucket' => 'your-bucket-name',
));

通过指定 Bucket 参数来制定Bucket的名字,Bucket的名称有全局唯一性,请尽量保证你的Bucket名称不与别人的重复。

关于Bucket的命名规范,参见 Bucket命名规范

删除Bucket

你可以通过下面代码删除一个Bucket:

<?php

$client->deleteBucket(array(
    'Bucket' => 'your-bucket-name',
));

值得注意的是,如果Bucket不为空(Bucket内存在Object),此方法会失败并抛出 OSSException 异常。如果要删除一个Bucket,请先将Bucket中的Object清空。

Bucket权限控制

Bucket的访问权限

OSS提供Bucket级别的权限访问控制,Bucket目前有三种访问权限:public-read-write,public-read和private。它们的含义如下:

  • public-read-write: 任何人(包括匿名访问)都可以对该bucket中的object进行上传、下载和删除操作;所有这些操作产生的费用由该bucket的创建者承担,请慎用该权限。
  • public-read: 只有该bucket的创建者可以对该bucket内的Object进行写操作(包括上传和删除);任何人(包括匿名访问)可以对该bucket中的object进行读操作。
  • private: 只有该bucket的创建者才可以访问此Bukcet。其他人禁止对此Bucket做任何操作。

用户新创建一个新Bucket时,如果不指定Bucket权限,OSS会自动为该Bucket设置private权限。对于一个已经存在的Bucket,只有它的创建者可以通过OSS的所提供的接口修改其访问权限。

修改Bucket的访问权限

下面一段代码将指定Bucket修改为public-read权限:

<?php

$client->setBucketAcl(array(
    'Bucket' => 'your-bucket-name',
    'ACL' => 'public-read',
));

ACL 参数指定了Bucket的权限,它可以为 public-read-writepublic-readprivate 中的任何一个。