华为云对象存储OBS问题定位方法(Java SDK)_云淘科技

开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。

使用OBS Java SDK对接OBS服务可能会遇到许多问题,您可以通过下面介绍的步骤进行问题分析和定位:

确保使用的是OBS Java SDK的最新版本, 您可以从这里下载最新版本;
确保开启了OBS Java SDK日志功能,开启方式参见日志分析章节,通常建议的日志级别为WARN;
确保使用OBS Java SDK的程序代码遵照OBS客户端通用示例编写,所有ObsClient的接口调用都进行了异常处理,例如上传对象的示例如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
ObsClient obsClient = null; 
try
{
    String endPoint = "https://your-endpoint";
    // 认证用的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 = new ObsClient(ak, sk, endPoint);
    HeaderResponse response = obsClient.putObject("bucketname", "objectname", new ByteArrayInputStream("Hello OBS".getBytes())); 
    // 可选:调用成功后,记录调用成功的HTTP状态码和服务端请求ID
    System.out.println(response.getStatusCode());
    System.out.println(response.getRequestId());
}
catch (ObsException e)
{
    // 推荐:发生异常后,记录失败的HTTP状态码、服务端错误码、服务端请求ID等
    System.out.println("HTTP Code: " + e.getResponseCode());
    System.out.println("Error Code:" + e.getErrorCode());
    System.out.println("Request ID:" + e.getErrorRequestId());
    // 推荐:发生异常后,记录异常堆栈信息
    e.printStackTrace(System.out);
}

您可以从这里查看关于ObsException的详细说明。

当调用ObsClient的接口发生异常时,从ObsException异常或日志文件中获取HTTP状态码、OBS服务端错误码后进行对照,排查异常原因;
如果通过步骤4未能排查到异常原因,可从ObsException异常或日志文件中获取OBS服务端请求ID后联系OBS服务端运维团队定位异常原因;
如果从ObsException异常或日志文件中无法获取OBS服务端请求ID,请收集ObsException的异常堆栈信息并联系OBS客户端运维团队定位异常原因。

父主题: 问题定位(Java SDK)

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家