管理存储空间

Bucket是MSS上的存储空间,也是权限、计费等功能的管理单元。

新建Bucket

您可以使用以下代码新建存储空间:

require '/path/to/mss.phar';
use Mss\S3\Enum\CannedAcl;

$accessKeyId = "<从MSS获得的AccessKeyId>";
$accessKyeSecret = "<从MSS获得的AccessKeySecret>";
$endpoint = "<选定的MSS数据中心访问域名,例如http://mtmss.com>";
$bucket = "<使用的bucketName,注意命名规范>";

$mssClient = Mss\S3\S3Client::factory([
        'endpoint' => $endpoint,
        'key'    => $accessKeyId,
        'secret' => $accessKeySecret,]);

/**
 * 创建一个bucket
 * ACL指的是bucket的访问权限,有两种,私有读写,公共读私有云写。
 * 私有读写就是只有bucket的所有者才有权限操作
 * 两种权限分别对应CannedAcl::PRIVATE_ACCESS,CannedAcl::PUBLIC_READ
 */
$mssClient->createBucket(array(
        'Bucket' => $bucket,
        'ACL' => CannedAcl::PRIVATE_ACCESS));

判断Bucket是否存在

您可以使用以下代码判断某个bucket是否存在:

require '/path/to/mss.phar';
use Mss\S3\Enum\CannedAcl;

$accessKeyId = "<从MSS获得的AccessKeyId>";
$accessKyeSecret = "<从MSS获得的AccessKeySecret>";
$endpoint = "<选定的MSS数据中心访问域名,例如http://mtmss.com>";
$bucket = "<使用的bucketName,注意命名规范>";

$mssClient = Mss\S3\S3Client::factory([
        'endpoint' => $endpoint,
        'key'    => $accessKeyId,
        'secret' => $accessKeySecret,]);

$isExist = $mssClient->doesBucketExist($bucket);
if ($isExist) {
        echo "Bucket $bucket exist";
} else {
        echo "Bucket $bucket not exist";
}

列出用户所有的Bucket

您可以使用以下代码列出用户所有的bucket:

require '/path/to/mss.phar';

$accessKeyId = "<从MSS获得的AccessKeyId>";
$accessKyeSecret = "<从MSS获得的AccessKeySecret>";
$endpoint = "<选定的MSS数据中心访问域名,例如http://mtmss.com>";
$bucket = "<使用的bucketName,注意命名规范>";

$mssClient = Mss\S3\S3Client::factory([
        'endpoint' => $endpoint,
        'key'    => $accessKeyId,
        'secret' => $accessKeySecret,]);

$iterator = $mssClient->getIterator('listBuckets');

foreach ($iterator as $object) {
    echo $object['Key'] . "\n";
}

删除Bucket

您可以使用以下代码删除指定的bucket:

require '/path/to/mss.phar';

$accessKeyId = "<从MSS获得的AccessKeyId>";
$accessKyeSecret = "<从MSS获得的AccessKeySecret>";
$endpoint = "<选定的MSS数据中心访问域名,例如http://mtmss.com>";
$bucket = "<使用的bucketName,注意命名规范>";

$mssClient = Mss\S3\S3Client::factory([
        'endpoint' => $endpoint,
        'key'    => $accessKeyId,
        'secret' => $accessKeySecret,]);

$mssClient->deleteBucket(array('Bucket' => $bucket));

设置Bucket的访问权限(ACL)

除了在创建存储空间的时候能够对存储空间的 ACL 进行设置,也可以根据自己的业务需求对存储空间的ACL进行修改。这个操作只有该存储空间的创建者有权限执行。

bucket有以下两种访问权限: 私有读写: CannedAcl::PRIVATEACCESS 公共读私有写:CannedAcl::PUBLICREAD

您可以使用如下代码设置bucket的访问权限:

require '/path/to/mss.phar';

$accessKeyId = "<从MSS获得的AccessKeyId>";
$accessKyeSecret = "<从MSS获得的AccessKeySecret>";
$endpoint = "<选定的MSS数据中心访问域名,例如http://mtmss.com>";
$bucket = "<使用的bucketName,注意命名规范>";

$mssClient = Mss\S3\S3Client::factory([
        'endpoint' => $endpoint,
        'key'    => $accessKeyId,
        'secret' => $accessKeySecret,]);

$mssClient->PutBucketAcl(array(
        'Bucket' => $bucket,
        'ACL' => CannedAcl::PUBLIC_READ));

获取Bucket的访问权限(ACL)

您可以使用如下代码获取bucket的访问权限:

require '/path/to/mss.phar';

$accessKeyId = "<从MSS获得的AccessKeyId>";
$accessKyeSecret = "<从MSS获得的AccessKeySecret>";
$endpoint = "<选定的MSS数据中心访问域名,例如http://mtmss.com>";
$bucket = "<使用的bucketName,注意命名规范>";

$mssClient = Mss\S3\S3Client::factory([
        'endpoint' => $endpoint,
        'key'    => $accessKeyId,
        'secret' => $accessKeySecret,]);

$acl = $mssClient->GetBucketAcl(array('Bucket' => $bucket));
echo $acl