对象存储服务 OBS-创建并配置客户端(Java SDK):示例代码

时间:2024-08-27 13:18:04

示例代码

  • 使用不透传访问凭证的客户端类,直接配置访问凭证,除访问凭证外只配置终端节点(endpoint)的示例代码
    • 永久访问密钥(AK/SK)创建OBS客户端的代码如下:
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      // Endpoint以北京四为例,其他地区请按实际情况填写。
      String endPoint = "https://obs.cn-north-4.myhuaweicloud.com";
      // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AC CES S_KEY_ID和SECRET_ACCESS_KEY_ID。
      // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html
      String ak = System.getenv("ACCESS_KEY_ID");
      String sk = System.getenv("SECRET_ACCESS_KEY_ID");
      // 创建ObsClient实例
      ObsClient obsClient = new ObsClient(ak, sk, endPoint);
       
      // 使用访问OBS
              
      // 关闭obsClient
      obsClient.close();
      
    • 临时访问密钥(AK/SK/SecurityToken)创建OBS客户端的代码如下:
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      // Endpoint以北京四为例,其他地区请按实际情况填写。
      String endPoint = "https://obs.cn-north-4.myhuaweicloud.com";
      // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。
      // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html
      String ak = System.getenv("ACCESS_KEY_ID");
      String sk = System.getenv("SECRET_ACCESS_KEY_ID");
      String securityToken = System.getenv("SECRET_TOKEN");
      // 创建ObsClient实例
      ObsClient obsClient = new ObsClient(ak, sk, securityToken, endPoint);
       
      // 使用访问OBS
              
      // 关闭obsClient
      obsClient.close();
      
    • BasicObsCredentialsProvider示例代码
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      // Endpoint以北京四为例,其他地区请按实际情况填写。
      String endPoint = "https://obs.cn-north-4.myhuaweicloud.com";
      // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。
      // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html
      String ak = System.getenv("ACCESS_KEY_ID");
      String sk = System.getenv("SECRET_ACCESS_KEY_ID");
      // 创建ObsClient实例
      ObsClient obsClient = new ObsClient(new BasicObsCredentialsProvider(ak, sk), endPoint);
       
      // 使用访问OBS
              
      // 关闭obsClient
      obsClient.close();
      
  • 透传密钥客户端类(SecretFlexibleObsClient)示例代码
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    // Endpoint以北京四为例,其他地区请按实际情况填写。
    String endPoint = "https://obs.cn-north-4.myhuaweicloud.com";
    // 创建ObsConfiguration配置类实例
    ObsConfiguration config = new ObsConfiguration();
    config.setEndPoint(endPoint);
    
    // 创建SecretFlexibleObsClient实例
    SecretFlexibleObsClient obsClient = new SecretFlexibleObsClient(config);
    // 使用访问OBS
    // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。
    // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html
    String ak1 = System.getenv("ACCESS_KEY_ID");
    String sk1 = System.getenv("SECRET_ACCESS_KEY_ID");
    obsClient.listBuckets(ak1, sk1);
    
    String ak2 = System.getenv("ACCESS_KEY_ID");
    String sk2 = System.getenv("SECRET_ACCESS_KEY_ID");
    obsClient.listBuckets(ak2, sk2);
    
    // 关闭obsClient
    obsClient.close();
    
  • 从环境变量获取访问凭证(EnvironmentVariableObsCredentialsProvider)示例代码
    使用该方法需要在环境变量中定义OBS_ACCESS_KEY_ID和OBS_SECRET_ACCESS_KEY分别代表永久的AK和SK。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // Endpoint以北京四为例,其他地区请按实际情况填写。
    String endPoint = "https://obs.cn-north-4.myhuaweicloud.com";
    // 创建ObsClient实例
    ObsClient obsClient = new ObsClient(new EnvironmentVariableObsCredentialsProvider(), endPoint);
     
    // 使用访问OBS
            
    // 关闭obsClient
    obsClient.close();
    
  • E CS 场景从云服务委托获取访问凭证(EcsObsCredentialsProvider)示例代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // Endpoint以北京四为例,其他地区请按实际情况填写。
    String endPoint = "https://obs.cn-north-4.myhuaweicloud.com";
    // 创建ObsClient实例
    ObsClient obsClient = new ObsClient(new EcsObsCredentialsProvider(), endPoint);
     
    // 使用访问OBS
            
    // 关闭obsClient
    obsClient.close();
    
  • 链式获取访问凭证(OBSCredentialsProviderChain)示例代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // Endpoint以北京四为例,其他地区请按实际情况填写。
    String endPoint = "https://obs.cn-north-4.myhuaweicloud.com";
    // 创建ObsClient实例
    ObsClient obsClient = new ObsClient(new OBSCredentialsProviderChain(), endPoint);
     
    // 使用访问OBS
            
    // 关闭obsClient
    obsClient.close();
    
  • 使用ObsConfiguration配置参数示例代码
    • 配置KeyManagerFactory,配置后可以在本地保存证书,并校验服务端返回证书是否正确。
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      // Endpoint以北京四为例,其他地区请按实际情况填写。
      String endPoint = "https://obs.cn-north-4.myhuaweicloud.com";
      // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。
      // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html
      String ak = System.getenv("ACCESS_KEY_ID");
      String sk = System.getenv("SECRET_ACCESS_KEY_ID");
      
      String jksPassword = "you-jks-password";
      String jksPath = "/path/to/your/keystore/file";
      KeyStore ks = KeyStore.getInstance("JKS");
      char[] passArray = jksPassword.toCharArray();
      FileInputStream inputStream = new FileInputStream(jksPath);
      ks.load(inputStream, passArray);
      KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
      kmf.init(ks, passArray);
      
      String trustJKSPassword = "you-trustJKS-password";
      String trustJKSPath = "/path/to/your/trustKeyStore/file";
      KeyStore trustKeyStore = KeyStore.getInstance("JKS");
      char[] trustPassArray = trustJKSPassword.toCharArray();
      FileInputStream trustInputStream = new FileInputStream(trustJKSPath);
      trustKeyStore.load(trustInputStream, trustPassArray);
      TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
      tmf.init(trustKeyStore);
      
      ObsConfiguration config = new ObsConfiguration();
      config.setEndPoint(endPoint);
      config.setKeyManagerFactory(kmf);
      config.setTrustManagerFactory(tmf);
      
      ObsClient obsClient = new ObsClient(ak, sk, config);
      

      本地证书保存格式应为 jks 格式,可以运行以下命令调用 Java 自带的 keytool 工具将 cer 证书转换为 jks 证书。

      keytool -import -file your-cer-file.cer -keystore your-keystore-file.jks
    • 配置 HTTP 代理,配置后SDK 将会通过的代理访问服务端。
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      // Endpoint以北京四为例,其他地区请按实际情况填写。
      String endPoint = "https://obs.cn-north-4.myhuaweicloud.com";
      // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。
      // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html
      String ak = System.getenv("ACCESS_KEY_ID");
      String sk = System.getenv("SECRET_ACCESS_KEY_ID");
      
      String proxyUrl = "proxy.com";
      int proxyPort = 8080;
      String proxyUser = "userName";
      String proxyPassword = "password";
      ObsConfiguration config = new ObsConfiguration();
      config.setEndPoint(endPoint);
      config.setHttpProxy(proxyUrl, proxyPort, proxyUser, proxyPassword);
      ObsClient obsClient = new ObsClient(ak, sk,config);
      
support.huaweicloud.com/sdk-java-devg-obs/obs_21_0202.html