Bucket
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-write 、 public-read 、private 中的任何一个。