对象存储(Object-Oriented Storage,OOS)是AWS发明的云存储服务, AWS称之为S3(Simple Storage Service). 对象存储为客户提供的一种海量、弹性、高可用、高性价比的存储服务,按需使用,像一个超级硬盘一样。
中国电信天翼云提供对象存储(OOS)服务,其API接口兼容AWS S3接口。与众不同的是,中国电信提供一种专线,称为云专线,将企业的局域网与云直连。企业可通过专线访问对象存储,不需通过互联网访问,既安全又高速。这样访问对象存储就跟访问本地硬盘一样快,最高可达到1000M bps, 非常适合于企业大数据量存储、备份。
使用对象存储有两种方式:
第一种是通过门户网页,手工操作上下载文件。天翼云对象存储的门户网址是 http://oos.ctyun.cn/。到电信公司开个户,即可使用。
第二种是通过调用API, 程序方式上下载文件。天翼云兼容AWS S3接口, 可以采用AWS SDK实现API调用。 到电信公司开个户,在门户网页登录后,可获得Access Key 和 Secret, 用于开发。
我经常使用的是PHP, 本文小结一个如何使用AWS PHP SDK存取天翼云的对象存储(OSS)。
一、下载AWS PHP SDK
AWS PHP SDK版本选择: 经测试,目前天翼云只能使用 AWS PHP SDK V2.x 版本。不能使用V3.x版本。
SDK文档在: http://docs.aws.amazon.com/aws-sdk-php/v2/guide/
我下载phar文件(只有一个文件方便用), 下载地址:
http://docs.aws.amazon.com/aws-sdk-php/v2/download/aws.phar
二、AWS PHP SDK的使用
简单说, 就是创建一个 S3Client对象, 然后调用 S3Client对象的几个方法,比如: getObject() 下载对象文件 putObject() 上载对象文件。
关于S3Client对象的开发说明文档在:http://docs.aws.amazon.com/aws-sdk-php/v2/api/class-Aws.S3.S3Client.html
当访问天翼云,创建S3Client对象时,要声明 endpoint 为天翼云的服务器地址即可。
例程:
$endpoint, //声明使用指定的endpoint
'key' => $accessKey,
'secret' => $accessSecret
]);
header('content-type:text/plain');
//列出所有buckets
$result = $client->listBuckets(array());
foreach ($result['Buckets'] as $bucket) {
// Each Bucket value will contain a Name and CreationDate
echo "{$bucket['Name']} - {$bucket['CreationDate']}\n";
}
echo "\n\n";
//列出指定bucket下所有的object
$bucket = 'cwz-public';
$result = $client->listObjects(array(
'Bucket' => $bucket
));
foreach ($result['Contents'] as $object) {
// Each Bucket value will contain a Name and CreationDate
echo "{$object['Key']} - {$object['Size']}\n";
}
echo "\n\n";
//上传一个object
$bucket = 'my-public';
$key = 'new.txt';
$body = file_get_contents('new.txt');
$client->upload($bucket, $key, $body);
//下载一个object
$result = $client->getObject(array(
'Bucket' => $bucket,
'Key' => 'new.txt'
));
echo $result['Body']; //显示文件对象的内容
?>
三、小结
例程代码很简单。要点是两个:
1, 使用AWS SDK v2.x版本。
2, 创建S3 client 对象是,要指定 endpoint 为天翼云API服务器
$client = S3Client::factory([
'endpoint'=> $endpoint,
'key' => $accessKey,
'secret' => $accessSecret
]);
S3Client还有很多方法, 看文档慢慢玩吧!