华为云用户手册

  • 时区配置异常 使用OBS PHP SDK进行二次开发时如果出现异常信息如“Uncaught exception 'Exception' with message 'DateTime::__construct():”,表明时区配置有误。可通过以下两种方式配置: 修改php.ini文件,在[Date]标签下新增date.timezone = xxx,例如:date.timezone = UTC。 在程序中调用date_default_timezone_set('xxx')直接设置。 父主题: 异常处理
  • SDK公共结果对象 调用ObsClient的相关接口完成后,没有异常抛出,则会返回结果SDK公共结果对象,表明操作成功。该对象包含的内容见下表: 字段名 类型 说明 HttpStatusCode integer HTTP状态码。 Reason string HTTP文本描述。 RequestId string OBS服务端返回的请求ID。 其他字段 请查阅《 对象存储服务 PHP SDK API参考》。 父主题: 异常处理
  • 日志内容格式 SDK日志格式为:日志时间|日志级别|打印日志所的代码行数|日志内容。示例如下: [2017-11-17 11:46:24][INFO][SendRequestTrait.php:376]: enter method createBucketAsync...[2017-11-17 11:46:24][INFO][SendRequestTrait.php:525]: http request cost 97 ms[2017-11-17 11:46:24][INFO][SendRequestTrait.php:538]: obsclient cost 155 ms to execute createBucketAsync
  • 日志级别 当系统出现问题需要定位且当前的日志无法满足要求时,可以通过修改日志的级别来获取更多的信息。SDK内部定义了四个integer类型的常量以对应不同的日志级别,其中DEBUG日志信息最丰富,ERROR日志信息最少。 具体说明如下: DEBUG(100):调试级别,如果设置为这个级别,将打印SDK记录的所有日志。 INFO(200):信息级别,如果设置为这个级别,除了打印WARN级别的信息外,还将打印HTTP/HTTPS请求的耗时时间等信息。 WARN(300):告警级别,如果设置为这个级别,除了打印ERROR级别的信息外,还将打印一些关键事件的信息。 ERROR(400):错误级别,如果设置为这个级别,仅打印发生异常时的错误信息。
  • 静态网站托管简介 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以将静态网站文件上传至OBS的桶中作为对象,并对这些对象赋予公共读权限,然后将该桶配置成静态网站托管模式,以实现在OBS上托管静态网站的目的。第三方用户在访问您网站的时候,实际上是在访问OBS的桶中的对象。在使用静态网站托管功能时,OBS还支持配置请求重定向,通过重定向配置您可以将特定的请求或所有请求实施重定向。 更多关于静态网站托管的内容请参考静态网站托管。 父主题: 静态网站托管
  • 生命周期管理简介 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 OBS允许您对桶设置生命周期规则,实现自动转换对象的存储类型、自动淘汰过期的对象,以有效利用存储特性,优化存储空间。针对不同前缀的对象,您可以同时设置多条规则。一条规则包含: 规则ID,用于标识一条规则,不能重复。 受影响的对象前缀,此规则只作用于符合前缀的对象。 最新版本对象的转换策略,指定方式为: 指定满足前缀的对象创建后第几天时转换为指定的存储类型。 直接指定满足前缀的对象转换为指定的存储类型的日期。 最新版本对象过期时间,指定方式为: 指定满足前缀的对象创建后第几天时过期。 直接指定满足前缀的对象过期日期。 历史版本对象转换策略,指定方式为: 指定满足前缀的对象成为历史版本后第几天时转换为指定的存储类型。 历史版本对象过期时间,指定方式为: 指定满足前缀的对象成为历史版本后第几天时过期。 是否生效标识。 更多关于生命周期的内容请参考生命周期管理。 对象过期后会被OBS服务端自动删除。 对象转换策略中的时间必须早于对象过期时间;历史版本对象转换策略中的时间也必须早于历史版本对象的过期时间。 桶的多版本状态必须处于Enabled或者Suspended,历史版本对象转换策略和历史版本对象过期时间配置才能生效。 父主题: 生命周期管理
  • 开发环境准备 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 从PHP官网下载并安装推荐使用的版本。 【可选】从Jetbrains官网下载并安装PhpStorm最新版本。 PHP安装完成后,需要指定php.ini文件中的扩展库路径参数(extension_dir),并开启cURL和OpenSSL扩展库。 父主题: 快速入门
  • 获取服务地址 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以从这里查看OBS当前开通的服务地址和区域信息。 SDK支持带协议名和不带协议名两种方式传入服务地址,例如获取到的服务地址为“your-endpoint”,则初始化OBS客户端时传入的服务地址可以为“http://your-endpoint”、“https://your-endpoint”和“your-endpoint”三种形式。 父主题: 快速入门
  • 示例程序 OBS Go SDK提供了丰富的示例程序,方便用户参考或直接使用。您可以从OBS Go SDK开发包中获取示例程序。您也可以从下面表格中直接下载示例程序。 示例包括以下内容: 示例代码 说明 BucketOperationsSample 展示了桶相关接口的用法 ObjectOperationsSample 展示了对象相关接口的用法 DownloadSample 展示了下载对象的用法 CreateFolderSample 展示了创建文件夹的用法 DeleteObjectsSample 展示了批量删除对象的用法 ListObjectsSample 展示了列举对象的用法 ListVersionsSample 展示了列举多版本对象的用法 ListObjectsInFolderSample 展示了列举文件夹内对象的用法 ObjectMetaSample 展示了自定义对象元数据的用法 SimpleMultipartUploadSample 展示了分段上传的基本用法 RestoreObjectSample 展示了下载归档存储对象的用法 ConcurrentCopyPartSample 展示了分段并发复制大对象的用法 ConcurrentDownloadObjectSample 展示了分段并发下载大对象的用法 ConcurrentUploadPartSample 展示了分段并发上传大对象的用法 PostObjectSample 展示了表单上传对象的用法 TemporarySignatureSample 展示了使用URL进行授权访问的用法
  • 引入依赖 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 要初始化OBS客户端(ObsClient)必须首先引入依赖,代码示例如下: // 引入依赖库require 'vendor/autoload.php';// 使用源码安装时引入SDK代码库// require 'obs-autoloader.php'; 父主题: 快速入门
  • 配置SDK日志 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 OBS .NET SDK基于Apache Log4net开源库提供了日志功能,您可以通过加入日志配置文件开启日志功能。具体步骤如下: 在工程中添加对开发包中的日志库文件log4net.dll的引用。 将开发包中的日志配置文件Log4Net.config拷贝至工程目录中bin目录下的Debug或者Release中,确保与工程可执行文件在同一个目录下。 根据实际情况修改Log4Net.config中的日志级别。 如果不引入日志库和日志配置文件,则视为关闭日志功能,不会有日志输出。 您可以从 日志分析 章节获取更多关于SDK日志的信息。 日志文件默认放在工程可执行文件路径下,可在Log4Net.config中进行修改。 父主题: 初始化
  • 配置OBS客户端 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 当使用配置类(ObsConfig)创建OBS客户端(ObsClient)时,您可通过ObsConfig配置类对ObsClient进行配置,可配置代理、连接超时、最大连接数等参数。通过ObsConfig可以设置的参数见下表: 参数 描述 建议值 Endpoint 连接OBS的服务地址。可包含协议类型、域名、端口号。示例:https://your-endpoint:443。(出于安全性考虑,建议使用https协议) N/A Timeout 同步调用的超时时间(单位:毫秒)。默认为-1表示不超时。 N/A ReadWriteTimeout Socket层传输数据的超时时间(单位:毫秒)。默认为60000毫秒。 [10000, 60000] AsyncSocketTimeout 异步调用的超时时间(单位:毫秒)。默认为-1表示不超时。 N/A MaxIdleTime 如果空闲时间超过此参数的设定值,则关闭连接(单位:毫秒)。默认为30000毫秒。 默认 ConnectionLimit 允许打开的最大HTTP连接数。默认为1000。 默认 MaxErrorRetry 请求失败(请求异常、服务端报500或503错误)后最大的重试次数。默认3次。 [1, 5] ReceiveBufferSize 套接字接收缓冲区的大小。默认为8192。 [8192, 65536] SecurityProtocolType 使用HTTPS时的加密协议类型。 N/A ProxyHost 代理服务器的主机地址。 N/A ProxyPort 代理服务器的端口号。 N/A ProxyUserName 连接代理服务器时使用的用户名。 N/A ProxyPassword 连接代理服务器时使用的用户密码。 N/A ProxyDomain 代理服务器的域。 N/A ValidateCertificate 是否验证服务端证书。默认为false。 N/A BufferSize 上传对象到Socket流时的读/写缓存大小(单位:字节)。默认为8192字节。 默认 KeepAlive 是否使用长连接访问OBS服务。默认为true。 N/A 建议值为N/A的表示需要根据实际情况进行设置。 如网络状况不佳,建议调整Timeout、AsyncSocketTimeout和ReadWriteTimeout的值。 如果设置的Endpoint不带协议类型,则默认使用HTTPS协议。 出于DNS解析性能和OBS服务可靠性的考虑,不允许将Endpoint设置为IP,必须使用域名访问OBS服务。 父主题: 初始化
  • 删除对象 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 以下代码展示如何删除指定的对象: DeleteObjectRequest request = new DeleteObjectRequest(){ BucketName = "bucketname", ObjectKey = "objectname",};client.DeleteObject(request); 父主题: 快速入门
  • 列举对象 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 当完成一系列上传对象操作后,可能需要查看桶中包含哪些对象。以下代码展示如何列举指定桶中的对象: ListObjectsRequest request = new ListObjectsRequest();request.BucketName = "bucketname";ListObjectsResponse response = client.ListObjects(request);foreach (ObsObject Object in response.ObsObjects){ Console.WriteLine("ObjectKey={0}, Size={1}", Object.ObjectKey, Object.Size);} 可通过ListObjectsResponse.ObsObjects获取所有对象(Object)的描述信息。 上面的代码默认列举1000个对象(Object)。 更丰富的列举功能,请参见列举对象。 父主题: 快速入门
  • 下载对象 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 以下代码展示如何获取对象的内容: GetObjectRequest request = new GetObjectRequest(){ BucketName = "bucketname", ObjectKey = "objectname",};using (GetObjectResponse response = client.GetObject(request)){ //保存到本地文件 string dest = "savepath"; if (!File.Exists(dest)) { response.WriteResponseStreamToFile(dest); }} 更多下载对象的信息,请参见下载对象。 父主题: 快速入门
  • 创建桶 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 桶是OBS全局命名空间,相当于数据的容器、文件系统的根目录,可以存储若干对象。以下代码展示如何新建一个桶: CreateBucketRequest request = new CreateBucketRequest();request.BucketName = "bucketname";client.CreateBucket(request); 桶的名字是全局唯一的,所以您需要确保不与已有的桶名称重复。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用类IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 更多创建桶的信息,请参见创建桶。 创建桶时,如果使用的终端节点归属于默认区域华北-北京一(cn-north-1),则可以不指定区域;如果使用的终端节点归属于其他区域,则必须指定区域,且指定的区域必须与终端节点归属的区域一致。当前有效的区域名称可从这里查询。 您可以使用带参数创建方式,在创建桶时,指定桶的区域位置。 父主题: 快速入门
  • 获取服务地址 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以从这里查看OBS当前开通的服务地址和区域信息。 SDK支持带协议名和不带协议名两种方式传入服务地址,例如获取到的服务地址为“your-endpoint”,则初始化OBS客户端时传入的服务地址可以为“http://your-endpoint”、“https://your-endpoint”和“your-endpoint”三种形式。 父主题: 快速入门
  • 上传对象 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 以下代码展示如何上传对象至OBS: PutObjectRequest request = new PutObjectRequest{ BucketName = "bucketname", ObjectKey = "objectname", InputStream = new MemoryStream(Encoding.UTF8.GetBytes("Hello OBS"))};client.PutObject(request); 更多上传对象的信息,请参见上传对象。 父主题: 快速入门
  • 示例程序 OBS .NET SDK提供了丰富的示例程序,方便用户参考或直接使用。您可以从OBS .NET SDK开发包的demo文件夹中获取示例程序。 示例包括以下内容: 示例代码 说明 BucketOperationsSample 展示了桶相关接口的用法 ObjectOperationsSample 展示了对象相关接口的用法 TemporarySignatureSample 展示了使用URL进行授权访问的用法
  • OBS服务环境搭建 注册云服务帐号 使用OBS之前必须要有一个云服务帐号。 打开浏览器。 登录公有云网站www.huaweicloud.com。 在页面右上角单击“注册”。 按需填写注册信息并单击“同意协议并注册”。 开通OBS服务 使用OBS服务之前必须先充值,才能正常使用OBS服务。 登录OBS管理控制台。 单击页面右上角的“费用”进入费用中心页面。 单击“充值”,系统自动跳转到充值窗口。 根据界面提示信息,对帐户进行充值。 充值成功后,关闭充值窗口,返回管理控制台首页。 单击“对象存储服务”,开通并进入OBS管理控制台。 创建访问密钥 OBS通过用户帐号中的AK和SK进行签名验证,确保通过授权的帐号才能访问指定的OBS资源。以下是对AK和SK的解释说明: AK:Access Key ID,接入键标识,用户在对象存储服务系统中的接入键标识,一个接入键标识唯一对应一个用户,一个用户可以同时拥有多个接入键标识。对象存储服务系统通过接入键标识识别访问系统的用户。 SK:Secret Access Key,安全接入键,用户在对象存储服务系统中的安全接入键,是用户访问对象存储服务系统的密钥,用户根据安全接入键和请求头域生成鉴权信息。安全接入键和接入键标识一一对应。 创建访问密钥的操作步骤如下: 登录OBS控制台。 单击页面右上角的用户名,并选择“我的凭证”。 在“我的凭证”页面,单击左侧导航栏的“访问密钥”。 在“访问密钥”页面,单击“新增访问密钥”。 在弹出的“新增访问密钥”对话框中,输入登录密码和对应验证码。 用户如果未绑定邮箱和手机,则只需输入登录密码。 用户如果同时绑定了邮箱和手机,可以选择其中一种方式进行验证。 单击“确定”。 在弹出的“下载确认”提示框中,单击“确定”后,密钥会直接保存到浏览器默认的下载文件夹中。 打开下载下来的“credentials.csv”文件既可获取到访问密钥(AK和SK)。 每个用户最多可创建两个有效的访问密钥。 为防止访问密钥泄露,建议您将其保存到安全的位置。如果用户在此提示框中单击“取消”,则不会下载密钥,后续也将无法重新下载。如果需要使用访问密钥,可以重新创建新的访问密钥。 父主题: 快速入门
  • SDK自定义异常 SDK自定义异常(ObsException)是由ObsClient统一抛出的异常。通常是OBS服务端错误,包含OBS错误码、错误信息等,便于用户定位问题,并做出适当的处理。 ObsException通常包含以下错误信息: ObsException.StatusCode:HTTP状态码。 ObsException.ErrorCode:OBS服务端错误码。 ObsException.ErrorMessage:OBS服务端错误描述。 ObsException.RequestId:OBS服务端返回的请求ID。 ObsException.HostId:请求的服务端ID。 父主题: 异常处理
  • 加密说明 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 OBS .NET SDK支持服务端加密的接口见下表: OBS .NET SDK接口方法 描述 支持加密类型 ObsClient.PutObject 上传对象时设置加密算法、密钥,对对象启用服务端加密。 SSE-KMS SSE-C ObsClient.GetObject 下载对象时设置解密算法、密钥,用于解密对象。 SSE-C ObsClient.CopyObject 复制对象时设置源对象的解密算法、密钥,用于解密源对象。 复制对象时设置目标对象的加密算法、密钥,对目标对象启用加密算法。 SSE-KMS SSE-C ObsClient.GetObjectMetadata 获取对象元数据时设置解密算法、密钥,用于解密对象。 SSE-C ObsClient.InitiateMultipartUpload 初始化分段上传任务时设置加密算法、密钥,对分段上传任务最终生成的对象启用服务端加密。 SSE-KMS SSE-C ObsClient.UploadPart 上传段时设置加密算法、密钥,对分段数据启用服务端加密。 SSE-C ObsClient.CopyPart 复制段时设置源对象的解密算法、密钥,用于解密源对象。 复制段时设置目标段的加密算法、密钥,对目标段启用加密算法。 SSE-C 父主题: 服务端加密
  • 静态网站托管简介 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以将静态网站文件上传至OBS的桶中作为对象,并对这些对象赋予公共读权限,然后将该桶配置成静态网站托管模式,以实现在OBS上托管静态网站的目的。第三方用户在访问您网站的时候,实际上是在访问OBS的桶中的对象。在使用静态网站托管功能时,OBS还支持配置请求重定向,通过重定向配置您可以将特定的请求或所有请求实施重定向。 更多关于静态网站托管的内容请参考静态网站托管。 父主题: 静态网站托管
  • 生命周期管理简介 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 OBS允许您对桶设置生命周期规则,实现自动转换对象的存储类型、自动淘汰过期的对象,以有效利用存储特性,优化存储空间。针对不同前缀的对象,您可以同时设置多条规则。一条规则包含: 规则ID,用于标识一条规则,不能重复。 受影响的对象前缀,此规则只作用于符合前缀的对象。 最新版本对象的转换策略,指定方式为: 指定满足前缀的对象创建后第几天时转换为指定的存储类型。 直接指定满足前缀的对象转换为指定的存储类型的日期。 最新版本对象过期时间,指定方式为: 指定满足前缀的对象创建后第几天时过期。 直接指定满足前缀的对象过期日期。 历史版本对象转换策略,指定方式为: 指定满足前缀的对象成为历史版本后第几天时转换为指定的存储类型。 历史版本对象过期时间,指定方式为: 指定满足前缀的对象成为历史版本后第几天时过期。 是否生效标识。 更多关于生命周期的内容请参考生命周期管理。 对象过期后会被OBS服务端自动删除。 对象转换策略中的时间必须早于对象过期时间;历史版本对象转换策略中的时间也必须早于历史版本对象的过期时间。 桶的多版本状态必须处于Enabled或者Suspended,历史版本对象转换策略和历史版本对象过期时间配置才能生效。 父主题: 生命周期管理
  • 如何获取临时AK/SK 临时AK/SK和SecurityToken是系统颁发给用户的临时访问令牌,通过接口设置有效期,范围为15分钟至24小时,过期后需要重新获取。临时AK/SK和SecurityToken遵循权限最小化原则。使用临时AK/SK鉴权时,临时AK/SK和SecurityToken必须同时使用。 获取临时访问密钥的接口请参考获取临时AK/SK和securitytoken。 使用临时访问密钥的方法请参考临时访问密钥创建OBS客户端代码。 父主题: 常见问题
  • OBS服务端错误码 在向OBS服务端发出请求后,如果遇到错误,会在响应中包含响应的错误码描述错误信息。详细的错误码及其对应的描述和HTTP状态码见下表: 错误码 描述 HTTP状态码 AccessDenied 拒绝访问。 403 Forbidden AccessForbidden 权限不足。 403 Forbidden AccountProblem 用户的帐号出现异常(过期、冻结等),不能成功地完成操作。 403 Forbidden AllAccessDisabled 用户无权限执行某操作。 403 Forbidden AmbiguousGrantByEmailAddress 用户提供的Email地址关联的帐号超过了1个。 400 Bad Request BadDigest 客户端指定的对象内容的MD5值与系统接收到的内容MD5值不一致。 400 Bad Request BadDomainName 域名不合法。 400 Bad Request| BadRequest 请求参数不合法。 400 Bad Request BucketAlreadyExists 请求的桶名已经存在。桶的命名空间是系统中所有用户共用的,选择一个不同的桶名再重试一次。 409 Conflict BucketAlreadyOwnedByYou 发起该请求的用户已经创建过了这个名字的桶,并拥有这个桶。 409 Conflict BucketNotEmpty 用户尝试删除的桶不为空。 409 Conflict CredentialsNotSupported 该请求不支持证书验证。 400 Bad Request CustomDomainAreadyExist 配置了已存在的域。 400 Bad Request CustomDomainNotExist 操作的域不存在。 400 Bad Request DeregisterUserId 用户已经注销。 403 Forbidden EntityTooSmall 用户试图上传的对象大小小于系统允许的最小大小。 400 Bad Request EntityTooLarge 用户试图上传的对象大小超过了系统允许的最大大小。 400 Bad Request FrozenUserId 用户被冻结。 403 Forbidden IllegalVersioningConfiguration Exception 请求中的版本配置无效。 400 Bad Request IllegalLocationConstraintException 配置了与所在Region不匹配的区域限制。 400 Bad Request InArrearOrInsufficientBalance 因为ACL而没有权限进行某种操作。 403 Forbidden IncompleteBody 请求体不完整。 400 Bad Request IncorrectNumberOfFilesInPost Request 每个POST请求都需要带一个上传的文件。 400 Bad Request InlineDataTooLarge Inline Data超过了允许的最大长度。 400 Bad Request nsufficientStorageSpace 存储空间不足。 403 Forbidden InternalError 系统遇到内部错误,请重试。 500 Internal Server Error InvalidAccessKeyId 系统记录中不存在客户提供的Access Key Id。 403 Forbidden InvalidAddressingHeader 用户必须指定匿名角色 N/A InvalidArgument 无效的参数。 400 Bad Request InvalidBucketName 请求中指定的桶名无效。 400 Bad Request InvalidBucket 请求访问的桶已不存在。 400 Bad Request InvalidBucketState 无效的桶状态。 409 Conflict InvalidBucketStoragePolicy 修改桶策略时,提供的新策略不合法。 400 Bad Request InvalidDigest HTTP头中指定的Content-MD5值无效。 400 Bad Request InvalidEncryptionAlgorithmError 错误的加密算法。 400 Bad Request InvalidLocationConstraint 创建桶时,指定的location不合法。 400 Bad Request InvalidPart 一个或多个指定的段无法找到。这些段可能没有上传,或者指定的entity tag与段的entity tag不一致。 400 Bad Request InvalidPartOrder 段列表的顺序不是升序,段列表必须按段号升序排列。 400 Bad Request InvalidPayer 所有对这个对象的访问已经无效了。 403 Forbidden InvalidPolicyDocument 表单中的内容与策略文档中指定的条件不一致。 400 Bad Request InvalidRange 请求的range不可获得。 416 Client Requested Range Not Satisfiable InvalidRedirectLocation 无效的重定向地址。 400 Bad Request InvalidRequest 无效请求。 400 Bad Request InvalidRequestBody POST请求体无效。 400 Bad Request InvalidSecurity 提供的安全证书无效。 403 Forbidden InvalidStorageClass 用户指定的Storage Class无效。 400 Bad Request InvalidTargetBucketForLogging delivery group对目标桶无ACL权限。 400 Bad Request InvalidURI 无法解析指定的URI。 400 Bad Request KeyTooLong 提供的Key过长。 400 Bad Request MalformedACLError 提供的XML格式错误,或者不符合我们要求的格式。 400 Bad Request MalformedError 请求中携带的XML格式不正确。 400 Bad Request MalformedLoggingStatus Logging的XML格式不正确。 400 Bad Request MalformedPolicy Bucket policy检查不通过。 400 Bad Request MalformedPOSTRequest POST请求的请求体不是结构化良好的多段或形式化数据。 400 Bad Request MalformedXML 当用户发送了一个配置项的错误格式的XML会出现这样的错误。错误消息是:“The XML you provided was not well-formed or did not validate against our published schema."。 400 Bad Request MaxMessageLengthExceeded 请求消息过长。 400 Bad Request MaxPostPreDataLengthExceeded Error 在上传文件前面的POST请求域过大。 400 Bad Request MetadataTooLarge 元数据消息头超过了允许的最大元数据大小。 400 Bad Request MethodNotAllowed 指定的方法不允许操作在请求的资源上。 对应返回的Message为:Specified method is not supported. 405 Method Not Allowed MissingContentLength 必须要提供HTTP消息头中的Content-Length字段。 411 Length Required MissingRegion 请求中缺少Region信息,且系统无默认Region。 400 Bad Request MissingRequestBodyError 当用户发送一个空的XML文档作为请求时会发生。错误消息是:“Request body is empty.”。 400 Bad Request MissingRequiredHeader 请求中缺少必要的头域。 400 Bad Request MissingSecurityHeader 请求缺少一个必须的头。 400 Bad Request NoSuchBucket 指定的桶不存在。 404 Not Found NoSuchBucketPolicy 桶policy不存在。 404 Not Found NoSuchCORSConfiguration CORS配置不存在。 Not Found NoSuchCustomDomain 请求的用户域不存在。 404 Not Found NoSuchKey 指定的Key不存在。 404 Not Found NoSuchLifecycleConfiguration 请求的LifeCycle不存在。 404 Not Found NoSuchPolicy 给定的policy名字不存在。 404 Not Found NoSuchUpload 指定的多段上传不存在。Upload ID不存在,或者多段上传已经终止或完成。 404 Not Found NoSuchVersion 请求中指定的version ID与现存的所有版本都不匹配。 404 Not Found NoSuchWebsiteConfiguration 请求的Website不存在。 404 Not Found NotImplemented 用户提供的消息头功能上还没有实现。 501 Not Implemented NotSignedUp 帐号未在系统中注册,必须先在系统中注册了才能使用该帐号。 403 Forbidden OperationAborted 另外一个冲突的操作当前正作用在这个资源上,请重试。 409 Conflict PermanentRedirect 尝试访问的桶必须使用指定的结点,请将以后的请求发送到这个结点。 301 Moved Permanently PreconditionFailed 用户指定的先决条件中至少有一项没有包含。 412 Precondition Failed Redirect 临时重定向。 307 Moved Temporarily RequestIsNotMultiPartContent 桶POST必须是闭式的多段/表单数据。 400 Bad Request RequestTimeTooSkewed 请求的时间与服务器的时间相差太大。 403 Forbidden RequestTorrentOfBucketError 不允许请求桶的torrent文件。 400 Bad Request ServiceNotImplemented 请求的方法服务端没有实现。 501 Not Implemented ServiceNotSupported 请求的方法服务端不支持。 409 Conflict ServiceUnavailable 服务器过载或者内部错误异常。 503 Service Unavailable SignatureDoesNotMatch 请求中带的签名与系统计算得到的签名不一致。检查您的访问密钥(AK和SK)和签名计算方法。 403 Forbidden SlowDown 请降低请求频率。 503 Service Unavailable System Capacity Not enough 系统空间不足异常。 403 Forbidden TooManyCustomDomains 配置了过多的用户域。 400 Bad Request TemporaryRedirect 当DNS更新时,请求将被重定向到桶。 307 Moved Temporarily TooManyBuckets 用户拥有的桶的数量达到了系统的上限,并且请求试图创建一个新桶。 400 Bad Request TooManyObjectCopied 用户单个对象被拷贝的数量超过系统上限。 400 Bad Request TooManyWrongSignature 因高频错误请求被拒绝服务。 400 Bad Request UnexpectedContent 该请求不支持带内容字段。 400 Bad Request UnresolvableGrantByEmailAddress 用户提供的Email与记录中任何帐号的都不匹配。 400 Bad Request UserKeyMustBeSpecified 请求中缺少用户的AK信息。 400 Bad Request WebsiteRedirect Website请求缺少bucketName。 301 Moved Permanently KMS.DisabledException SSE-KMS加密方式下,主密钥被禁用。 400 Bad Request KMS.NotFoundException SSE-KMS加密方式下,主密钥不存在。 400 Bad Request RestoreAlreadyInProgress 对象正在恢复,请求冲突。 409 Conflict ObjectHasAlreadyRestored 已经恢复的对象,禁止缩短恢复保存时间。 409 Conflict InvalidObjectState 恢复对象不是归档存储对象。 403 Forbidden InvalidTagError 配置桶标签时,提供了无效的Tag。 400 Bad Request NoSuchTagSet 指定的桶没有设置标签。 404 Not Found 父主题: 异常处理
  • 列举对象 当完成一系列上传对象操作后,可能需要查看桶中包含哪些对象。以下代码展示如何列举指定桶中的对象: OBSListObjectsRequest *request = [[OBSListObjectsRequest alloc] initWithBucketName:@"bucketname"];request.maxKeys = [NSNumber numberWithInt:10];request.origin = @"www.example1.com";[client listObjects:request completionHandler:^(OBSListObjectsResponse *response, NSError *error) { NSLog(@"%d",response.contentsList.count);}]; 调用listObjects返回OBSListObjectsResponse实例,该实例包含此次listObject请求的返回结果。 上面的代码默认列举1000个对象(Object)。 更丰富的列举功能,请参见列举对象。 父主题: 快速入门
  • 配置OBS客户端 您可通过OBSServiceConfiguration配置类对OBSClient进行配置,可配置代理、连接超时、最大连接数等参数。通过OBSServiceConfiguration可以设置的参数见下表: 表1 OBS网络请求配置表 参数 描述 建议值 OBSServiceConfiguration.credentialProvider 用户凭证,参见表2 OBS服务身份验证配置表。 N/A OBSServiceConfiguration.proxyConfig 代理配置,默认为空,参见表3 代理服务配置表。 N/A OBSServiceConfiguration.trustUnsafeCert 是否信任不安全证书,默认为“NO”。 默认 OBSServiceConfiguration.maxConcurrentCommandRequestCount 允许的最大的命令请求并发数,默认为3。 默认 OBSServiceConfiguration.maxConcurrentUploadRequestCount 允许的最大的上传请求并发数,默认为3。 默认 OBSServiceConfiguration.maxConcurrentDownloadRequestCount 允许的最大的下载请求并发数,默认为3。 默认 OBSServiceConfiguration.defaultDomainMode 指定域名访问模式的参数,可设置为OBSDomainModeCustom以使用自定义域名, 默认为非自定义域名访问模式。 默认 OBSServiceConfiguration.commandSessionConfiguration.HTTPMaximumConnectionsPerHost 允许打开的最大的命令请求连接数, ios系统中默认为4。 N/A OBSServiceConfiguration.uploadSessionConfiguration.HTTPMaximumConnectionsPerHost 允许打开的最大的上传请求连接数, ios系统中默认为4。 N/A OBSServiceConfiguration.downloadSessionConfiguration.HTTPMaximumConnectionsPerHost 允许打开的最大的下载请求连接数, ios系统中默认为4。 N/A OBSServiceConfiguration.backgroundUploadSessionConfiguration.HTTPMaximumConnectionsPerHost 允许打开的最大的后台上传请求连接数, ios系统中默认为4。 N/A OBSServiceConfiguration.backgroundDownloadSessionConfiguration.HTTPMaximumConnectionsPerHost 允许打开的最大的后台下载请求连接数, ios系统中默认为4。 N/A OBSServiceConfiguration.commandSessionConfiguration.timeoutIntervalForRequest 配置命令请求的超时时间;(单位秒) 60 OBSServiceConfiguration.uploadSessionConfiguration.timeoutIntervalForRequest 配置上传相关请求的超时时间;(单位秒) 60 OBSServiceConfiguration.downloadSessionConfiguration.timeoutIntervalForRequest 配置下载相关请求的超时时间;(单位秒) 60 建议值为N/A的表示需要根据实际情况进行设置。出于安全性考虑,endpoint建议使用https协议。 OBSStaticCredentialProvider可以设置的参数见下表: 表2 OBS服务身份验证配置表 参数 描述 方法 accessKey 用户的 Access Key。 credentialProvider.Access Key = @"Provide your Access Key" secretKey 用户的Secret Key。 credentialProvider.Secret Key = @"Provide your Secret Key" securityToken 临时Token credentialProvider.securityToken = token credentialProvider是OBSStaticCredentialProvider的实例对象。 securityToken获取方式参见OBS服务环境搭建。 OBSHTTPProxyConfiguration可以设置的参数见下表: 表3 代理服务配置表 参数 描述 方法 proxyType 网络访问的类型(枚举类型)。 只允许HTTP: proxyConfig.proxyType=OBSHTTPRroxyTypeHTTP 只允许HTTPS: proxyConfig.proxyType=OBSHTTPRroxyTypeHTTPS 允许HTTP和HTTPS: proxyConfig.proxyType=OBSHTTPRroxyTypeHTTPAndHTTPS proxyHost 代理服务器的主机地址。 proxyConfig.proxyHost = @"host" proxyPort 代理服务器的端口号。 proxyConfig.proxyPort = @"port" username 连接代理服务器时使用的用户名。 proxyConfig.username = @"username" password 连接代理服务器时使用的用户密码。 proxyConfig.password = @"password" proxyConfig是OBSHTTPProxyConfiguration实例对象。 父主题: 初始化
  • 删除对象 以下代码展示如何删除指定的对象: OBSDeleteObjectRequest *request = [[OBSDeleteObjectRequest alloc] initWithBucketName:@"bucketname" objectKey:@"objectname"];[client deleteObject:request completionHandler:^(OBSDeleteObjectResponse *response, NSError *error) { NSLog(@"%@",response);}]; 父主题: 快速入门
  • 下载对象 以下代码展示如何获取对象的内容: NSString * outfilePath = [NSTemporaryDirectory() stringByAppendingString:@"filename"];OBSGetObjectToFileRequest *request = [[OBSGetObjectToFileRequest alloc]initWithBucketName:@"bucketname" objectKey:@"objectname" downloadFilePath:outfilePath];// 下载进度request.downloadProgressBlock = ^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) { NSLog(@"%0.1f%%",(float)floor(totalBytesWritten*10000/totalBytesExpectedToWrite)/100);};[client getObject:request completionHandler:^(OBSGetObjectResponse *response, NSError *error){ NSLog(@"%@",response.etag);}]; 调用getObject返回一个OBSObject实例,该实例包含对象内容及其属性。 更多下载对象的信息,请参见下载对象。 父主题: 快速入门
共100000条