天翼云 对接OBS对象存储
前言
- 最近公司帮国企做一个项目,对方要求云厂商使用电信天翼云,我们之前一直都在使用阿里云,因为国企情况比较特殊,优先考虑国资背景的云厂商;
- 最近才改造完rocketMQ,现在需要改造对象文件存储这快,从阿里云的OSS改成天翼云的OBS,没有对比就没有伤害,天翼云OBS的文档资料太少太少了,开发文档有是有,但文档里面没有demo实例,没有SDK,只有一些方式请求示例,可用性为0, 我人都傻了;没办法,问题还得解决,找了电信云方面对接人,通过沟通才拿到一份文档,结果一打开文档署名是华为云OBS开发文档…我还以为对方弄错了,通过确定才知道文档没发错,确实是华为云的OBS,有点离谱,我不知道是不是电信套了一层,底层还是华为云,这个就不纠结了,先解决问题;
- 我写这篇博客的原因是,当时我找这方面的博客资料太少了,大多跟我的情况不一样,所以想着写一篇博客,给有需要的朋友,如果接入的不是电信对象存储OBS的朋友就不用接着往下看了,别浪费大伙宝贵的时间
- 如图:
正文
一. 前置准备
- AK, SK
- 自己创建一个桶
- endPoint, 点击创建好的桶进去后,关于这个桶的所属终端节点信息,后续需要用上
二.Maven依赖
<!--华为云 对象存储OBS-->
<dependency>
<groupId>com.huaweicloud</groupId>
<artifactId>esdk-obs-java-bundle</artifactId>
<version>[3.21.8,)</version>
</dependency>
三. 我就简单列举两个例子, 还有我把华为云的开发文档链接放在下面了,也可以去看看官方的文档
// obs 配置类
ObsConfiguration config = new ObsConfiguration();
config.setSocketTimeout(30000);
config.setConnectionTimeout(10000);
config.setEndPoint(endPoint);
// obs 客户端
ObsClient obsClient = new ObsClient(ak, sk, config);
/**
* 示例: 上传文本对象
* bucketName: 桶名称
* objectKey: 对象key
* content: 文件内容
*/
String content = "文本内容";
obsClient.putObject(bucketName, objectKey, new ByteArrayInputStream(content.getBytes("UTF-8")), null);
/**
* 示例: 上传图片对象
* bucketName: 桶名称
* objectKey: 对象key
* file: 图片
*/
File file = new File("文件路径")
obsClient.putObject(bucketName, objectKey, file);
TODO 这里我备注一下,如果你想要获取上传对象能在公网访问的链接,分为两种情况
1.你桶的访问权限设置为公开的,这种情况就不需要通过api方式获取公网链接,直接用: bucketName.endPoint/objectKey (举例: rt-obs-public.obs.cn/文件名) 这样就能访问你上传的文件了
2.你桶的访问权限设置为私有,这种情况就需要通过api方式获取公网链接,示例在下面
/**
* 示例: 获取上传对象在公网中能访问的链接
*
* expirationTime: 链接有效时间 单位: 秒
* bucketName: 桶名称
* objectKey: 对象key
* file: 图片
*/
try {
TemporarySignatureRequest req = new TemporarySignatureRequest(HttpMethodEnum.GET, expirationTime);
req.setBucketName(bucketName);
req.setObjectKey(objectKey);
TemporarySignatureResponse res = obsClient.createTemporarySignature(req);
System.out.println("公网能访问的URL:" + res.getSignedUrl())
} catch (Exception e) {
log.error("下载图片失败", e);
}
四.华为云的文档地址,大家可以去看看
华为云 对象存储OBS开发手册
最后,希望这篇博客对大家有用