使用AWS PHP SDK存取天翼云的对象存储(OSS)

    对象存储(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/

扫描二维码关注公众号,回复: 2922544 查看本文章

 我下载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 为天翼云的服务器地址即可。


例程:

<?php

require 'aws.phar'; ////包含AWS SDK文件 aws.phar(只能使用V2版的SDK)
use Aws\S3\S3Client;   //声明使用Aws命名空间中的S3Client类

//天翼云的API服务器
$endpoint = 'http://oos.ctyunapi.cn'; 

//Access Key 在天翼云门户网站-帐户管理-API密钥管理中获取
$accessKey = "ACCESS KEY ID"; 

//Access Secret 在天翼云门户网站-帐户管理-API密钥管理中获取
$accessSecret = "SECRECT ID";

//创建S3 client 对象
$client = S3Client::factory([
	'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还有很多方法, 看文档慢慢玩吧!


    

  

猜你喜欢

转载自blog.csdn.net/c80486/article/details/77859976