电信天翼云对象存储java实现

首先先了解电信天翼云对象存储

产品介绍
        对象存储(Object-Oriented Storage, OOS)是中国电信为客户提供的一种海量、弹性、廉价、高可用的存储服务。客户只需花极少的钱就可以获得一个几乎无限的存储空间,可以随时根据需要调整对资源的占用,并只需为真正使用的资源付费。
        OOS 提供了基于各种开发语言的 SDK 和基于 HTTP REST 的访问接口两种访问方式,用户可以在任何地方通过互联网对数据进行管理和访问。 OOS 提供的 REST接口与 Amazon S3 兼容,因此基于 OOS 的业务可以非常轻松的与 Amazon S3 对接。
您也可以通过 OOS 提供的 SDK 来调用 OOS 服务,开发语言目前支持 Ruby.NETPHPJavaPython

 

官方的开发文档还是13年版本的,demo也是各种跑不通,看的出很久没维护了,在最开始使用的时候还是走了不少的弯路,后来实在没办法了,联系了技术支持,他们提供了一份最新的文档和demo,然后稍做修改,在这里跟大家分享一下


1.创建客户端

电信oos服务是基于亚马逊aws的包实现,但是他们自己有做一些封装,这里如果你引入了亚马逊官方的jar包,请更换为电信封装好的包,不然功能是无法实现的,jar包下载地址https://download.csdn.net/download/alungo/10499845

代码:

package com.yxy.tyy.tyy_service.utlis;

import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.yxy.tyy.tyy_service.constants.TyyConstants;


public class CreateClient {

public static AmazonS3 getClient() {
// 创建一个AmazonS3 客户端对象
AmazonS3 client = new AmazonS3Client(new AWSCredentials() {
public String getAWSAccessKeyId() {
return TyyConstants.ACCESS_KEY;//你的accesskey
}
public String getAWSSecretKey() {
return TyyConstants.SECRET_KEY;//你的secretKey
}
});
// 设置API服务器
client.setEndpoint(TyyConstants.OOS_DOMAIN);//设置你的资源池域名,我的是https://oos-hq-sh.ctyunapi.cn
return client;
}

}

到这里只要客户端建立了,剩下的功能就容易了


在使用 SDK 访问 AccessKey 相关的 API 时,需要 setEndpoint 为


oos-iam.ctyunapi.cn(终端节点http://oos-hq-sh.ctyunapi.cn)


2.调用客户端方法实现不同功能


创建accesskey
client.ctyunCreateAccessKey();


每个用户可以拥有多个主密钥和普通密钥, 两者的区别是:
1. 主密钥用于生成普通密钥,每个账户必须至少拥有一个主密钥。
2. 密钥可以被禁止使用,或者启用。 当账户的主密钥只剩下一个时,该密
钥不能被禁用或者删除。
3. 用户可以将普通密钥设置成为主密钥。
4. 普通密钥不能创建,删除,修改 bucket 属性。
5. 普通密钥只能操作以自己 AccessKey 开头的 Object,包括创建,删除,
下载 Object 等操作。
例如:普通 AccessKey 为 e67057e798af03040565,那么该 AccessKey 只
能创建以 e67057e798af03040565 开头的 Object 名。
6. 普通密钥可以 list objects,但是参数 prefix 必须以 AccessKey 开头,即
普通密钥只能 list 以自己的 AccessKey 开头的 Object。


删除accesskey
DeleteAccessKeyRequest deleteAccessKeyRequest = new DeleteAccessKeyRequest(要删除的key的值);
client.ctyunDeleteAccessKey(deleteAccessKeyRequest);


更新accesskey
UpdateAccessKeyRequest updateAccessKeyRequest = new UpdateAccessKeyRequest(updateKey,updateContent);
updateAccessKeyRequest.setCtyunIsPrimary("false");
client.ctyunUpdateAccessKey(updateAccessKeyRequest);


创建bucket
client.createBucket(bucket名);


删除bucket
client.deleteBucket(bucket名);


更新bucket
client.setBucketAcl(bucket名, CannedAccessControlList.PublicRead);


获取bucket列表
for (Bucket bucket : client.listBuckets()) {
bucketList.add(bucket.getName());
            }


获取对象列表
ObjectListing list = client.listObjects(bucketName);
for (S3ObjectSummary object : list.getObjectSummaries()) {
objectName.add(object.getKey());
}


删除对象
client.deleteObject(bucketName, objectName);


上传对象
InputStream is = new ByteArrayInputStream(file.getBytes());
try {
ObjectMetadata meta = new ObjectMetadata();
meta.setContentLength(file.getSize());
String fileName = file.getName() + System.currentTimeMillis();
client.putObject(bucketName, fileName, is, meta);


获取分享连接
Date date=new Date();//取时间 
    Calendar calendar = new GregorianCalendar(); 
    calendar.setTime(date); 
    calendar.add(Calendar.DATE,365000);
    date=calendar.getTime();
    //生成共享链接
URL url =client.generatePresignedUrl(bucketName, fileName, date);

你可能感兴趣的:(电信天翼云对象存储java实现)