1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 电信天翼云对象存储java实现

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

时间:2024-05-06 04:02:53

相关推荐

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

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

产品介绍

对象存储(Object-Oriented Storage, OOS)是中国电信为客户提供的一种海量、弹性、廉价、高可用的存储服务。客户只需花极少的钱就可以获得一个几乎无限的存储空间,可以随时根据需要调整对资源的占用,并只需为真正使用的资源付费。

OOS 提供了基于各种开发语言的 SDK 和基于 HTTP REST 的访问接口两种访问方式,用户可以在任何地方通过互联网对数据进行管理和访问。 OOS 提供的 REST接口与 Amazon S3 兼容,因此基于 OOS 的业务可以非常轻松的与 Amazon S3 对接。您也可以通过 OOS 提供的 SDK 来调用 OOS 服务,开发语言目前支持 Ruby、 .NET、 PHP、Java、 Python

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

1.创建客户端

电信oos服务是基于亚马逊aws的包实现,但是他们自己有做一些封装,这里如果你引入了亚马逊官方的jar包,请更换为电信封装好的包,不然功能是无法实现的,jar包下载地址/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-

return client;

}

}

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

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

oos-(终端节点http://oos-hq-)

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);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。