华为云用户手册

  • 代码示例 本示例用于创建名为examplebucket的并行文件系统,并设置所在区域在华北-北京四(cn-north-4),桶的权限访问控制策略是私有桶,多AZ方式存储。 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 package main import ( "fmt" "os" obs "github.com/huaweicloud/huaweicloud-sdk-go-obs/obs" ) func main() { //推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险。 //您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html。 ak := os.Getenv("AccessKeyID") sk := os.Getenv("SecretAccessKey") // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。 // securityToken := os.Getenv("SecurityToken") // endpoint填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写。 endPoint := "https://obs.cn-north-4.myhuaweicloud.com" // 创建obsClient实例 // 如果使用临时AKSK和SecurityToken访问OBS,需要在创建实例时通过obs.WithSecurityToken方法指定securityToken值。 obsClient, err := obs.New(ak, sk, endPoint/*, obs.WithSecurityToken(securityToken)*/) if err != nil { fmt.Printf("Create obsClient error, errMsg: %s", err.Error()) } input := &obs.CreateBucketInput{} // 指定存储桶名称 input.Bucket = "examplebucket" // 指定存储桶所在区域,此处以“cn-north-4”为例,必须跟传入的Endpoint中Region保持一致。 input.Location = "cn-north-4" // 指定存储桶的权限控制策略,此处以obs.AclPrivate为例。 input.ACL = obs.AclPrivate // 指定存储桶的AZ类型,此处以“3AZ”为例。不携带时默认为单AZ,如果对应region不支持多AZ存储,则该桶的存储类型仍为单AZ。 input.AvailableZone = "3az" // 指定桶的类型为并行文件系统 input.IsFSFileInterface = true // 创建桶 output, err := obsClient.CreateBucket(input) if err == nil { fmt.Printf("Create bucket:%s successful!\n", input.Bucket) fmt.Printf("RequestId:%s\n", output.RequestId) return } fmt.Printf("Create bucket:%s fail!\n", input.Bucket) if obsError, ok := err.(obs.ObsError); ok { fmt.Println("An ObsError was found, which means your request sent to OBS was rejected with an error response.") fmt.Println(obsError.Error()) } else { fmt.Println("An Exception was found, which means the client encountered an internal problem when attempting to communicate with OBS, for example, the client was unable to access the network.") fmt.Println(err) } }
  • 返回结果说明 表5 返回结果列表 参数名称 参数类型 描述 output *BaseModel 参数解释: 接口返回信息,详见BaseModel。 err error 参数解释: 接口返回错误信息。 表6 BaseModel 参数名称 参数类型 描述 StatusCode int 参数解释: HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 默认取值: 无 RequestId string 参数解释: OBS服务端返回的请求ID。 默认取值: 无 ResponseHeaders map[string][]string 参数解释: HTTP响应头信息。 默认取值: 无
  • 接口约束 您必须拥有obs:bucket:CreateBucket权限,才能创建并行文件系统。建议使用 IAM 进行授权,配置方式详见使用IAM自定义策略。 OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。 创建并行文件系统时,如果初始化客户端使用的终端节点(endPoint)为“obs.myhuaweicloud.com”,则可以不指定并行文件系统所在区域(location),系统会自动在华北-北京一(cn-north-1)创建并行文件系统;如果初始化客户端使用的终端节点(endPoint)不是obs.myhuaweicloud.com,则必须指定并行文件系统所在区域(location),且指定的区域必须与终端节点(endPoint)区域一致,否则会返回状态码400。 比如初始化时使用的终端节点endPoint是obs.cn-north-4. myhuaweicloud.com,那么在创建并行文件系统的时候必须指定Location:cn-north-4 才会创建成功,否则会返回状态码400。 同一账号下,可以创建多个并行文件系统,数量上限是100个(不区分地域),并行文件系统中的对象数量和大小没有限制。 新创建并行文件系统的并行文件系统名在OBS中必须是唯一的。如果是同一个用户重复创建同一区域的同名并行文件系统时返回HTTP状态码200。除此以外的其他场景重复创建同名并行文件系统返回HTTP状态码409,表明并行文件系统已存在。 用户删除并行文件系统后,需要等待30分钟才能创建同名并行文件系统。 并不是所有区域都支持创建多AZ并行文件系统,您可以在产品价格详情页面,查询指定区域是否支持多AZ。
  • 代码示例 本示例用于创建名为examplebucket的桶,并设置所在区域在华北-北京四(cn-north-4),桶的权限访问控制策略是私有桶,存储类型是低频访问存储,多AZ方式存储。 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 package main import ( "fmt" "os" obs "github.com/huaweicloud/huaweicloud-sdk-go-obs/obs" ) func main() { //推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险。 //您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html。 ak := os.Getenv("AccessKeyID") sk := os.Getenv("SecretAccessKey") // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。 // securityToken := os.Getenv("SecurityToken") // endpoint填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写。 endPoint := "https://obs.cn-north-4.myhuaweicloud.com" // 创建obsClient实例 // 如果使用临时AKSK和SecurityToken访问OBS,需要在创建实例时通过obs.WithSecurityToken方法指定securityToken值。 obsClient, err := obs.New(ak, sk, endPoint/*, obs.WithSecurityToken(securityToken)*/) if err != nil { fmt.Printf("Create obsClient error, errMsg: %s", err.Error()) } input := &obs.CreateBucketInput{} // 指定存储桶名称 input.Bucket = "examplebucket" // 指定存储桶所在区域,此处以“cn-north-4”为例,必须跟传入的Endpoint中Region保持一致。 input.Location = "cn-north-4" // 指定存储桶的权限控制策略,此处以obs.AclPrivate为例。 input.ACL = obs.AclPrivate // 指定存储桶的存储类型,此处以obs.StorageClassWarm为例。如果未指定该参数,则创建的桶为标准存储类型。 input.StorageClass = obs.StorageClassWarm // 指定存储桶的AZ类型,此处以“3AZ”为例。不携带时默认为单AZ,如果对应region不支持多AZ存储,则该桶的存储类型仍为单AZ。 input.AvailableZone = "3az" // 创建桶 output, err := obsClient.CreateBucket(input) if err == nil { fmt.Printf("Create bucket:%s successful!\n", input.Bucket) fmt.Printf("RequestId:%s\n", output.RequestId) return } fmt.Printf("Create bucket:%s fail!\n", input.Bucket) if obsError, ok := err.(obs.ObsError); ok { fmt.Println("An ObsError was found, which means your request sent to OBS was rejected with an error response.") fmt.Println(obsError.Error()) } else { fmt.Println("An Exception was found, which means the client encountered an internal problem when attempting to communicate with OBS, for example, the client was unable to access the network.") fmt.Println(err) } }
  • 接口约束 您必须拥有obs:bucket:CreateBucket权限,才能创建桶。建议使用IAM进行授权,配置方式详见使用IAM自定义策略。 OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。 创建桶时,如果初始化客户端使用的终端节点(endPoint)为“obs.myhuaweicloud.com”,则可以不指定桶所在区域(location),系统会自动在华北-北京一(cn-north-1)创建桶;如果初始化客户端使用的终端节点(endPoint)不是obs.myhuaweicloud.com,则必须指定桶所在区域(location),且指定的区域必须与终端节点(endPoint)区域一致,否则会返回状态码400。 比如初始化时使用的终端节点endPoint是obs.cn-north-4. myhuaweicloud.com,那么在创建桶的时候必须指定Location:cn-north-4 才会创建成功,否则会返回状态码400。 同一账号下,可以创建多个存桶,数量上限是100个(不区分地域),存储桶中的对象数量和大小没有限制。 新创建桶的桶名在OBS中必须是唯一的。如果是同一个用户重复创建同一区域的同名桶时返回HTTP状态码200。除此以外的其他场景重复创建同名桶返回HTTP状态码409,表明桶已存在。 用户删除桶后,需要等待30分钟才能创建同名桶和并行文件系统。 并不是所有区域都支持创建多AZ桶,您可以在产品价格详情页面,查询指定区域是否支持多AZ。
  • 返回结果说明 表5 返回结果列表 参数名称 参数类型 描述 output *BaseModel 参数解释: 接口返回信息,详见BaseModel。 err error 参数解释: 接口返回错误信息。 表6 BaseModel 参数名称 参数类型 描述 StatusCode int 参数解释: HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 默认取值: 无 RequestId string 参数解释: OBS服务端返回的请求ID。 默认取值: 无 ResponseHeaders map[string][]string 参数解释: HTTP响应头信息。 默认取值: 无
  • 支持接口 OBS Go SDK支持服务端加密的接口见下表: OBS Go SDK接口方法 描述 支持加密类型 ObsClient.PutObject 上传对象时设置加密算法、密钥,对对象启用服务端加密。 SSE-KMS SSE-C ObsClient.PutFile 上传文件时设置加密算法、密钥,对对象启用服务端加密。 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
  • 功能说明 用户可以使用普通方式上传、下载对象,也可以使用服务端加密方式进行上传、下载对象。 OBS支持服务端加密功能,使加密的行为在服务端进行。 用户可以根据自身的需求,使用不同的密钥管理方式来使用服务端加密功能。当前支持两种服务端加密方式: KMS托管密钥的服务端加密(SSE-KMS)和客户提供加密密钥的服务端加密(SSE-C)。上述两种方式都采用行业标准的AES256加密算法。 SSE-KMS方式,OBS使用KMS(Key Management Service)服务提供的密钥进行服务端加密。 SSE-C方式,OBS使用用户提供的密钥和密钥的MD5值进行服务端加密。 使用服务端加密,返回的ETag值不是对象的MD5值。无论是否使用服务端加密上传对象,请求消息头中加入Content-MD5参数时,OBS均会对对象进行MD5校验。
  • 如何解决 Declaration of xxxx must be compatible with xxxx? 如果遇到这种报错,基本上都是版本不兼容导致的,因为社区开源软件依赖会不定期更新。比如遇到以下报错: Declaration of Obs\Internal\Common\CheckoutStream::read($length) must be compatible with Psr\Http\Message\StreamInterface::read(int $length) 从报错得知,CheckoutStream::read($length) 缺少int类型声明,很大可能就是psr/http-message版本太高(可以从composer.lock找到准确的版本号),另外查看Github社区发现psr/http-message 1.1版本升级到2.0 增加了类型声明,最后降低psr/http-message 版本为1.1解决问题。 父主题: 常见问题
  • 时区配置异常 使用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内部定义了四个integer类型的常量以对应不同的日志级别,其中DEBUG日志信息最丰富,ERROR日志信息最少。 具体说明如下: DEBUG(100):调试级别,如果设置为这个级别,将打印SDK记录的所有日志。 INFO(200):信息级别,如果设置为这个级别,除了打印WARN级别的信息外,还将打印HTTP/HTTPS请求的耗时时间等信息。 WARN(300):告警级别,如果设置为这个级别,除了打印ERROR级别的信息外,还将打印一些关键事件的信息。 ERROR(400):错误级别,如果设置为这个级别,仅打印发生异常时的错误信息。
  • 日志内容格式 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公共结果对象 调用ObsClient的相关接口完成后,没有异常抛出,则会返回结果SDK公共结果对象,表明操作成功。该对象包含的内容见下表: 字段名 类型 说明 HttpStatusCode integer HTTP状态码。 Reason string HTTP文本描述。 RequestId string OBS服务端返回的请求ID。 其他字段 请查阅《 对象存储服务 PHP SDK API参考》。 父主题: 异常处理
  • 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 InsufficientStorageSpace 存储空间不足。 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 MalformedQuotaError Quota的XML格式不正确。 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 指定的方法不允许操作在请求的资源上。 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配置不存在。 404 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 RequestTimeout 用户与Server之间的socket连接在超时时间内没有进行读写操作。 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 父主题: 异常处理
  • 功能介绍 用户可以通过本接口删除对象(Object)的标签信息。 如果请求中不携带版本号(versionId),需要确保执行者有DeleteObjectTagging权限。如果请求中携带版本号(versionId),需要确保执行者有DeleteObjectTagging+DeleteObjectVersionTagging权限。缺省情况下只有对象的所有者可以执行此操作,也可以通过设置桶策略或用户策略给其他用户。 默认删除Object当前版本的标签信息。可以通过指定versionId参数来删除指定Object版本的标签信息。如果对应版本为删除标记(Delete Marker),则OBS将返回404 Not Found。 文件桶不支持该功能
  • 功能介绍 用户可以通过本接口获取对象(Object)的标签信息。 如果请求中不携带版本号(versionId),需要确保执行者有GetObjectTagging权限。如果请求中携带版本号(versionId),需要确保执行者有GetObjectTagging+GetObjectVersionTagging权限。缺省情况下只有对象的所有者可以执行此操作,也可以通过设置桶策略或用户策略给其他用户。 默认获取Object当前版本的标签信息。可以通过指定versionId参数来获取指定Object版本的标签信息。如果对应版本为删除标记(Delete Marker),则OBS将返回404 Not Found。 文件桶不支持该功能。
  • 静态网站托管简介 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 静态网站通常仅包含静态网页,以及可能包含部分可在客户端运行的脚本,如JavaScript、Flash等。相比之下,动态网站则依赖于服务器端处理脚本,包括PHP、JSP或ASP.Net等。 您可以将静态网站文件上传至OBS的桶中作为对象,并对这些对象赋予公共读权限,然后将该桶配置成静态网站托管模式,以实现在OBS上托管静态网站的目的。 第三方用户在访问您网站的时候,实际上是在访问OBS的桶中的对象。 在使用静态网站托管功能时,OBS还支持配置请求重定向,通过重定向配置您可以将特定的请求或所有请求实施重定向。 更多关于静态网站托管的内容请参考静态网站托管。 父主题: 静态网站托管
  • 日志简介 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 OBS允许您对桶设置访问日志记录,设置之后对于桶的访问会被记录成日志,日志存储在OBS上您指定的目标桶中。 出于分析或审计等目的,用户可以开启日志记录功能。通过访问日志记录,桶的拥有者可以深入分析访问该桶的用户请求性质、类型或趋势。 当用户开启一个桶的日志记录功能后,OBS会自动对这个桶的访问请求记录日志,并生成日志文件写入用户指定的桶(即目标桶)中。 日志文件存放位置需要在开启桶日志功能时指定,可以存放到您拥有的,且与开启日志功能的桶位于同一区域的任一存储桶,当然也包括开启日志功能的桶本身。 更多关于访问日志的内容请参考日志记录。 父主题: 设置访问日志
  • 跨域资源共享简介 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 跨域是指不同域名之间相互访问。跨域访问是浏览器出于安全考虑而设置的一个限制,即同源策略。 由于JavaScript同源策略的限制,A域名下的JavaScript无法操作B域名或C域名下的对象。 同协议、同域名(或IP)、以及同端口视为同一个域。两个页面的协议、域名和端口(如果指定了端口)相同,则视为同源。 跨域资源共享(CORS)允许Web端的应用程序访问不属于本域的资源。OBS提供接口方便开发者控制跨域访问的权限。 更多关于跨域资源共享的内容请参考跨域资源访问。 父主题: 跨域资源共享
  • 生命周期管理简介 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 OBS允许您对桶设置生命周期规则,实现自动转换对象的存储类型、自动淘汰过期的对象,以有效利用存储特性,优化存储空间。针对不同前缀的对象,您可以同时设置多条规则。一条规则包含: 规则ID,用于标识一条规则,不能重复。 受影响的对象前缀,此规则只作用于符合前缀的对象。 最新版本对象的转换策略,指定方式为: 指定满足前缀的对象创建后第几天时转换为指定的存储类型。 直接指定满足前缀的对象转换为指定的存储类型的日期。 最新版本对象过期时间,指定方式为: 指定满足前缀的对象创建后第几天时过期。 直接指定满足前缀的对象过期日期。 历史版本对象转换策略,指定方式为: 指定满足前缀的对象成为历史版本后第几天时转换为指定的存储类型。 历史版本对象过期时间,指定方式为: 指定满足前缀的对象成为历史版本后第几天时过期。 是否生效标识。 更多关于生命周期的内容请参考生命周期管理。 对象过期后会被OBS服务端自动删除。 对象转换策略中的时间必须早于对象过期时间;历史版本对象转换策略中的时间也必须早于历史版本对象的过期时间。 桶的多版本状态必须处于Enabled或者Suspended,历史版本对象转换策略和历史版本对象过期时间配置才能生效。 父主题: 生命周期管理
  • 多版本控制简介 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 OBS支持保存一个对象的多个版本,您可以利用多版本控制,在一个桶中保留多个版本的对象。 多版本功能可以方便地检索和还原各个版本,在意外操作或应用程序故障时快速恢复数据。 在默认情况下,OBS中新创建的桶不会开启多版本功能,向同一个桶上传同名的对象时,新上传的对象将覆盖原有的对象。 更多关于多版本控制的内容请参见多版本控制。 父主题: 多版本控制
  • 限定条件复制 复制对象时,可以指定一个或多个限定条件,满足限定条件时则进行复制,否则抛出异常,复制对象失败。 您可以使用的限定条件如下: 参数 作用 格式 CopySourceIfModifiedSince 如果源对象在指定的时间后有修改,则进行复制,否则抛出异常。 符合http://www.ietf.org/rfc/rfc2616.txt规定格式的HTTP时间字符串。 CopySourceIfUnmodifiedSince 如果源对象在指定的时间后没有修改,则进行复制,否则抛出异常。 符合http://www.ietf.org/rfc/rfc2616.txt规定格式的HTTP时间字符串。 CopySourceIfMatch 如果源对象的ETag值与该参数值相同,则进行复制,否则抛出异常。 字符串。 CopySourceIfNoneMatch 如果源对象的ETag值与该参数值不相同,则进行复制,否则抛出异常。 字符串。
  • 对象上传简介 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 在OBS中,用户操作的基本数据单元是对象。OBS PHP SDK提供了丰富的对象上传接口,可以通过以下方式上传对象: 文本上传 流式上传 文件上传 分段上传 基于表单上传 SDK支持上传0KB~5GB的对象。流式上传和文件上传的内容大小不能超过5GB;当上传较大文件时,请使用分段上传,分段上传每段内容大小不能超过5GB;基于表单上传提供了基于浏览器表单上传对象的方式。 如果上传的对象权限设置为匿名用户读取权限,对象上传成功后,匿名用户可通过链接地址访问该对象数据。对象链接地址格式为:https://桶名.域名/文件夹目录层级/对象名。如果该对象存在于桶的根目录下,则链接地址将不需要有文件夹目录层级。 父主题: 上传对象
  • 配置密钥 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 要接入OBS服务,您需要拥有一组有效的访问密钥(AK和SK)用来进行签名认证。 具体可参考OBS服务环境搭建。 获取AK和SK之后,您便可以按照以下步骤进行初始化。 创建OBS客户端 配置OBS客户端 配置SDK日志 异步调用 父主题: 初始化
  • 获取服务地址 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 终端节点(endpoint):OBS为每个区域提供一个终端节点,终端节点可以理解为OBS在不同区域的区域域名,用于处理各自区域的访问请求。 访问域名:OBS会为每一个桶分配默认的访问域名。访问域名是桶在互联网中的域名地址,可应用于直接通过域名访问桶的场景,比如:云应用开发、数据分享等。OBS桶访问域名的结构为:BucketName.Endpoint。其中BucketName为桶名称,Endpoint为桶所在区域的终端节点(区域域名)。 您可以从这里查看OBS当前开通的服务地址和区域信息。 SDK支持带协议名和不带协议名两种方式传入服务地址,例如获取到的服务地址为“your-endpoint”,则初始化OBS客户端时传入的服务地址可以为“http://your-endpoint”、“https://your-endpoint”和“your-endpoint”三种形式。 父主题: 快速入门
  • 使用composer命令下载安装(推荐) 安装步骤如下: 运行composer -V查看composer版本并确保composer已安装。 运行composer require obs/esdk-obs-php执行安装。 如果您的环境尚未安装composer,请参见Packagist官网安装; 如果您使用的是Windows操作系统,当运行composer命令时提示“不是内部或外部命令”,请在Path环境变量中增加composer的安装目录(一般为PHP所在目录); 您可能需要重启电脑使环境变量生效; 如果您使用Composer安装依赖时出现网络错误,可以使用Composer中国区的镜像源,方法是在命令行执行:composer config -g repositories.packagist composer http://packagist.phpcomposer.com。
  • 开发环境准备 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 从PHP官网下载并安装推荐使用的版本。 【可选】从Jetbrains官网下载并安装PhpStorm最新版本。 PHP安装完成后,需要指定php.ini文件中的扩展库路径参数(extension_dir),并开启cURL和OpenSSL扩展库。 父主题: 快速入门
  • 使用前需知 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 请确认您已经熟悉OBS的基本概念,如桶(Bucket)、对象(Object)、访问密钥(AK和SK)等。 您可以先参考OBS客户端通用示例,了解OBS PHP SDK接口调用的通用方式。 调用ObsClient的相关接口完成后,没有异常抛出,则会返回SDK公共结果对象,表明操作成功;如果抛出异常,则表明操作失败,此时可从SDK自定义异常实例中获取错误信息。 当前各区域特性开放不一致,部分特性只在部分区域开放,使用过程中如果接口HTTP状态码为405,请确认该区域是否支持该功能特性。 父主题: 快速入门
  • 示例程序 OBS PHP SDK提供了丰富的示例程序,方便用户参考或直接使用。 您可以从OBS PHP SDK开发包中获取示例程序。 您也可以从下面表格中直接下载示例程序。 示例包括以下内容: 示例代码 说明 BucketOperationsSample 展示了桶相关接口的用法 ObjectOperationsSample 展示了对象相关接口的用法 DownloadSample 展示了下载对象的用法 CreateFolderSample 展示了创建文件夹的用法 DeleteObjectsSample 展示了批量删除对象的用法 ListObjectsSample 展示了列举对象的用法 ListVersionsSample 展示了列举多版本对象的用法 ListObjectsInFolderSample 展示了列举文件夹内对象的用法 ObjectMetaSample 展示了自定义对象元数据的用法 SimpleMultipartUploadSample 展示了分段上传的基本用法 RestoreObjectSample 展示了下载归档存储对象的用法 ConcurrentCopyPartSample 展示了分段并发复制大对象的用法 ConcurrentDownloadObjectSample 展示了分段并发下载大对象的用法 ConcurrentUploadPartSample 展示了分段并发上传大对象的用法 PostObjectSample 展示了表单上传对象的用法 TemporarySignatureSample 展示了使用URL进行授权访问的用法
  • 兼容性 版本修订记录信息:ChangeLog。 推荐的PHP版本:PHP 5.6,PHP 7.x。 PHP SDK 3.22.6 及以上版本至少需要PHP 7.1 版本才支持使用。 PHP SDK 3.23.11及以下版本最高兼容至PHP 8.1,如需兼容更高的PHP版本,请升级PHP SDK版本至3.24.9。 命名空间:与旧版本(2.1.x)不兼容,对外公开的类和函数均调整到Obs命名空间下。 接口函数:与旧版本(2.1.x)不完全兼容,接口变化如下表: 接口函数 变化说明 ObsClient.setBucketCors 请求参数中CorsRule字段改名为CorsRules。 ObsClient.getBucketCors 响应结果中CorsRule字段改名为CorsRules。 ObsClient.setBucketTagging 请求参数中TagSet字段改名为Tags。 ObsClient.getBucketTagging 响应结果中TagSet字段改名为Tags。
共100000条