更新时间:2024-07-30 gmt 08:00
对象存储服务 obs-九游平台
对象存储服务软件开发工具包(obs sdk,object storage service software development kit)是对obs服务提供的rest api进行的封装,以简化用户的开发工作。用户直接调用obs sdk提供的接口函数即可实现使用obs服务业务能力的目的。
本章节以java sdk为例,上传一个“localfile”文件至“bucket-test”桶为例,帮助您快速通过obs sdk使用obs的基础功能,包括创建桶、上传对象、下载对象、删除对象。
准备工作
步骤一:创建桶
在上传对象前,您需要先创建桶。以下示例展示如何新建一个名为“examplebucket”的桶,仅设置桶名和endpoint。
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
importcom.obs.services.obsclient; importcom.obs.services.exception.obsexception; importcom.obs.services.model.obsbucket; publicclass createbucket002{ publicstaticvoidmain(string[]args){ // 您可以通过环境变量获取访问密钥ak/sk,也可以使用其他外部引入方式传入。如果使用硬编码可能会存在泄露风险。 // 您可以登录访问管理控制台获取访问密钥ak/sk stringak=system.getenv("access_key_id"); stringsk=system.getenv("secret_access_key_id"); // 【可选】如果使用临时ak/sk和securitytoken访问obs,同样建议您尽量避免使用硬编码,以降低信息泄露风险。 // 您可以通过环境变量获取访问密钥ak/sk/securitytoken,也可以使用其他外部引入方式传入。 // string securitytoken = system.getenv("security_token"); // endpoint填写桶所在的endpoint, 此处以华北-北京四为例,其他地区请按实际情况填写。 stringendpoint="https://obs.cn-north-4.myhuaweicloud.com"; // endpoint填写桶所在的endpoint, 此处以中国-香港为例,其他地区请按实际情况填写。 stringendpoint="https://obs.ap-southeast-1.myhuaweicloud.com"; // endpoint填写桶所在区域的endpoint。 stringendpoint="https://your-endpoint"; // 您可以通过环境变量获取endpoint,也可以使用其他外部引入方式传入。 //string endpoint = system.getenv("endpoint"); // 创建obsclient实例 // 使用永久ak/sk初始化客户端 obsclientobsclient=newobsclient(ak,sk,endpoint); // 使用临时ak/sk和securitytoken初始化客户端 // obsclient obsclient = new obsclient(ak, sk, securitytoken, endpoint); try{ // 示例桶名 stringexamplebucket="examplebucket"; // 创建桶 obsbucketbucket=obsclient.createbucket(examplebucket); system.out.println("createbucket successfully"); system.out.println("statuscode: "bucket.getstatuscode()); system.out.println("requestid: "bucket.getrequestid()); }catch(obsexceptione){ system.out.println("createbucket failed"); // 请求失败,打印http状态码 system.out.println("http code: "e.getresponsecode()); // 请求失败,打印服务端错误码 system.out.println("error code:"e.geterrorcode()); // 请求失败,打印详细错误信息 system.out.println("error message: "e.geterrormessage()); // 请求失败,打印请求id system.out.println("request id:"e.geterrorrequestid()); system.out.println("host id:"e.geterrorhostid()); }catch(exceptione){ system.out.println("createbucket failed"); // 其他异常信息打印 e.printstacktrace(); } } } |
步骤二:上传对象
以下示例展示了将本地文件localfile上传到examplebucket桶中。
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
importcom.obs.services.obsclient; importcom.obs.services.exception.obsexception; importcom.obs.services.model.putobjectrequest; importjava.io.file; publicclass putobject004{ publicstaticvoidmain(string[]args){ // 您可以通过环境变量获取访问密钥ak/sk,也可以使用其他外部引入方式传入。如果使用硬编码可能会存在泄露风险。 // 您可以登录访问管理控制台获取访问密钥ak/sk stringak=system.getenv("access_key_id"); stringsk=system.getenv("secret_access_key_id"); // 【可选】如果使用临时ak/sk和securitytoken访问obs,同样建议您尽量避免使用硬编码,以降低信息泄露风险。 // 您可以通过环境变量获取访问密钥ak/sk/securitytoken,也可以使用其他外部引入方式传入。 // string securitytoken = system.getenv("security_token"); // endpoint填写桶所在的endpoint, 此处以华北-北京四为例,其他地区请按实际情况填写。 stringendpoint="https://obs.cn-north-4.myhuaweicloud.com"; // endpoint填写桶所在的endpoint, 此处以中国-香港为例,其他地区请按实际情况填写。 stringendpoint="https://obs.ap-southeast-1.myhuaweicloud.com"; // endpoint填写桶所在区域的endpoint。 stringendpoint="https://your-endpoint"; // 您可以通过环境变量获取endpoint,也可以使用其他外部引入方式传入。 //string endpoint = system.getenv("endpoint"); // 创建obsclient实例 // 使用永久ak/sk初始化客户端 obsclientobsclient=newobsclient(ak,sk,endpoint); // 使用临时ak/sk和securitytoken初始化客户端 // obsclient obsclient = new obsclient(ak, sk, securitytoken, endpoint); try{ // 文件上传 // localfile 为待上传的本地文件路径,需要指定到具体的文件名 putobjectrequestrequest=newputobjectrequest(); request.setbucketname("examplebucket"); request.setobjectkey("objectname"); request.setfile(newfile("localfile")); obsclient.putobject(request); system.out.println("putobject successfully"); }catch(obsexceptione){ system.out.println("putobject failed"); // 请求失败,打印http状态码 system.out.println("http code:"e.getresponsecode()); // 请求失败,打印服务端错误码 system.out.println("error code:"e.geterrorcode()); // 请求失败,打印详细错误信息 system.out.println("error message:"e.geterrormessage()); // 请求失败,打印请求id system.out.println("request id:"e.geterrorrequestid()); system.out.println("host id:"e.geterrorhostid()); e.printstacktrace(); }catch(exceptione){ system.out.println("putobject failed"); // 其他异常信息打印 e.printstacktrace(); } } } |
步骤三:下载对象
本示例用于流式下载examplebucket桶中的objectname对象。
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
importcom.obs.services.obsclient; importcom.obs.services.exception.obsexception; importcom.obs.services.model.obsobject; importjava.io.bytearrayoutputstream; importjava.io.inputstream; publicclass getobject001{ publicstaticvoidmain(string[]args){ // 您可以通过环境变量获取访问密钥ak/sk,也可以使用其他外部引入方式传入。如果使用硬编码可能会存在泄露风险。 // 您可以登录访问管理控制台获取访问密钥ak/sk stringak=system.getenv("access_key_id"); stringsk=system.getenv("secret_access_key_id"); // 【可选】如果使用临时ak/sk和securitytoken访问obs,同样建议您尽量避免使用硬编码,以降低信息泄露风险。 // 您可以通过环境变量获取访问密钥ak/sk/securitytoken,也可以使用其他外部引入方式传入。 // string securitytoken = system.getenv("security_token"); // endpoint填写桶所在的endpoint, 此处以华北-北京四为例,其他地区请按实际情况填写。查看桶所在的endpoint请参见:https://support.huaweicloud.com/usermanual-obs/obs_03_0312.html。 stringendpoint="https://obs.cn-north-4.myhuaweicloud.com"; // endpoint填写桶所在的endpoint, 此处以中国-香港为例,其他地区请按实际情况填写。查看桶所在的endpoint请参见:https://support.huaweicloud.com/intl/zh-cn/usermanual-obs/obs_03_0312.html stringendpoint="https://obs.ap-southeast-1.myhuaweicloud.com"; // endpoint填写桶所在区域的endpoint。 stringendpoint="https://your-endpoint"; // 您可以通过环境变量获取endpoint,也可以使用其他外部引入方式传入。 //string endpoint = system.getenv("endpoint"); // 创建obsclient实例 // 使用永久ak/sk初始化客户端 obsclientobsclient=newobsclient(ak,sk,endpoint); // 使用临时ak/sk和securitytoken初始化客户端 // obsclient obsclient = new obsclient(ak, sk, securitytoken, endpoint); try{ // 流式下载 obsobjectobsobject=obsclient.getobject("examplebucket","objectname"); // 读取对象内容 system.out.println("object content:"); inputstreaminput=obsobject.getobjectcontent(); byte[]b=newbyte[1024]; bytearrayoutputstreambos=newbytearrayoutputstream(); intlen; while((len=input.read(b))!=-1){ bos.write(b,0,len); } system.out.println("getobjectcontent successfully"); system.out.println(newstring(bos.tobytearray())); bos.close(); input.close(); }catch(obsexceptione){ system.out.println("getobjectcontent failed"); // 请求失败,打印http状态码 system.out.println("http code:"e.getresponsecode()); // 请求失败,打印服务端错误码 system.out.println("error code:"e.geterrorcode()); // 请求失败,打印详细错误信息 system.out.println("error message:"e.geterrormessage()); // 请求失败,打印请求id system.out.println("request id:"e.geterrorrequestid()); system.out.println("host id:"e.geterrorhostid()); e.printstacktrace(); }catch(exceptione){ system.out.println("getobjectcontent failed"); // 其他异常信息打印 e.printstacktrace(); } } } |
步骤四:删除对象
以下代码示例展示删除examplebucket桶下objectname对象。
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
importcom.obs.services.obsclient; importcom.obs.services.exception.obsexception; publicclass deleteobject001{ publicstaticvoidmain(string[]args){ // 您可以通过环境变量获取访问密钥ak/sk,也可以使用其他外部引入方式传入。如果使用硬编码可能会存在泄露风险。 // 您可以登录访问管理控制台获取访问密钥ak/sk stringak=system.getenv("access_key_id"); stringsk=system.getenv("secret_access_key_id"); // 【可选】如果使用临时ak/sk和securitytoken访问obs,同样建议您尽量避免使用硬编码,以降低信息泄露风险。 // 您可以通过环境变量获取访问密钥ak/sk/securitytoken,也可以使用其他外部引入方式传入。 // string securitytoken = system.getenv("security_token"); // endpoint填写桶所在的endpoint, 此处以华北-北京四为例,其他地区请按实际情况填写。 stringendpoint="https://obs.cn-north-4.myhuaweicloud.com"; // endpoint填写桶所在的endpoint, 此处以中国-香港为例,其他地区请按实际情况填写。 stringendpoint="https://obs.ap-southeast-1.myhuaweicloud.com"; // endpoint填写桶所在区域的endpoint。 stringendpoint="https://your-endpoint"; // 您可以通过环境变量获取endpoint,也可以使用其他外部引入方式传入。 //string endpoint = system.getenv("endpoint"); // 创建obsclient实例 // 使用永久ak/sk初始化客户端 obsclientobsclient=newobsclient(ak,sk,endpoint); // 使用临时ak/sk和securitytoken初始化客户端 // obsclient obsclient = new obsclient(ak, sk, securitytoken, endpoint); try{ // 删除单个对象 obsclient.deleteobject("examplebucket","objectname"); system.out.println("deleteobject successfully"); }catch(obsexceptione){ system.out.println("deleteobject failed"); // 请求失败,打印http状态码 system.out.println("http code:"e.getresponsecode()); // 请求失败,打印服务端错误码 system.out.println("error code:"e.geterrorcode()); // 请求失败,打印详细错误信息 system.out.println("error message:"e.geterrormessage()); // 请求失败,打印请求id system.out.println("request id:"e.geterrorrequestid()); system.out.println("host id:"e.geterrorhostid()); e.printstacktrace(); }catch(exceptione){ system.out.println("deleteobject failed"); // 其他异常信息打印 e.printstacktrace(); } } } |
相关文档
意见反馈
文档内容是否对您有帮助?
提交成功!非常感谢您的反馈,我们会继续努力做到更好!
您可在查看反馈及问题处理状态。
系统繁忙,请稍后重试
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨