华为云用户手册

  • 上传对象简介(Go SDK) 在OBS中,用户操作的基本数据单元是对象。OBS Go SDK提供了丰富的对象上传接口,可以通过以下方式上传对象: 流式上传 文件上传 分段上传 断点续传上传 SDK支持上传0KB~5GB的对象。流式上传和文件上传的内容大小不能超过5GB;当上传较大文件时,请使用分段上传,分段上传每段内容大小不能超过5GB。 如果上传的对象权限设置为匿名用户读取权限,对象上传成功后,匿名用户可通过链接地址访问该对象数据。对象链接地址格式为:https://桶名. 域名 /文件夹目录层级/对象名。如果该对象存在于桶的根目录下,则链接地址将不需要有文件夹目录层级。 上传对象-流式上传(Go SDK) 上传对象-文件上传(Go SDK) 上传对象-追加上传(Go SDK) 上传对象-断点续传上传(Go SDK) 父主题: 对象相关接口(Go SDK)
  • 准备访问密钥 OBS通过用户账号中的AK和SK进行签名验证,确保通过授权的账号才能访问指定的OBS资源。获取访问密钥前,请确保访问OBS的 IAM 子用户已开启编程访问,开启方式详见修改或查看IAM用户信息。以下是对AK和SK的解释说明: AK:Access Key ID,接入键标识,用户在 对象存储服务 系统中的接入键标识,一个接入键标识唯一对应一个用户,一个用户可以同时拥有多个接入键标识。对象存储服务系统通过接入键标识识别访问系统的用户。 SK:Secret Access Key,安全接入键,用户在对象存储服务系统中的安全接入键,是用户访问对象存储服务系统的密钥,用户根据安全接入键和请求头域生成鉴权信息。安全接入键和接入键标识一一对应。 访问密钥分永久访问密钥(AK/SK)和临时访问密钥(AK/SK和SecurityToken)两种。每个用户最多可创建两个有效的永久访问密钥。临时访问密钥只在设置的有效期内能够访问OBS,过期后需要重新获取。出于安全性考虑,建议您使用临时访问密钥访问OBS,或使用永久访问密钥访问OBS时,定期更新您的访问密钥(AK/SK)。两种密钥的获取方式如下。 永久访问密钥: 登录管理控制台。 单击页面右上角的用户名,并选择“我的凭证”。 在“我的凭证”页面,单击左侧导航栏的“访问密钥”。 在“访问密钥”页面,单击“新增访问密钥”。 在弹出的“新增访问密钥”对话框中,输入登录密码和对应验证码。 用户如果未绑定邮箱和手机,则只需输入登录密码。 用户如果同时绑定了邮箱和手机,可以选择其中一种方式进行验证。 单击“确定”。 在弹出的“下载确认”提示框中,单击“确定”后,密钥会直接保存到浏览器默认的下载文件夹中。 打开下载下来的“credentials.csv”文件即可获取到访问密钥(AK和SK)。 每个用户最多可创建两个有效的访问密钥。 为防止访问密钥泄露,建议您将其保存到安全的位置。如果用户在此提示框中单击“取消”,则不会下载密钥,后续也将无法重新下载。如果需要使用访问密钥,可以重新创建新的访问密钥。 临时访问密钥: 临时AK/SK和SecurityToken是系统颁发给用户的临时访问令牌,通过接口设置有效期,范围为15分钟至24小时,过期后需要重新获取。临时AK/SK和SecurityToken遵循权限最小化原则。使用临时AK/SK鉴权时,临时AK/SK和SecurityToken必须同时使用。 获取临时访问密钥的接口请参考获取临时AK/SK和securitytoken。 OBS属于全局级服务,所以在获取临时访问密钥时,需要设置Token的使用范围取值为domain,表示获取的Token可以作用于全局服务,全局服务不区分项目或者区域。
  • 恢复多版本归档存储对象 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.restoreObject接口传入版本号(versionId)来恢复多版本归档存储对象。 本示例用于通过设置versionId值将destbucketname桶中destobjectname的多版本归档存储对象,快速恢复为标准存储对象。 代码示例如下所示: // 认证用的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"); String endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); RestoreObjectRequest request = new RestoreObjectRequest("bucketname", "objectname", 1); // 使用快速恢复方式,恢复多版本对象 request.setRestoreTier(RestoreTierEnum.EXPEDITED); request.setVersionId("versionid"); obsClient.restoreObject(request); 恢复多版本对象过程中返回的错误码含义、问题原因及处理措施可参考OBS服务端错误码。 父主题: 多版本控制
  • 报错NetworkOnMainThreadException NetworkOnMainThreadException 一般是因为网络请求在MainThread类中产生的异常。 原因: Android3.0版本开始,强制程序不能在主线程中访问网络,要把访问网络放在独立的线程中。 解决办法: 1. 为了防止访问网络阻塞主线程,一般都要把访问网络放在独立线程中或者异步线程AsyncTask中。 2. 建议和网络请求有关比较耗时的操作,放到一个子线程里,然后用Handler消息机制与主线程通信。 父主题: 异常处理
  • 获取桶存量信息 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 桶存量信息包括桶已使用的空间大小以及桶包含的对象个数。 您可以通过ObsClient.getBucketStorageInfo获取桶的存量信息。 本示例用于获取桶名为“bucketname”的存量信息。 代码示例如下所示: // 认证用的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 endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); BucketStorageInfo storageInfo = obsClient.getBucketStorageInfo("bucketname"); Log.i("GetBucketStorageInfo", "\t" + storageInfo.getObjectNumber()); Log.i("GetBucketStorageInfo", "\t" + storageInfo.getSize()); 获取桶存量信息过程中返回的错误码含义、问题原因及处理措施可参考OBS服务端错误码。 父主题: 管理桶
  • 查看跨域规则 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.getBucketCors查看桶的跨域规则。 本示例用于查看桶名为“bucketname”的跨域规则。 代码示例如下所示: // 认证用的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 endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); BucketCors cors = obsClient.getBucketCors("bucketname"); for(BucketCorsRule rule : cors.getRules()){ Log.i("GetBucketCors","\t" + rule.getId()); Log.i("GetBucketCors","\t" + rule.getMaxAgeSecond()); Log.i("GetBucketCors","\t" + rule.getAllowedHeader()); Log.i("GetBucketCors","\t" + rule.getAllowedOrigin()); Log.i("GetBucketCors","\t" + rule.getAllowedMethod()); Log.i("GetBucketCors","\t" + rule.getExposeHeader()); } 查看跨域规则过程中返回的错误码含义、问题原因及处理措施可参考OBS服务端错误码。 父主题: 跨域资源共享
  • 上传对象 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 本示例用于上传字符串“Hello OBS”到桶名为“bucketname”里,名称为“objectname”。 代码示例如下所示: obsClient.putObject("bucketname", "objectname", new ByteArrayInputStream("Hello OBS".getBytes())); 更多上传对象的信息,请参见上传对象。 父主题: 快速入门
  • 查看桶日志配置 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.getBucketLogging查看桶日志配置。 本示例用于查看桶名为“bucketname”的日志配置。 代码示例如下所示: // 认证用的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 endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); BucketLoggingConfiguration config = obsClient.getBucketLogging("bucketname"); Log.i("GetBucketLoggingConfiguration","\t" + config.getTargetBucketName()); Log.i("GetBucketLoggingConfiguration","\t" + config.getLogfilePrefix()); 查看桶日志过程中返回的错误码含义、问题原因及处理措施可参考OBS服务端错误码。 父主题: 设置访问日志
  • 查看桶多版本状态 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.getBucketVersioning查看桶的多版本状态。 本示例用于获取桶名为“bucketname”里的多版本状态。 代码示例如下所示: // 认证用的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 endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); BucketVersioningConfiguration status = obsClient.getBucketVersioning("bucketname"); Log.i("GetBucketVersioning", "\t" + status.getVersioningStatus()); 获取桶多版本状态过程中返回的错误码含义、问题原因及处理措施可参考OBS服务端错误码。 父主题: 多版本控制
  • 删除单个多版本对象 您可以通过ObsClient.deleteObject接口传入版本号(versionId)删除多版本对象。 本示例用于通过设置多版本对象的VersionId值,删除桶名为“bucketname”里,名称为“objectname”的对象。 代码示例如下所示: // 认证用的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 endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); obsClient.deleteObject("bucketname", "objectname", "versionid");
  • 查看生命周期规则 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.getBucketLifecycle查看桶的生命周期规则。 本示例用于查看桶名为“bucketname”的生命周期规则。 代码示例如下所示: // 认证用的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 endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); LifecycleConfiguration config = obsClient.getBucketLifecycle("bucketname"); for (LifecycleConfiguration.Rule rule : config.getRules()) { Log.i("GetBucketLifecycleConfiguration",rule.getId()); Log.i("GetBucketLifecycleConfiguration",rule.getPrefix()); for(LifecycleConfiguration.Transition transition : rule.getTransitions()){ Log.i("GetBucketLifecycleConfiguration",String.valueOf(transition.getDays())); Log.i("GetBucketLifecycleConfiguration",transition.getStorageClass()); } Log.i("GetBucketLifecycleConfiguration",rule.getExpiration() != null ? String.valueOf(rule.getExpiration().getDays()) : ""); for(LifecycleConfiguration.NoncurrentVersionTransition noncurrentVersionTransition : rule.getNoncurrentVersionTransitions()){ Log.i("GetBucketLifecycleConfiguration",String.valueOf(noncurrentVersionTransition.getDays())); Log.i("GetBucketLifecycleConfiguration",noncurrentVersionTransition.getStorageClass()); } Log.i("GetBucketLifecycleConfiguration",rule.getNoncurrentVersionExpiration() != null ?String.valueOf(rule.getNoncurrentVersionExpiration().getDays()) : ""); } 查看生命周期规则过程中返回的错误码含义、问题原因及处理措施可参考OBS服务端错误码。 父主题: 生命周期管理
  • 删除对象 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 本示例用于删除桶名为“bucketname”里,名称为“objectname”的对象。 代码示例如下所示: obsClient.deleteObject("bucketname", "objectname"); 本示例仅用于删除单个对象,OBS批量删除对象,需自行遍历构建待批量删除对象的列表。 更丰富的删除功能,请参见删除对象。 父主题: 快速入门
  • 跨域资源共享简介 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 跨域是指不同域名之间相互访问。跨域访问是浏览器出于安全考虑而设置的一个限制,即同源策略。 由于JavaScript同源策略的限制,A域名下的JavaScript无法操作B域名或C域名下的对象。 同协议、同域名(或IP)、以及同端口视为同一个域。两个页面的协议、域名和端口(如果指定了端口)相同,则视为同源。 跨域资源共享(CORS)允许Web端的应用程序访问不属于本域的资源。OBS提供接口方便开发者控制跨域访问的权限。 更多关于跨域资源共享的内容请参考跨域资源访问。 父主题: 跨域资源共享
  • 静态网站托管简介 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 静态网站通常仅包含静态网页,以及可能包含部分可在客户端运行的脚本,如JavaScript、Flash等。相比之下,动态网站则依赖于服务器端处理脚本,包括PHP、JSP或ASP.Net等。 您可以将静态网站文件上传至OBS的桶中作为对象,并对这些对象赋予公共读权限,然后将该桶配置成静态网站托管模式,以实现在OBS上托管静态网站的目的。 第三方用户在访问您网站的时候,实际上是在访问OBS的桶中的对象。 在使用静态网站托管功能时,OBS还支持配置请求重定向,通过重定向配置您可以将特定的请求或所有请求实施重定向。 更多关于静态网站托管的内容请参考静态网站托管。 父主题: 静态网站托管
  • 多版本控制简介 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 OBS支持保存一个对象的多个版本,您可以利用多版本控制,在一个桶中保留多个版本的对象。 多版本功能可以方便地检索和还原各个版本,在意外操作或应用程序故障时快速恢复数据。 在默认情况下,OBS中新创建的桶不会开启多版本功能,向同一个桶上传同名的对象时,新上传的对象将覆盖原有的对象。 更多关于多版本控制的内容请参见多版本控制。 父主题: 多版本控制
  • 查看托管配置 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.getBucketWebsite查看桶的托管配置。 本示例用于查看桶名为“bucketname”的托管配置。 代码示例如下所示: // 认证用的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 endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); WebsiteConfiguration config = obsClient.getBucketWebsite("bucketname"); Log.i("GetBucketWebsiteConfiguration", "\t" + config.getKey()); Log.i("GetBucketWebsiteConfiguration", "\t" + config.getSuffix()); for(RouteRule rule : config.getRouteRules()){ Log.i("GetBucketWebsiteConfiguration", "\t" + rule); } 查看桶托管配置过程中返回的错误码含义、问题原因及处理措施可参考OBS服务端错误码。 父主题: 静态网站托管
  • 删除跨域规则 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.deleteBucketCors删除桶的跨域规则。 本示例用于删除桶名为“bucketname”的跨域规则。 代码示例如下所示: // 认证用的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 endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); obsClient.deleteBucketCors("bucketname"); 删除跨域规则过程中返回的错误码含义、问题原因及处理措施可参考OBS服务端错误码。 父主题: 跨域资源共享
  • 关闭桶日志 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 关闭桶日志功能实际上就是调用ObsClient.setBucketLogging将日志配置清空。 本示例用于关闭桶名为“bucketname”的日志配置。 代码示例如下所示: // 认证用的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 endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); // 对桶设置空的日志配置 obsClient.setBucketLogging("bucketname", new BucketLoggingConfiguration()); 关闭桶日志过程中返回的错误码含义、问题原因及处理措施可参考OBS服务端错误码。 父主题: 设置访问日志
  • 删除生命周期规则 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.deleteBucketLifecycle删除桶的生命周期规则。 本示例用于删除桶名为“bucketname”的生命周期规则。 代码示例如下所示: // 认证用的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 endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); obsClient.deleteBucketLifecycle("bucketname"); 删除生命周期规则过程中返回的错误码含义、问题原因及处理措施可参考OBS服务端错误码。 父主题: 生命周期管理
  • 日志简介 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 OBS允许您对桶设置访问日志记录,设置之后对于桶的访问会被记录成日志,日志存储在OBS上您指定的目标桶中。 出于分析或审计等目的,用户可以开启日志记录功能。通过访问日志记录,桶的拥有者可以深入分析访问该桶的用户请求性质、类型或趋势。 当用户开启一个桶的日志记录功能后,OBS会自动对这个桶的访问请求记录日志,并生成日志文件写入用户指定的桶(即目标桶)中。 日志文件存放位置需要在开启桶日志功能时指定,可以存放到您拥有的,且与开启日志功能的桶位于同一区域的任一存储桶,当然也包括开启日志功能的桶本身。 更多关于访问日志的内容请参考日志记录。 父主题: 设置访问日志
  • 获取下载进度 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过GetObjectRequest.setProgressInterval设置数据传输接口来获取下载的进度。 本示例用于下载桶名为“bucketname”里,名称为“objectname”的对象并通过ProgressInterval监控下载进度。 代码示例如下所示: // 认证用的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 endPoint = "https://your-endpoint"; // 创建ObsClient实例 final ObsClient obsClient = new ObsClient(ak, sk, endPoint); GetObjectRequest request = new GetObjectRequest("bucketname", "objectname"); request.setProgressListener(new ProgressListener() { @Override public void progressChanged(ProgressStatus status) { // 获取下载平均速率 Log.i("GetObject", "AverageSpeed:" + status.getAverageSpeed()); // 获取下载进度百分比 Log.i("GetObject", "TransferPercentage:" + status.getTransferPercentage()); } }); // 每上传1MB数据反馈下载进度 request.setProgressInterval(1024 * 1024L); ObsObject obsObject = obsClient.getObject(request); // 读取对象内容 System.out.println("Object content:"); InputStream input = obsObject.getObjectContent(); byte[] b = new byte[1024]; ByteArrayOutputStream bos = new ByteArrayOutputStream(); int len; while ((len=input.read(b)) != -1){ bos.write(b, 0, len); } System.out.println(new String(bos.toByteArray())); bos.close(); input.close(); 支持获取下载进度的接口包括:流式下载、范围下载和断点续传下载。 父主题: 下载对象
  • 获取多版本对象 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.getObject接口传入版本号(versionId)来获取多版本对象。 本示例用于下载桶名为“bucketname”里,名称为“objectname”,指定VersionId的对象。 代码示例如下所示: // 认证用的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 endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); // 设置versionId获取多版本对象 ObsObject obsObject = obsClient.getObject("bucketname", "objectname", "versionid"); obsObject.getObjectContent().close(); 如果版本号为空则默认下载最新版本的对象。 父主题: 多版本控制
  • 判断桶是否存在 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.headBucket接口判断该桶是否已存在。 本示例用于判断桶名为“bucketname”是否存在。 代码示例如下所示: // 认证用的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 endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); boolean exists = obsClient.headBucket("bucketname"); 如果抛出异常且HTTP状态码为404,表明桶不存在。 父主题: 管理桶
  • 签名不匹配异常 如果从ObsException中获取到HTTP状态码为403,OBS服务端错误码为SignatureDoesNotMatch。 此类错误一般有如下原因: 初始化ObsClient时传入的SK有误,请检查SK,确保正确。 旧版本OBS Android SDK的BUG,请升级SDK到最新版本。 初始化ObsClient时传入的endpoint有误,请检查endpoint,确保正确。 父主题: 异常处理
  • OBS客户端通用示例 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 使用OBS客户端进行接口调用操作完成后,没有异常抛出,则表明返回值有效,返回SDK公共响应头实例或其子类实例;如果抛出异常,则说明操作失败,此时应从SDK自定义异常实例中获取错误信息。 OBS客户端的通用方式用于上传本地“localfile”到桶名为“bucketname”里,名称为“objectname”。 代码示例如下所示: // 您的工程中可以只保留一个全局的ObsClient实例 // ObsClient是线程安全的,可在并发场景下使用 ObsClient obsClient = null; try { // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变 量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥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 endPoint = "https://your-endpoint"; // 创建ObsClient实例 obsClient = new ObsClient(ak, sk, endPoint); // 调用接口进行操作,例如上传对象,其中localfile为待上传的本地文件路径,需要指定到具体的文件名 HeaderResponse response = obsClient.putObject("bucketname", "objectname", new File("localfile")); Log.i("PutObject", response); } catch (ObsException e) { Log.e("PutObject", "Response Code: " + e.getResponseCode()); Log.e("PutObject", "Error Message: " + e.getErrorMessage()); Log.e("PutObject", "Error Code: " + e.getErrorCode()); Log.e("PutObject", "Request ID: " + e.getErrorRequestId()); Log.e("PutObject", "Host ID: " + e.getErrorHostId()); }finally{ // 关闭ObsClient实例,如果是全局ObsClient实例,可以不在每个方法调用完成后关闭 // ObsClient在调用ObsClient.close方法关闭后不能再次使用 if(obsClient != null){ try { obsClient.close(); } catch (IOException e) { } } } 父主题: 快速入门
  • 获取对象属性 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.getObjectMetadata来获取对象属性,包括对象长度,对象MIME类型,对象自定义元数据等信息。以下代码展示了如何获取对象属性: // 认证用的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 endPoint = "https://your-endpoint"; // 创建ObsClient实例 final ObsClient obsClient = new ObsClient(ak, sk, endPoint); ObjectMetadata metadata = obsClient.getObjectMetadata("bucketname", "objectname"); Log.i("GetObjectMetadata","\t" + metadata.getContentType()); Log.i("GetObjectMetadata","\t" + metadata.getContentLength()); // 获取用户自定义元数据 Log.i("GetObjectMetadata","\t" + metadata.getUserMetadata("property")); // 获取所有原始响应头域 Log.i("GetObjectMetadata","\t" + metadata.getOriginalHeaders()); 由于 HTTP 编码规范限制,无法发送非 ASCII 码字符,SDK 会在接收响应时使用 url 解码规则解码响应头中的信息。如您的元数据存储的 content-disposition 为“attachment; filename="%E4%B8%AD%E6%96%87.txt"”,则 SDK 获取结果为“attachment; filename="中文.txt"”。 如果不需要 SDK 帮您解码,可以调用 GetObjectMetadataRequest.setIsEncodeHeaders(false) 关闭自动解码。 您也可以通过 metadata.getOriginalHeaders 获取所有原始响应头的信息。 父主题: 管理对象
  • 清除托管配置 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.deleteBucketWebsite清除桶的托管配置。 本示例用于清除桶名为“bucketname”的托管配置。 代码示例如下所示: // 认证用的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 endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); obsClient.deleteBucketWebsite("bucketname"); 清除桶托管配置过程中返回的错误码含义、问题原因及处理措施可参考OBS服务端错误码。 父主题: 静态网站托管
  • 下载对象 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 本示例用于下载桶名为“bucketname”里,名称为“objectname”的对象。 代码示例如下所示: ObsObject obsObject = obsClient.getObject("bucketname", "objectname"); InputStream content = obsObject.getObjectContent(); if (content != null) { BufferedReader reader = new BufferedReader(new InputStreamReader(content)); while (true) { String line = reader.readLine(); if (line == null) break; Log.i("GetObject", "\n" + line); } reader.close(); } 调用ObsClient.getObject返回一个ObsObject实例,该实例包含对象内容及其属性。 调用ObsObject.getObjectContent获取对象输入流,可读取此输入流获取其内容,用完之后请关闭这个流。 更多下载对象的信息,请参见下载对象。 父主题: 快速入门
  • 复制多版本对象 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.copyObject接口传入版本号(versionId)来复制多版本对象。 本示例用于通过设置versionId复制sourcebucketname桶中sourceobjectname的多版本对象,复制到destbucketname桶中destobjectname。 代码示例如下所示: // 认证用的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 endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); CopyObjectRequest request = new CopyObjectRequest(); request.setSourceBucketName("sourebucketname"); request.setSourceObjectKey("sourceobjectname"); // 设置要复制对象的版本号 request.setVersionId("versionid"); request.setDestinationBucketName("destbucketname"); request.setDestinationObjectKey("destobjectname"); obsClient.copyObject(request); 复制多版本对象过程中返回的错误码含义、问题原因及处理措施可参考OBS服务端错误码。 父主题: 多版本控制
  • 获取桶区域位置 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.getBucketLocation获取桶的区域位置。 本示例用于获取桶名为“bucketname”的区域位置信息。 代码示例如下所示: // 认证用的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 endPoint = "https://your-endpoint"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); String location = obsClient.getBucketLocation("bucketname"); Log.i("GetBucketLocation", "\t:" + location); 创建桶时可以指定桶的区域位置,请参见创建桶。 父主题: 管理桶
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全