对象存储(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 为天翼云的服务器地址即可。

 

例程:

 

  1. <?php  
  2.   
  3. require 'aws.phar'; ////包含AWS SDK文件 aws.phar(只能使用V2版的SDK)  
  4. use Aws\S3\S3Client;   //声明使用Aws命名空间中的S3Client类  
  5.   
  6. //天翼云的API服务器  
  7. $endpoint = 'http://oos.ctyunapi.cn';   
  8.   
  9. //Access Key 在天翼云门户网站-帐户管理-API密钥管理中获取  
  10. $accessKey = "ACCESS KEY ID";   
  11.   
  12. //Access Secret 在天翼云门户网站-帐户管理-API密钥管理中获取  
  13. $accessSecret = "SECRECT ID";  
  14.   
  15. //创建S3 client 对象  
  16. $client = S3Client::factory([  
  17.     'endpoint' => $endpoint,  //声明使用指定的endpoint  
  18.     'key'      => $accessKey,  
  19.     'secret'   => $accessSecret  
  20. ]);  
  21.   
  22. header('content-type:text/plain');  
  23.   
  24. //列出所有buckets  
  25. $result = $client->listBuckets(array());  
  26. foreach ($result['Buckets'] as $bucket) {  
  27.     // Each Bucket value will contain a Name and CreationDate  
  28.     echo "{$bucket['Name']} - {$bucket['CreationDate']}\n";  
  29. }  
  30.   
  31. echo "\n\n";  
  32.   
  33. //列出指定bucket下所有的object  
  34. $bucket = 'cwz-public';  
  35. $result = $client->listObjects(array(  
  36.         'Bucket' => $bucket  
  37. ));  
  38. foreach ($result['Contents'] as $object) {  
  39.     // Each Bucket value will contain a Name and CreationDate  
  40.     echo "{$object['Key']} - {$object['Size']}\n";  
  41. }  
  42.   
  43. echo "\n\n";  
  44.   
  45. //上传一个object  
  46. $bucket = 'my-public';  
  47. $key = 'new.txt';  
  48. $body = file_get_contents('new.txt');  
  49. $client->upload($bucket, $key, $body);  
  50.   
  51. //下载一个object  
  52. $result = $client->getObject(array(  
  53.         'Bucket' => $bucket,  
  54.         'Key'    => 'new.txt'  
  55. ));  
  56. echo $result['Body']; //显示文件对象的内容  
  57.   
  58. ?> 
posted on 2018-02-08 15:51  阳光小白  阅读(400)  评论(0编辑  收藏  举报