创建OBS客户端
引导式阅读
Java
创建OBS客户端
作者
C***
上架时间
2023-11-14 07:06:11

版本说明

本示例基于华为云SDK V3.0版本开发。

功能介绍

OBS客户端(ObsClient)是访问OBS服务的Java客户端,它为调用者提供一系列与OBS服务进行交互的接口,用于管理、操作桶(Bucket)和对象(Object)等OBS服务上的资源。使用OBS Java SDK向OBS发起请求,您需要初始化一个ObsClient实例,并根据需要修改ObsConfiguration的默认配置项。

准备工作

创建OBS客户端

创建OBS客户端有以下几种方式:

1、直接使用服务地址创建OBS客户端(ObsClient)

2、以链式的形式从环境变量及ECS服务器上进行搜索以获取对应的访问密钥创建客户端

3、使用可定制各参数的配置类(ObsConfiguration)创建OBS客户端

1、使用服务地址创建OBS客户端

1、永久访问密钥(AK/SK)创建OBS客户端的代码如下:

String endPoint = "https://your-endpoint"; // 认证用的ak和sk直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 String ak = System.getenv("HUAWEICLOUD_SDK_AK"); String sk = System.getenv("HUAWEICLOUD_SDK_SK"); // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); // 使用ObsClient // 关闭obsClient obsClient.close();

2、临时访问密钥(AK/SK/SecurityToken)创建OBS客户端的代码如下:

String endPoint = "https://your-endpoint"; // 认证用的ak和sk直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 String ak = System.getenv("HUAWEICLOUD_SDK_AK"); String sk = System.getenv("HUAWEICLOUD_SDK_SK"); String securityToken = "*** Provide your Security Token ***"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, securityToken, endPoint); // 使用ObsClient // 关闭obsClient obsClient.close();

说明:您可以参考示例程序,进一步了解临时AK/SK/SecurityToken的获取方式和使用方式。

3、使用BasicCredentialsProvider创建OBS客户端的代码如下:

String endPoint = "https://your-endpoint"; // 认证用的ak和sk直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 String ak = System.getenv("HUAWEICLOUD_SDK_AK"); String sk = System.getenv("HUAWEICLOUD_SDK_SK"); // 创建ObsClient实例 ObsClient obsClient = new ObsClient(new BasicObsCredentialsProvider(ak, sk), endPoint); // 使用ObsClient // 关闭obsClient obsClient.close();

4、使用EnvironmentVariableObsCredentialsProvider创建OBS客户端的代码如下:

String endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(new EnvironmentVariableObsCredentialsProvider(), endPoint); // 使用ObsClient // 关闭obsClient obsClient.close();

说明:以上方式会在环境变量里寻找访问密钥,需要在环境变量中定义OBS_ACCESS_KEY_ID和OBS_SECRET_ACCESS_KEY分别代表永久的AK和SK。

5、使用EcsObsCredentialsProvider创建OBS客户端的代码如下:

String endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(new EcsObsCredentialsProvider(), endPoint); // 使用ObsClient // 关闭obsClient obsClient.close();

说明:当应用程序部署在ECS服务器上时,使用以上方式创建的OBS客户端会从ECS服务器自动获取临时访问密钥和定期自动刷新。

须知:请确保服务端和应用程序部署所在环境的UTC时间一致,否则可能会导致临时访问密钥无法及时刷新。

2、使用链式方式创建OBS客户端

除了上述指定一种方式获取访问密钥外,您还可以以链式的形式从环境变量及ECS服务器上进行搜索以获取对应的访问密钥。

String endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(new OBSCredentialsProviderChain(), endPoint); // 使用ObsClient // 关闭obsClient obsClient.close();

说明:以上方式指定以链式的方式从预定义方式列表中搜索访问密钥。当前默认提供从环境变量中以及从ECS服务器上获取访问密钥两种预定义搜索方式,并按照先从环境变量,再从ECS服务器的顺序进行搜索。链式搜索方式会以第一组成功获取到的访问密钥创建OBS客户端。

3、使用配置类创建OBS客户端

使用可定制各参数的配置类(ObsConfiguration)创建OBS客户端(ObsClient),创建完成后不支持再次修改参数,具体可配置的参数参见配置OBS客户端。以上创建OBS客户端方式均支持使用配置类进行创建,示例代码如下:

String endPoint = "https://your-endpoint"; // 认证用的ak和sk直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 String ak = System.getenv("HUAWEICLOUD_SDK_AK"); String sk = System.getenv("HUAWEICLOUD_SDK_SK"); // 创建ObsConfiguration配置类实例 ObsConfiguration config = new ObsConfiguration(); config.setEndPoint(endPoint); config.setSocketTimeout(30000); config.setMaxErrorRetry(1); // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, config); // 使用Provider创建ObsClient实例 // ObsClient obsClient = new ObsClient(new EnvironmentVariableObsCredentialsProvider(), config); // ObsClient obsClient = new ObsClient(new EcsObsCredentialsProvider(), config); // 使用ObsClient // 关闭obsClient obsClient.close();

说明: 您的工程中可以有多个ObsClient,也可以只有一个ObsClient。 ObsClient是线程安全的,可在并发场景下使用。

须知: ObsClient在调用ObsClient.close方法关闭后不能再次使用。

参考

更多信息请参考OBS对象存储服务