华为云用户手册

  • 约束条件 仅支持在证书有效期内,不限次数的下载证书,下载后即可在服务器(华为云的或非华为云的均可)上进行部署。 “证书请求文件”选择的是“系统生成 CS R”,下载的文件包含了“Apache”、“Nginx”、2个文件夹和1个“domain.csr”文件。 “证书请求文件”选择的是“自己生成CSR”,下载的证书包含了“server.pem”、“encrypt.pem”、“encrypt.key.pem”文件。“server.pem”文件中已经包含两段签名证书代码,分别是服务器证书和CA中间证书。签名证书私钥为用户自行保存的,华为云SSL证书管理不提供。
  • 下载的证书文件说明 下载文件说明:根据申请证书时,选择的“证书请求文件”方式的不同,下载文件也有所不同。 申请证书时,如果“证书请求文件”选择的是“系统生成CSR”,则下载文件说明如下: 下载的文件包含了“Apache”、“Nginx”、2个文件夹和1个“domain.csr”文件,如图解压SSL证书所示,具体文件说明如表下载文件说明所示。 图2 解压SSL证书 表1 下载文件说明 文件夹/文件名称 文件夹内容 Nginx server.crt:签名证书文件,包含两段证书代码,分别为服务器证书和CA中间证书。 server.key:签名证书私钥文件,包含一段签名证书私钥代码。 encrypt.crt:加密证书文件,包含一段加密证书代码。 encrypt.key:加密证书私钥文件,包含一段加密证书私钥代码。 Apache ca.crt:证书链文件,包含一段中级CA代码。 server.crt:签名证书文件,包含一段服务器证书代码。 server.key:签名证书私钥文件,包含一段证书私钥代码。 encrypt.crt:加密证书文件,包含一段加密证书代码。 encrypt.key:加密证书私钥文件,包含一段加密证书私钥代码。 domain.csr 证书请求文件。 申请证书时,如果“证书请求文件”选择的是“自己生成CSR”,则下载文件说明如下: 下载的证书下载的证书包含了 “server.pem”、“encrypt.pem”、“encrypt.key.pem”文件。“server.pem”文件中已经包含两段签名证书代码,分别是服务器证书和CA中间证书。 签名证书私钥为用户自行保存的,华为云SSL证书管理不提供。在各个服务器上安装证书时,需要填写对应私钥的位置。
  • 接口约束 您必须拥有obs:bucket:CreateBucket权限,才能创建桶。建议使用 IAM 进行授权,配置方式详见使用IAM自定义策略。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。 创建桶时,如果使用的终端节点归属于默认区域华北-北京一(cn-north-1),则可以不指定区域;如果使用的终端节点归属于其他区域,则必须指定区域,且指定的区域必须与终端节点归属的区域一致。当前有效的区 域名 称可从这里查询。比如初始化时使用的终端节点EndPoint是obs.cn-north-4. myhuaweicloud.com,那么在创建桶的时候必须指定Location:cn-north-4 才会创建成功,否则会返回状态码400。 同一账号下,可以创建多个存桶,数量上限是100个(不区分地域),存储桶中的对象数量和大小没有限制。 新创建桶的桶名在OBS中必须是唯一的。如果是同一个用户重复创建同一区域的同名桶时返回HTTP状态码200。除此以外的其他场景重复创建同名桶返回HTTP状态码409,表明桶已存在。 用户删除桶后,需要等待30分钟才能创建同名桶和并行文件系统。 并不是所有区域都支持创建多AZ桶,您可以在产品价格详情页面,查询指定区域是否支持多AZ。
  • 返回结果说明 表5 返回结果 参数类型 描述 Response 说明: 该接口返回是一个Promise类型,需要使用Promise、async/await语法处理。 参数解释: 接口返回信息,详见Response。 表6 Response 参数名称 参数类型 描述 CommonMsg ICommonMsg 参数解释: 接口调用完成后的公共信息,包含HTTP状态码,操作失败的错误码等,详见ICommonMsg。 InterfaceResult BaseResponseOutput 参数解释: 操作成功后的结果数据,详见BaseResponseOutput。 约束限制: 当Status大于300时为空。 表7 ICommonMsg 参数名称 参数类型 描述 Status number 参数解释: OBS服务端返回的HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 Code string 参数解释: OBS服务端返回的错误码。 Message string 参数解释: OBS服务端返回的错误描述。 HostId string 参数解释: OBS服务端返回的请求服务端ID。 RequestId string 参数解释: OBS服务端返回的请求ID。 Id2 string 参数解释: OBS服务端返回的请求ID2。 Indicator string 参数解释: OBS服务端返回的详细错误码。 表8 BaseResponseOutput 参数名称 参数类型 描述 RequestId string 参数解释: OBS服务端返回的请求ID。
  • Harmony SDK接口概览(Harmony SDK) 表1总结了OBS Harmony SDK所有接口的描述与使用方式、方法定义及参数说明等内容。 表1 Harmony SDK API 接口名 定义方法 功能描述 创建桶 ObsClient.createBucket 在当前账号按照用户指定的桶名创建一个新桶,接口支持根据用户诉求,在创建桶的同时配置桶的存储类别、区域及桶ACL等参数。 获取桶列表 ObsClient.listBuckets 列举当前账号所有地域下符合指定条件的桶。返回结果以桶名的字典序排序。 判断桶是否存在 ObsClient.headBucket 判断指定桶名的桶是否存在,返回的结果中HTTP状态码为200表明桶存在,否则返回404表明桶不存在。 删除桶 ObsClient.deleteBucket 桶为空时,用户可以删除桶,以免占用桶数量配额。删除桶后需要等待30分钟才能创建同名桶。 列举桶内对象 ObsClient.listObjects 列举指定桶内的部分或所有对象的描述信息。还可以通过设置前缀、数量、起始位置等参数,返回符合筛选条件的对象信息。返回结果以对象名的字典序排序。 列举桶内多版本对象 ObsClient.listVersions 列举指定桶内的部分或所有多版本对象的描述信息。还可以通过设置前缀、数量、起始位置等参数,返回符合您筛选条件的多版本对象信息。返回结果以多版本对象名的字典序排序。 获取桶元数据 ObsClient.getBucketMetadata 获取指定桶的相关信息,包括指定桶的存储类别、区域位置、跨域资源共享(CORS)规则、冗余策略等信息。 获取桶区域位置 ObsClient.getBucketLocation 获取指定桶所在的区域位置。 获取桶存量信息 ObsClient.getBucketStorageInfo 获取桶的存量信息,包括桶已使用的空间大小以及桶包含的对象个数。 设置桶配额 ObsClient.setBucketQuota 设置桶的配额限制来控制桶内允许上传的对象总容量,超过设置的对象容量后,上传对象会失败。 获取桶配额 ObsClient.getBucketQuota 获取桶的配额值,0代表配额没有上限。 设置桶存储类型 ObsClient.setBucketStoragePolicy 设置指定桶的存储类别。设置桶的存储类别后,如果上传对象、复制对象和初始化多段上传任务时未指定对象的存储类别,则该对象的存储类别默认与桶的存储类别保持一致。 获取桶存储类型 ObsClient.getBucketStoragePolicy 获取桶的存储类型。 设置桶ACL ObsClient.setBucketAcl 设置指定桶的ACL。 获取桶ACL ObsClient.getBucketAcl 获取指定桶的ACL。 设置桶日志管理配置 ObsClient.setBucketLoggingConfiguration 为指定桶打开桶日志功能,并配置日志存放的目标桶。桶日志功能开启后,桶的每次操作将会产生一条日志,并将多条日志打包成一个日志文件。日志文件存放到开启日志功能的桶中,也可以存放到其他您有权限的桶中,但需要和开启日志功能的桶在同一个region中。您还可以根据需要配置日志文件的访问权限,以及日志文件的文件名前缀。 获取桶日志管理配置 ObsClient.getBucketLoggingConfiguration 获取桶的访问日志配置。 设置桶策略 ObsClient.setBucketPolicy 配置桶的策略,如果桶已经存在一个策略,那么当前请求中的策略将完全覆盖桶中现存的策略。 获取桶策略 ObsClient.getBucketPolicy 获取桶的策略配置。 删除桶策略 ObsClient.deleteBucketPolicy 删除指定桶的桶策略。无论桶的策略本身是否存在,删除成功后系统都直接返回“204 No Content”的结果。 设置桶的生命周期配置 ObsClient.setBucketLifecycleConfiguration 配置桶的生命周期规则,实现定时转换桶中对象的存储类型,以及定时删除桶中对象的功能。 获取桶的生命周期配置 ObsClient.getBucketLifecycleConfiguration 获取桶的生命周期规则。 删除桶的生命周期配置 ObsClient.deleteBucketLifecycleConfiguration 删除桶所有的生命周期规则。 设置桶的Website 配置 ObsClient.setBucketWebsiteConfiguration 设置桶的Website配置。 获取桶的Website 配置 ObsClient.getBucketWebsiteConfiguration 获取桶的Website配置。 删除桶的Website 配置 ObsClient.deleteBucketWebsiteConfiguration 删除指定桶的Website配置。 设置桶的多版本状态 ObsClient.setBucketVersioning 为指定桶设置多版本状态。在一个桶中保留对象的多个版本,可方便地检索和还原各个版本,在意外操作或应用程序故障时快速恢复数据。 获取桶的多版本状态 ObsClient.getBucketVersioning 获取桶的多版本状态。 设置桶的CORS 配置 ObsClient.setBucketCors 设置桶的跨域资源共享规则,以允许客户端浏览器进行跨域请求。 获取桶的CORS 配置 ObsClient.getBucketCors 获取指定桶的跨域资源共享规则。 删除桶的CORS 配置 ObsClient.deleteBucketCors 删除指定桶的跨域资源共享规则。 设置桶标签 ObsClient.setBucketTagging 为桶添加标签,该桶上所有请求产生的计费话单里都会带上这些标签,从而可以针对话单报表做分类筛选,进行更详细的成本分析。 获取桶标签 ObsClient.getBucketTagging 获取指定桶的标签。 删除桶标签 ObsClient.deleteBucketTagging 删除指定桶的标签。 上传对象 ObsClient.putObject 上传对象到指定桶中。 追加上传(Harmony SDK) ObsClient.appendObject 对同一个对象追加数据内容。 下载对象 ObsClient.getObject 下载指定桶中的对象。 复制对象 ObsClient.copyObject 为指定桶中的对象创建一个副本。在单次操作中,可以创建最大5GB的对象副本。 删除对象 ObsClient.deleteObject 根据需要删除指定桶中的对象,节省空间和成本。 批量删除对象 ObsClient.deleteObjects 根据需要批量删除指定桶中的多个对象,节省空间和成本。 批量删除对象用于将一个桶内的部分对象一次性删除,删除后不可恢复。批量删除对象要求返回结果里包含每个对象的删除结果。 获取对象元数据 ObsClient.getObjectMetadata 对指定桶中的对象发送HEAD请求,获取对象的元数据信息。 设置对象元数据 ObsClient.setObjectMetadata 对指定桶中的对象的元数据信息。 设置对象ACL ObsClient.setObjectAcl 在上传对象时设置权限控制策略,也可以通过ACL操作API接口对已存在的对象更改ACL 。 获取对象ACL ObsClient.getObjectAcl 通过接口获取指定桶中对象的ACL访问权限,返回信息包含指定对象的权限控制列表信息。 初始化分传段任务 ObsClient.initiateMultipartUpload 使用分段上传方式传输数据前,必须先通知OBS初始化一个分段上传任务。该操作会返回一个OBS服务端创建的全局唯一标识(UploadID),用于标识本次分段上传任务。 上传段 ObsClient.uploadPart 初始化分段上传任务后,通过分段上传任务的UploadID,上传段到指定桶中。 复制段 ObsClient.copyPart 初始化分段上传任务后,通过分段上传任务的UploadID,复制段到指定桶中。 列举已上传的段 ObsClient.listParts 通过分段上传任务的UploadID,列举指定桶中已上传的段。 列举分段上传任务 ObsClient.listMultipartUploads 列举指定桶中所有的初始化后还未合并或还未取消的分段上传任务。 合并段 ObsClient.completeMultipartUpload 通过分段上传任务的UploadID和对应已上传的段信息(包括PartNumber和ETag),合并成一个完整的对象。 取消分段上传任务 ObsClient.abortMultipartUpload 通过分段上传任务的UploadID,取消指定桶中的分段上传任务。 恢复归档存储对象 ObsClient.restoreObject 如果要下载归档存储对象,需要先将归档存储对象恢复。恢复归档存储对象的恢复选项可支持标准恢复、快速恢复。 生成带授权信息的URL ObsClient.createSignedUrl 通过访问密钥、请求方法类型、请求参数等信息生成一个在Query参数中携带鉴权信息的URL,可将该URL提供给其他用户进行临时访问。在生成URL时,您需要指定URL的有效期来限制访客用户的访问时长。 如果您想授予其他用户对桶或对象临时进行其他操作的权限(例如上传或下载对象),则需要生成带对应请求的URL后(例如使用生成PUT请求的URL上传对象),将该URL提供给其他用户。 生成带授权信息的表单上传参数 ObsClient.createPostSignatureSync 生成用于鉴权的请求参数,以进行基于浏览器的POST表单上传。
  • 接口约束 您必须拥有obs:bucket:CreateBucket权限,才能创建桶。建议使用IAM进行授权,配置方式详见使用IAM自定义策略。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。创建桶时,如果使用的终端节点归属于默认区域华北-北京一(cn-north-1),则可以不指定区域;如果使用的终端节点归属于其他区域,则必须指定区域,且指定的区域必须与终端节点归属的区域一致。当前有效的区域名称可从这里查询。比如初始化时使用的终端节点EndPoint是obs.cn-north-4.myhuaweicloud.com,那么在创建桶的时候必须指定Location:cn-north-4才会创建成功,否则会返回状态码400。 同一账号下,可以创建多个存储桶,数量上限是100个(不区分地域),存储桶中的对象数量和大小没有限制。 新创建桶的桶名在OBS中必须是唯一的。如果是同一个用户重复创建同一区域的同名桶时返回HTTP状态码200。除此以外的其他场景重复创建同名桶返回HTTP状态码409,表明桶已存在。 用户删除桶后,需要等待30分钟才能创建同名桶和并行文件系统。 并不是所有区域都支持创建多AZ桶,您可以在产品价格详情页面,查询指定区域是否支持多AZ。
  • 返回结果说明 表4 返回结果 参数类型 描述 表5 说明: 该接口返回是一个Promise类型,需要使用Promise、async/await语法处理。 参数解释: 接口返回信息,详见表5。 表5 Response 参数名称 参数类型 描述 CommonMsg ICommonMsg 参数解释: 接口调用完成后的公共信息,包含HTTP状态码,操作失败的错误码等,详见ICommonMsg。 InterfaceResult BaseResponseOuput 参数解释: 操作成功后的结果数据,详见BaseResponseOuput。 约束限制: 当Status大于300时为空。 表6 ICommonMsg 参数名称 参数类型 描述 Status number 参数解释: OBS服务端返回的HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 Code string 参数解释: OBS服务端返回的错误码。 Message string 参数解释: OBS服务端返回的错误描述。 HostId string 参数解释: OBS服务端返回的请求服务端ID。 RequestId string 参数解释: OBS服务端返回的请求ID。 Id2 string 参数解释: OBS服务端返回的请求ID2。 Indicator string 参数解释: OBS服务端返回的详细错误码。 表7 BaseResponseOutput 参数名称 参数类型 描述 RequestId string 参数解释: OBS服务端返回的请求ID。
  • 接口约束 您必须是桶拥有者或拥有复制对象的权限,才能复制对象。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:object:PutObject权限,如果使用桶策略则需授予PutObject权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、配置对象策略。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。 目标对象大小范围是[0, 5GB],如果源对象大小超过5GB,只能使用复制段(Node.js SDK)功能复制部分对象。
  • 返回结果 表5 返回结果 参数类型 描述 表6 说明: 该接口返回是一个Promise类型,需要使用Promise、async/await语法处理。 参数解释: 接口返回信息,详见表6。 表6 Response 参数名称 参数类型 描述 CommonMsg ICommonMsg 参数解释: 接口调用完成后的公共信息,包含HTTP状态码,操作失败的错误码等,详见ICommonMsg。 InterfaceResult 表8 参数解释: 操作成功后的结果数据,详见表8。 约束限制: 当Status大于300时为空。 表7 ICommonMsg 参数名称 参数类型 描述 Status number 参数解释: OBS服务端返回的HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 Code string 参数解释: OBS服务端返回的错误码。 Message string 参数解释: OBS服务端返回的错误描述。 HostId string 参数解释: OBS服务端返回的请求服务端ID。 RequestId string 参数解释: OBS服务端返回的请求ID。 Id2 string 参数解释: OBS服务端返回的请求ID2。 Indicator string 参数解释: OBS服务端返回的详细错误码。 表8 CopyObjectOutput 参数名称 参数类型 描述 RequestId string 参数解释: OBS服务端返回的请求ID。 LastModified string 参数解释: 目标对象的最近一次修改时间(UTC时间)。 ETag string 参数解释: 目标对象的ETag值。对象的base64编码的128位MD5摘要。ETag是对象内容的唯一标识,可以通过该值识别对象内容是否有变化。比如上传对象时ETag为A,下载对象时ETag为B,则说明对象内容发生了变化。ETag只反映变化的内容,而不是其元数据。上传的对象或复制操作创建的对象,都有唯一的ETag。 约束限制: 当对象是服务端加密的对象时,ETag值不是对象的MD5值。 CopySourceVersionId string 参数解释: 源对象的版本号。 VersionId string 参数解释: 目标对象的版本号。
  • 带参数创建 创建桶时可以指定桶ACL、存储类型和区域位置。OBS支持的桶的存储类型有三类,参见桶存储类型。示例代码如下: static OBSClient *client; NSString *endPoint = @"your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html char* ak_env = getenv("AccessKeyID"); char* sk_env = getenv("SecretAccessKey"); NSString *AK = [NSString stringWithUTF8String:ak_env]; NSString *SK = [NSString stringWithUTF8String:sk_env]; // 初始化身份验证 OBSStaticCredentialProvider *credentialProvider = [[OBSStaticCredentialProvider alloc] initWithAccessKey:AK secretKey:SK]; //初始化服务配置 OBSServiceConfiguration *conf = [[OBSServiceConfiguration alloc] initWithURLString:endPoint credentialProvider:credentialProvider]; // 初始化client client = [[OBSClient alloc] initWithConfiguration:conf]; //创建桶 OBSCreateBucketRequest *request = [[OBSCreateBucketRequest alloc] initWithBucketName:@"bucketname"]; // 设置桶ACL为公共读写 request.bucketACLPolicy = OBSACLPolicyPublicReadWrite; // 存储模式设置为标准存储 request.defaultStorageClass = OBSStorageClassStandard; // 设置桶区域配置 request.configuration = [[OBSBucketConfiguration alloc] initWithLocationConstraint:@"bucketlocation"]; [client createBucket:request completionHandler:^(OBSCreateBucketResponse *response, NSError *error) { NSLog(@"%@",response.location); }];
  • 列举对象 static OBSClient *client; NSString *endPoint = @"your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html char* ak_env = getenv("AccessKeyID"); char* sk_env = getenv("SecretAccessKey"); NSString *AK = [NSString stringWithUTF8String:ak_env]; NSString *SK = [NSString stringWithUTF8String:sk_env]; // 初始化身份验证 OBSStaticCredentialProvider *credentialProvider = [[OBSStaticCredentialProvider alloc] initWithAccessKey:AK secretKey:SK]; //初始化服务配置 OBSServiceConfiguration *conf = [[OBSServiceConfiguration alloc] initWithURLString:endPoint credentialProvider:credentialProvider]; // 初始化client client = [[OBSClient alloc] initWithConfiguration:conf]; OBSListObjectsRequest *request = [[OBSListObjectsRequest alloc] initWithBucketName:@"bucketname"]; // V2生成授权访问url [client createV2PreSignedURL:request expireAfter:3600 completionHandler:^(NSString *urlString, NSString *httpVerb, NSDictionary *signedHeaders) { NSLog(@"%@",urlString); }]
  • 获取对象 static OBSClient *client; NSString *endPoint = @"your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html char* ak_env = getenv("AccessKeyID"); char* sk_env = getenv("SecretAccessKey"); NSString *AK = [NSString stringWithUTF8String:ak_env]; NSString *SK = [NSString stringWithUTF8String:sk_env]; // 初始化身份验证 OBSStaticCredentialProvider *credentialProvider = [[OBSStaticCredentialProvider alloc] initWithAccessKey:AK secretKey:SK]; //初始化服务配置 OBSServiceConfiguration *conf = [[OBSServiceConfiguration alloc] initWithURLString:endPoint credentialProvider:credentialProvider]; // 初始化client client = [[OBSClient alloc] initWithConfiguration:conf]; OBSGetObjectToDataRequest *request = [[OBSGetObjectToDataRequest alloc] initWithBucketName:@"bucketname" objectKey:@"objectkey"]; // V2生成授权访问url [client createV2PreSignedURL:request expireAfter:3600 completionHandler:^(NSString *urlString, NSString *httpVerb, NSDictionary *signedHeaders) { NSLog(@"%@",urlString); }]
  • SDK自定义异常 通过响应中的error来判断请求是否异常。 如果error等于空则请求无异常,否则请求失败。 同时您可以将错误信息打印在窗口中。 示例代码如下: static OBSClient *client; NSString *endPoint = @"your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html char* ak_env = getenv("AccessKeyID"); char* sk_env = getenv("SecretAccessKey"); NSString *AK = [NSString stringWithUTF8String:ak_env]; NSString *SK = [NSString stringWithUTF8String:sk_env]; // 初始化身份验证 OBSStaticCredentialProvider *credentialProvider = [[OBSStaticCredentialProvider alloc] initWithAccessKey:AK secretKey:SK]; //初始化服务配置 OBSServiceConfiguration *conf = [[OBSServiceConfiguration alloc] initWithURLString:endPoint credentialProvider:credentialProvider]; // 初始化client client = [[OBSClient alloc] initWithConfiguration:conf]; // 创建一个请求 OBSListBucketsRequest *request = [OBSListBucketsRequest new]; [client listBuckets:request completionHandler:^(OBSListBucketsResponse *response, NSError *error) { // 请求成功,错误为空 if(!error){ //处理请求 NSLog(@"%@",response.headers); } }]; 父主题: 异常处理
  • 静态网站托管简介 您可以将静态网站文件上传至OBS的桶中作为对象,并对这些对象赋予公共读权限,然后将该桶配置成静态网站托管模式,以实现在OBS上托管静态网站的目的。 第三方用户在访问您网站的时候,实际上是在访问OBS的桶中的对象。 在使用静态网站托管功能时,OBS还支持配置请求重定向,通过重定向配置您可以将特定的请求或所有请求实施重定向。 您可通过以下步骤实现网站文件托管: 将网站文件上传至OBS的桶中,并设置对象MIME类型。 设置对象ACL为公共读。 通过浏览器访问对象。 更多关于静态网站托管的内容请参考静态网站托管。 父主题: 静态网站托管
  • 设置桶策略 您可以通过setBucketPolicy设置桶策略。示例代码如下: static OBSClient *client; NSString *endPoint = @"your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html char* ak_env = getenv("AccessKeyID"); char* sk_env = getenv("SecretAccessKey"); NSString *AK = [NSString stringWithUTF8String:ak_env]; NSString *SK = [NSString stringWithUTF8String:sk_env]; // 初始化身份验证 OBSStaticCredentialProvider *credentialProvider = [[OBSStaticCredentialProvider alloc] initWithAccessKey:AK secretKey:SK]; //初始化服务配置 OBSServiceConfiguration *conf = [[OBSServiceConfiguration alloc] initWithURLString:endPoint credentialProvider:credentialProvider]; // 初始化client client = [[OBSClient alloc] initWithConfiguration:conf]; // 设置桶策略 OBSSetBucketPolicyWithStringRequest *request = [[OBSSetBucketPolicyWithStringRequest alloc] initWithBucketName:@"bucketname" policyString:@"policystring"]; [client setBucketPolicy:request completionHandler:^(OBSSetBucketPolicyResponse *response, NSError *error){ NSLog(@"%@",response); }];
  • 获取桶策略 您可以通过getBucketPolicy获取桶策略。示例代码如下: static OBSClient *client; NSString *endPoint = @"your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html char* ak_env = getenv("AccessKeyID"); char* sk_env = getenv("SecretAccessKey"); NSString *AK = [NSString stringWithUTF8String:ak_env]; NSString *SK = [NSString stringWithUTF8String:sk_env]; // 初始化身份验证 OBSStaticCredentialProvider *credentialProvider = [[OBSStaticCredentialProvider alloc] initWithAccessKey:AK secretKey:SK]; //初始化服务配置 OBSServiceConfiguration *conf = [[OBSServiceConfiguration alloc] initWithURLString:endPoint credentialProvider:credentialProvider]; // 初始化client client = [[OBSClient alloc] initWithConfiguration:conf]; // 获取桶策略 OBSGetBucketPolicyRequest *request = [[OBSGetBucketPolicyRequest alloc] initWithBucketName:g_bucketName]; [client getBucketPolicy:request completionHandler:^(OBSGetBucketPolicyResponse *response, NSError *error){ NSLog(@"%@",response); }];
  • 删除桶策略 您可以通过deleteBucketPolicy删除桶策略。示例代码如下: static OBSClient *client; NSString *endPoint = @"your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html char* ak_env = getenv("AccessKeyID"); char* sk_env = getenv("SecretAccessKey"); NSString *AK = [NSString stringWithUTF8String:ak_env]; NSString *SK = [NSString stringWithUTF8String:sk_env]; // 初始化身份验证 OBSStaticCredentialProvider *credentialProvider = [[OBSStaticCredentialProvider alloc] initWithAccessKey:AK secretKey:SK]; //初始化服务配置 OBSServiceConfiguration *conf = [[OBSServiceConfiguration alloc] initWithURLString:endPoint credentialProvider:credentialProvider]; // 初始化client client = [[OBSClient alloc] initWithConfiguration:conf]; // 删除桶策略 OBSDeleteBucketPolicyRequest *request = [[OBSDeleteBucketPolicyRequest alloc] initWithBucketName:g_bucketName]; [client deleteBucketPolicy:request completionHandler:^(OBSDeleteBucketPolicyResponse *response, NSError *error) { NSLog(@"%@",response); }];
  • 限定条件复制 复制对象时,可以指定一个或多个限定条件,满足限定条件时则进行复制,否则抛出异常,复制对象失败。 您可以使用的限定条件如下: 参数 作用 格式 CopySourceIfModifiedSince 如果源对象在指定的时间后有修改,则进行复制,否则抛出异常。 符合http://www.ietf.org/rfc/rfc2616.txt规定格式的HTTP时间字符串。 CopySourceIfUnmodifiedSince 如果源对象在指定的时间后没有修改,则进行复制,否则抛出异常。 符合http://www.ietf.org/rfc/rfc2616.txt规定格式的HTTP时间字符串。 CopySourceIfMatch 如果源对象的ETag值与该参数值相同,则进行复制,否则抛出异常。 字符串。 CopySourceIfNoneMatch 如果源对象的ETag值与该参数值不相同,则进行复制,否则抛出异常。 字符串。
  • 为桶设置预定义ACL 以下代码展示如何为桶设置预定义ACL: // 认证用的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); // 设置桶ACL为私有读写 obsClient.setBucketAcl("bucketname", AccessControlList.REST_CANNED_PRIVATE);
  • 自定义设置桶ACL 以下代码展示如何直接设置桶ACL: // 认证用的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); AccessControlList acl = new AccessControlList(); Owner owner = new Owner(); owner.setId("ownerid"); acl.setOwner(owner); // 为指定用户设置完全控制权限 acl.grantPermission(new CanonicalGrantee("userid"), Permission.PERMISSION_FULL_CONTROL); // 为所有用户设置读权限 acl.grantPermission(GroupGrantee.ALL_USERS, Permission.PERMISSION_READ); // 直接设置桶ACL obsClient.setBucketAcl("bucketname", acl); ACL中需要填写的所有者(Owner)或者被授权用户(Grantee)的ID,是指用户的账号ID,可通过OBS控制台“我的凭证”页面查看。
  • 获取桶ACL 您可以通过ObsClient.getBucketAcl获取桶ACL。以下代码展示如何获取桶ACL: // 认证用的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); AccessControlList acl = obsClient.getBucketAcl("bucketname"); Log.i("GetBucketAcl", acl.toString());
  • 创桶时指定预定义ACL 以下代码展示如何在创建桶时指定预定义ACL: // 认证用的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); ObsBucket obsBucket = new ObsBucket(); obsBucket.setBucketName("bucketname"); // 设置桶ACL为公共读写 obsBucket.setAcl(AccessControlList.REST_CANNED_PUBLIC_READ_WRITE); // 创建桶 obsClient.createBucket(obsBucket);
  • 简单创建 以下代码展示如何新建一个桶: // 认证用的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); // 创建桶 try{ // 创建桶成功 HeaderResponse response = obsClient.createBucket("bucketname"); Log.i("CreateBucket", response.getRequestId()); } catch (ObsException e) { // 创建桶失败 Log.e("CreateBucket", "Response Code: " + e.getResponseCode()); Log.e("CreateBucket", "Error Message: " + e.getErrorMessage()); Log.e("CreateBucket", "Error Code: " + e.getErrorCode()); Log.e("CreateBucket", "Request ID: " + e.getErrorRequestId()); Log.e("CreateBucket", "Host ID: " + e.getErrorHostId()); } 桶的名字是全局唯一的,所以您需要确保不与已有的桶名称重复。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用类IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 本示例创建的桶的ACL默认是私有读写,存储类型默认是标准类型,区域位置是默认区域。
  • 带参数创建 创建桶时可以指定桶ACL、存储类型和区域位置。OBS支持的桶的存储类型有三类,参见桶存储类型。示例代码如下: // 认证用的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); ObsBucket obsBucket = new ObsBucket(); obsBucket.setBucketName("bucketname"); // 设置桶ACL为公共读,默认是私有 obsBucket.setAcl(AccessControlList.REST_CANNED_PUBLIC_READ); // 设置桶的存储类型为归档存储 obsBucket.setBucketStorageClass(StorageClassEnum.COLD); // 设置桶区域位置 obsBucket.setLocation("bucketlocation"); // 创建桶 try{ // 创建桶成功 HeaderResponse response =obsClient.createBucket(obsBucket); Log.i("CreateBucket", response.getRequestId()); } catch (ObsException e) { // 创建桶失败 Log.e("CreateBucket", "Response Code: " + e.getResponseCode()); Log.e("CreateBucket", "Error Message: " + e.getErrorMessage()); Log.e("CreateBucket", "Error Code: " + e.getErrorCode()); Log.e("CreateBucket", "Request ID: " + e.getErrorRequestId()); Log.e("CreateBucket", "Host ID: " + e.getErrorHostId()); }
  • 获取多版本对象ACL 您可以通过ObsClient.getObjectAcl接口传入版本号(versionId)获取多版本对象ACL,示例代码如下: // 认证用的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); AccessControlList acl = obsClient.getObjectAcl("bucketname", "objectname", "versionid"); System.out.println(acl);
  • 设置多版本对象ACL 您可以通过ObsClient.setObjectAcl接口传入版本号(versionId)设置多版本对象ACL,示例代码如下: // 认证用的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); // 通过预定义访问策略设置多版本对象ACL为公共读 obsClient.setObjectAcl("bucketname", "objectname", AccessControlList.REST_CANNED_PUBLIC_READ, "versionid"); AccessControlList acl = new AccessControlList(); Owner owner = new Owner(); owner.setId("ownerid"); acl.setOwner(owner); // 为所有用户设置读权限 acl.grantPermission(GroupGrantee.ALL_USERS, Permission.PERMISSION_READ); // 直接设置多版本对象ACL obsClient.setObjectAcl("bucketname", "objectname", acl, "versionid"); ACL中需要填写的所有者(Owner)或者被授权用户(Grantee)的ID,是指用户的账号ID,可通过OBS控制台“我的凭证”页面查看。
  • 为对象设置预定义ACL 以下代码展示如何为对象设置预定义ACL: // 认证用的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); // 设置对象ACL为私有读写 obsClient.setObjectAcl("bucketname", "objectname", AccessControlList.REST_CANNED_PRIVATE);
  • 自定义设置对象ACL 以下代码展示如何直接设置对象ACL: // 认证用的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); AccessControlList acl = new AccessControlList(); Owner owner = new Owner(); owner.setId("ownerid"); acl.setOwner(owner); // 为指定用户设置完全控制权限 acl.grantPermission(new CanonicalGrantee("userid"), Permission.PERMISSION_FULL_CONTROL); // 为所有用户设置读权限 acl.grantPermission(GroupGrantee.ALL_USERS, Permission.PERMISSION_READ); obsClient.setObjectAcl("bucketname", "objectname", acl); ACL中需要填写的所有者(Owner)或者被授权用户(Grantee)的ID,是指用户的账号ID,可通过OBS控制台“我的凭证”页面查看。
  • 获取对象ACL 您可以通过ObsClient.getObjectAcl获取对象ACL。以下代码展示如何获取对象ACL: // 认证用的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); AccessControlList acl = obsClient.getObjectAcl("bucketname", "objectname"); Log.i("GetObjectAcl", acl);
  • 上传对象时指定预定义ACL 以下代码展示如何在上传对象时指定预定义ACL: // 认证用的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); PutObjectRequest request = new PutObjectRequest(); request.setBucketName("bucketname"); request.setObjectKey("objectname"); request.setFile(new File("localfile")); // localfile为待上传的本地文件路径,需要指定到具体的文件名 // 设置对象ACL为公共读 request.setAcl(AccessControlList.REST_CANNED_PUBLIC_READ); obsClient.putObject(request);
共100000条
提示

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