【动手体验】使用Java SDK 管理华为云对象存储OBS

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_39295735/article/details/83304525

实验目的

通过使用Java+SDK管理华为云对象存储OBS,了解对象存储的基本原理和操作,熟悉SDK的使用方法,为后续需要开发复杂功能提供入门准备。

准备动作

1、电脑上安装Java开发环境+Eclipse,可参考网上的教程:
Java安装教程:http://www.runoob.com/java/java-environment-setup.html#win-install
Eclipse+汉化教程:https://blog.csdn.net/weixin_41848531/article/details/81736414

2、下载华为云OBS SDK(https://developer.huaweicloud.com/sdk?OBS),笔者编辑本文时,最新版本是OBS Java SDK 3.0.0 ,SDK安装过程如下:
a.下载OBS Java SDK开发包。
b. 在Eclipse中创建一个Java工程
b. 将解压后的文件:esdk-obs-java-<versionId>.jar 以及third_party文件夹下所有的JAR包拷贝到您的项目目录中。
c. 在Eclipse中选择您的工程,右击选择 Properties > Java Build Path > Add JARs。

3、下载OBS的访问密钥key文件。
a. 登陆华为云网站(www.huaweicloud.com),进入OBS控制台,下载访问密钥。

密钥key是一个xxx.csv的表格文件,其中Access Key Id对应OBS API中的ak,Secret Access Key对应OBS API中的sk。

密钥key的作用:
通过网站访问对象存储OBS,需要先通过账号密码登陆网站。通过代码访问OBS,如果也需要输入账号密码,就会使得的代码变复杂。因此密钥key可以认为是经过加密的账号和密码,代码中可直接使用。 密钥key文件只在生成的时候提供下载,因此下载后需妥善保存。

4、打开JDK包中的开发指南《对象存储Java SDK开发指南.doc》内含丰富的说明。

操作步骤

1、在eclipse工程中左侧工具栏中找到自动生成的xxx.java,编写一个java类,输出欢迎语句。点击eclispe工具栏上的 调试或运行按钮,在结果中可看到欢迎语句。

package main;

import java.io.*;
import java.io.IOException;

public class main {
	
	public static void main(String[] args) 
	{
		System.out.println("welcome to china!!!");	
	}			
}

2、创建一个OBS客户端。电脑是访问OBS的客户端,华为云的OBS是服务器。
2.1 公有云的数据中心是分区域的,每个OBS访问地址都是通过“后缀endpoint”来指定数据是存放在哪个区域的数据中心的。
“后缀endpoint”的查询地址:https://developer.huaweicloud.com/endpoint

2.2 创建一个OBS客户端
新增导入OBS相关库文件,并在main函数中添加OBS客户端的打开和关闭操作。

import com.obs.services.ObsClient;
import com.obs.services.exception.ObsException;
import com.obs.services.model.*;


String endPoint = "https://yourdomainname"; 
String ak = "*** Provide your Access Key ***"; 
String sk = "*** Provide your Secret Key ***"; 
// 创建ObsClient实例 
ObsClient obsClient = new ObsClient(ak, sk, endPoint); 
  
// 关闭obsClient 
obsClient.close();

3.3 参考《对象存储服务Java SDK开发指南.doc》分别编辑创建桶、上传对象和查看所有对象,具体代码参考后续完整代码。

3.4 点击eclipse的调试或运行按钮,在控制台中显示创建桶成功,显示所有对象成功。
控制台中提示日志插件和性能统计错误,不影响功能,可忽略不计。

3.5 在华为云OBS 对象存储控制台中,可看到新增生成的桶和上传的文件。

完整代码

package main;

import java.io.*;
import java.io.IOException;

import com.obs.services.ObsClient;
import com.obs.services.exception.ObsException;
import com.obs.services.model.*;


public class main {
	
	/* 初始化OBS客户端所需的参数 */
	private static final String endPoint     = "https://your endpoint";
	private static final String ak           = "your ak";
	private static final String sk           = "your sk";
	private static final String g_bucketName = "hello-obs-demo";
	private static final String g_bucketLoc  = "cn-south-1";

	public static void main(String[] args) 
	{
		System.out.println("welcome to china!!!");
		
		/* 创建OBS客户端 */
		ObsClient obsClient = new ObsClient(ak,sk,endPoint);
		ObsBucket obsBucket;
		
		try 
		{
			/* 创建一个桶 */
			obsBucket = createBucket(obsClient);			
	
			/* 从本地笔记本上传文件到桶里面 */
			uploadFile(obsClient, obsBucket);
						
			/* 列举对象(文件)的信息 */
			listFile(obsClient,obsBucket);
			
			/* 关闭客户端 */
			
		}
		catch (ObsException e)
		{
			System.out.println("main 函数出现错误!!!");
		}
		
		/* 关闭obs客户端  */
		closeObsClient(obsClient);				
	}
	
	
	/* 创建一个桶 */
	private static ObsBucket createBucket(ObsClient obsClient) throws ObsException
	{
		ObsBucket obsBucket = new ObsBucket(g_bucketName,g_bucketLoc);
        obsClient.createBucket(obsBucket);
        System.out.println("Create bucket:" + g_bucketName + " successfully!");	
        return obsBucket;
	}
	
	/* 创建一个对象(文件) */
	private static void uploadFile(ObsClient obsClient, ObsBucket obsBucket) throws ObsException
	{
		File newfile = new File("C:\\Users\\xiaoniu\\Desktop\\temp\\hello.txt");
		obsClient.putObject(obsBucket.getBucketName(), "folder/", newfile);
		obsClient.putObject(obsBucket.getBucketName(), "hello1", newfile);
		obsClient.putObject(obsBucket.getBucketName(), "hello2", newfile);
	}
	
	/* 列举对象(文件)的信息 */
	private static void listFile(ObsClient obsClient, ObsBucket obsBucket) throws ObsException
	{
		System.out.println("开始测试桶里面的对象信息");
		ObjectListing objList = obsClient.listObjects(obsBucket.getBucketName());
		for (ObsObject obj : objList.getObjects())
		{
			System.out.println("--:"+obj.getObjectKey()+" (size=" + obj.getMetadata().getContentLength()+")");			
		}
	}
	
	/* 关闭客户端 */
	private static void closeObsClient(ObsClient obsClient) 
	{		
			try
			{
				obsClient.close();
			}
			catch (IOException e)
			{
				System.out.println("close obs client error.");
			}	
			
	}
		
}


 

展开阅读全文

没有更多推荐了,返回首页