华为云用户手册

  • 跨域资源共享简介 跨域资源共享(Cross Origin Resource Sharing,CORS)是由W3C标准化组织提出的一种网络浏览器的规范机制,定义了一个域中加载的客户端Web应用程序与另一个域中的资源交互的方式。 而在通常的网页请求中,由于同源安全策略(Same Origin Policy,SOP)的存在,不同域之间的网站脚本和内容是无法进行交互的。 OBS支持CORS规范,允许跨域请求访问OBS中的资源。 调用设置桶的CORS配置接口,您可设置指定桶的跨域资源共享规则,以允许客户端浏览器进行跨域请求。如果原规则存在则覆盖原规则。 更多关于跨域资源共享的内容请参考跨域资源访问。 父主题: 跨域资源共享
  • 日志简介 调用设置桶日志管理配置接口,您可以为指定桶打开桶日志功能,并配置日志存放的目标桶。 创建桶时,默认是不生成桶的日志的,调用IOS SDK的设置桶日志管理配置接口时,接口会自动为您打开桶日志配置。 桶日志功能开启后,桶的每次操作将会产生一条日志,并将多条日志打包成一个日志文件。 日志文件存放位置需要在开启桶日志功能时指定,可以存放到开启日志功能的桶中,也可以存放到其他您有权限的桶中,但需要和开启日志功能的桶在同一个region中。您还可以根据需要配置日志文件的访问权限,以及日志文件的文件名前缀。 更多关于访问日志的内容请参考日志记录。 父主题: 设置访问日志
  • 服务端加密简介 如果您的业务对数据存储的安全性和合规性有较高要求,可使用OBS提供的服务端加密功能,对上传到OBS存储的数据进行加密保护。 服务器端加密是指OBS服务端对客户端上传到OBS的对象进行加密存储。 在访问对象时,由OBS服务端对文件进行解密,然后向客户端返回解密后的数据。 IOS SDK支持SSE-KMS、SSE-C两种加密方式 。 更多关于服务端加密的内容请参考服务端加密。 父主题: 服务端加密
  • 获取桶元数据 您可以通过getBucketMetaData获取桶元数据。 代码示例如下: 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]; //获取桶元数据 OBSGetBucketMetaDataRequest *request = [[OBSGetBucketMetaDataRequest alloc]initWithBucketName:@"bucketname"]; [client getBucketMetaData:request completionHandler:^(OBSGetBucketMetaDataResponse *response, NSError *error){ NSLog(@"%@",response); }]; 获取桶元数据过程中返回的错误码含义、问题原因及处理措施可参考OBS错误码sdk自定义异常sdk公共响应头。 父主题: 管理桶
  • 删除桶标签 您可以通过deleteBucketTagging删除桶标签。以下代码展示了如何删除桶标签: 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]; // 删除桶标签 OBSDeleteBucketTaggingRequest *request = [[OBSDeleteBucketTaggingRequest alloc] initWithBucketName:@"bucketname"]; [client deleteBucketTagging:request completionHandler:^(OBSDeleteBucketTaggingResponse *response, NSError *error){ NSLog(@"%@",response); }]; 删除桶标签过程中返回的错误码含义、问题原因及处理措施可参考OBS错误码sdk自定义异常sdk公共响应头。 父主题: 标签管理
  • 清除托管配置 您可以通过deleteBucketWebsite清除桶的托管配置。以下代码展示了如何清除托管配置: 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]; // 清除托管配置 OBSDeleteBucketWebsiteRequest *request = [[OBSDeleteBucketWebsiteRequest alloc] initWithBucketName:@"bucketname"]; [client deleteBucketWebsite:request completionHandler:^(OBSDeleteBucketWebsiteResponse *response, NSError *error){ NSLog(@"%@",response); }]; 清除托管配置过程中返回的错误码含义、问题原因及处理措施可参考OBS错误码sdk自定义异常sdk公共响应头。 父主题: 静态网站托管
  • 标签简介 标签用于标识OBS中的桶,以此来达到对OBS中的桶进行分类的目的。 为桶添加标签后,该桶上所有请求产生的计费话单里都会带上这些标签,从而可以针对话单报表做分类筛选,进行更详细的成本分析。 例如:某个应用程序在运行过程会往桶里上传数据,我们可以用应用名称作为标签,设置到被使用的桶上。在分析话单时,就可以通过应用名的标签来分析此应用的成本。 更多关于桶标签的内容请参考标签。 父主题: 标签管理
  • 获取桶存量信息 桶存量信息包括桶已使用的空间大小以及桶包含的对象个数。 您可以通过getBucketStorageInfo获取桶的存量信息。 以下代码展示如何获取桶存量信息: 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]; // 获取桶存量信息 OBSGetBucketStorageInfoRequest *request = [[OBSGetBucketStorageInfoRequest alloc] initWithBucketName:@"bucketname"]; [client getBucketStorageInfo:request completionHandler:^(OBSGetBucketStorageInfoResponse *response, NSError *error) { NSLog(@"%@",response.storageInfo); }]; 获取桶存量信息过程中返回的错误码含义、问题原因及处理措施可参考OBS错误码sdk自定义异常sdk公共响应头。 父主题: 管理桶
  • 流式下载 以下代码展示了如何进行流式下载: 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:@"objectname"]; // 下载进度 request.downloadProgressBlock = ^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) { NSLog(@"%0.1f%%",(float)(totalBytesWritten)*100/(float)totalBytesExpectedToWrite); }; // 下载的数据 __block NSMutableData *objectData = [NSMutableData new]; request.onReceiveDataBlock = ^(NSData *data) { [objectData appendData:data]; }; // 下载结果 [client getObject:request completionHandler:^(OBSGetObjectResponse *response, NSError *error){ NSLog(@"%@",response); }] ; } 流式下载过程中返回的错误码含义、问题原因及处理措施可参考OBS错误码sdk自定义异常sdk公共响应头。 获取对象自定义元数据,在下载对象成功后response中包含了对象的元数据(mataDataDict)里。 父主题: 下载对象
  • 创建桶 桶是OBS全局命名空间,相当于数据的容器、文件系统的根目录,可以存储若干对象。 以下代码展示如何新建一个桶: OBSCreateBucketRequest *request = [[OBSCreateBucketRequest alloc] initWithBucketName:@"bucketname"]; [client createBucket:request completionHandler:^(OBSCreateBucketResponse *response, NSError *error) { NSLog(response.location); }]; 桶的名字是全局唯一的,所以您需要确保不与已有的桶名称重复。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 更多创建桶的信息,请参见管理桶。 创建桶时,如果使用的终端节点归属于默认区域华北-北京一(cn-north-1),则可以不指定区域;如果使用的终端节点归属于其他区域,则必须指定区域,且指定的区域必须与终端节点归属的区域一致。当前有效的区 域名 称可从这里查询。 您可以使用带参数创建方式,在创建桶时,指定桶的区域位置。 父主题: 快速入门
  • 列举桶 您可以通过listBuckets来列举桶。 代码示例如下: 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) { for(OBSBucket *bucket in response.bucketsList){ NSLog(@"bucketname=%@",bucket.name); } }]; 获取到的桶列表将按照桶名字典顺序排列。 父主题: 管理桶
  • 设置跨域规则 您可以通过setBucketCORS设置桶的跨域规则,如果原规则存在则覆盖原规则。 以下代码展示了如何设置跨域规则: 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]; // 设置桶的跨域资源共享 OBSSetBucketCORSRequest *request = [[OBSSetBucketCORSRequest alloc] initWithBucketName:@"bucketname"]; OBSCORSRule* rule = [OBSCORSRule new]; // 指定允许的跨域请求方法(GET/PUT/DELETE/POST/HEAD) rule.allowedMethodList = @[OBSCORSHTTPGET,OBSCORSHTTPPUT,OBSCORSHTTPPOST,OBSCORSHTTPHEAD]; // 指定允许跨域请求的来源 rule.allowedOriginList = @[@"www.example1.com",@"www.example2.com"]; // 允许的header rule.allowedHeaderList = @[@"allowedheader1",@"allowedheader2"]; // 指定允许用户从应用程序中访问的header rule.exposeHeaderList = @[@"exposeheader_1",@"exposeheader_2"]; // 指定浏览器对特定资源的预取(OPTIONS)请求返回结果的缓存时间,单位为秒 rule.maxAgeSeconds = [NSNumber numberWithInt:100]; [request.bucketCORSRuleList addObject:rule]; [client setBucketCORS:request completionHandler:^(OBSSetBucketCORSResponse *response, NSError *error) { NSLog(@"%@",response); }]; 设置跨域规则过程中返回的错误码含义、问题原因及处理措施可参考OBS错误码sdk自定义异常sdk公共响应头。 父主题: 跨域资源共享
  • 上传对象 本示例用于将本地文件上传到桶名为“bucketname”里,名称为“objectname”。 代码示例如下: NSString *filePath = [[NSBundle mainBundle]pathForResource:@"fileName" ofType:@"Type"]; OBSPutObjectWithFileRequest *request = [[OBSPutObjectWithFileRequest alloc]initWithBucketName:@"bucketname" objectKey:@"objectname" uploadFilePath:filePath]; // 上传进度 request.uploadProgressBlock = ^(int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend) { NSLog(@"%0.1f%%",(float)floor(totalBytesSent*10000/totalBytesExpectedToSend)/100); }; // 上传文件 [ client putObject:request completionHandler:^(OBSPutObjectResponse *response, NSError *error){ NSLog(@"%@",response.etag); }]; 更多上传对象的信息,请参见上传对象。 父主题: 快速入门
  • 分段复制 分段复制是分段上传的一种特殊情况,即分段上传任务中的段通过复制OBS指定桶中现有对象(或对象的一部分)来实现。 您可以通过copyPart来复制段。 以下代码展示了如何使用分段复制对象: 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]; // 拷贝段 OBSCopyPartRequest* copyRequest = [[OBSCopyPartRequest alloc]initWithSrcBucketName:@"bucketName" srcObjectKey:@"MultiPart" uploadBucketName:@"bucketName" uploadObjectKey:@"MultiPart" uploadPartNumber:[NSNumber numberWithInt:3] uploadID:@"uploadID"]; [client copyPart:copyRequest completionHandler:^(OBSCopyPartResponse *response, NSError *error) { NSLog(@"%@",response); }]; 分段复制过程中返回的错误码含义、问题原因及处理措施可参考OBS错误码sdk自定义异常sdk公共响应头。 父主题: 上传对象
  • 获取桶区域位置 您可以通过getBucketLocation获取桶的区域位置。 代码示例如下: 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]; // 获取桶区域 OBSGetBucketLocationRequest *request = [[OBSGetBucketLocationRequest alloc]initWithBucketName:@"bucketname"]; [client getBucketLocation:request completionHandler:^(OBSGetBucketLocationResponse *response, NSError *error){ NSLog(response.configuration.locationConstraint); }]; 创建桶时可以指定桶的区域位置,请参见创建桶。 父主题: 管理桶
  • SDK公共响应头 调用OBSClient类的相关接口成功后,均会返回公共响应头类,即OBSBaseResponse类实例(或其子类实例)。 该类包含了HTTP/HTTPS的响应头信息。 处理公共响应头的示例代码如下: 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) { NSLog(@"%@",response.headers); }]; 父主题: 异常处理
  • 复制多版本对象 您可以通过OBSCopyObjectRequest接口传入版本号(versionID)来复制多版本对象,示例代码如下: 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]; OBSCopyObjectRequest *request = [[OBSCopyObjectRequest alloc]initWithSrcBucketName:@"source-bucketname" srcObjectKey:@"objectname1" dstBucketName:@"destination-bucketname" dstObjectKey:@"objectname2"]; // 被拷贝对象多版本ID request.srcObjectVersionID = @"testVersionID"; [client copyObject:request completionHandler:^(OBSCopyObjectResponse *response, NSError *error){ NSLog(@"%@",response); }] ; 复制多版本对象过程中返回的错误码含义、问题原因及处理措施可参考OBS错误码sdk自定义异常sdk公共响应头。 父主题: 多版本控制
  • 查看托管配置 您可以通过getBucketWebsite查看桶的托管配置。以下代码展示了如何查看托管配置: 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]; // 获取托管配置 OBSGetBucketWebsiteRequest *request = [[OBSGetBucketWebsiteRequest alloc] initWithBucketName:@"bucketname"]; [client getBucketWebsite:request completionHandler:^(OBSGetBucketWebsiteResponse *response, NSError *error){ NSLog(@"%@",response); }]; 查看托管配置过程中返回的错误码含义、问题原因及处理措施可参考OBS错误码sdk自定义异常sdk公共响应头。 父主题: 静态网站托管
  • 查看跨域规则 您可以通过getBucketCORS查看桶的跨域规则。以下代码展示了如何查看跨域规则: 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]; // 获取桶的跨域资源配置 OBSGetBucketCORSRequest *request = [[OBSGetBucketCORSRequest alloc] initWithBucketName:@"bucketname"]; [client getBucketCORS:request completionHandler:^(OBSGetBucketCORSResponse *response, NSError *error) { NSLog(@"%@",response); }]; 查看跨域规则过程中返回的错误码含义、问题原因及处理措施可参考OBS错误码sdk自定义异常sdk公共响应头。 父主题: 跨域资源共享
  • 查看桶标签 您可以通过getBucketTagging查看桶标签。以下代码展示了如何查看桶标签: 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]; // 获取桶标签 OBSGetBucketTaggingRequest *request = [[OBSGetBucketTaggingRequest alloc] initWithBucketName:@"bucketname"]; [client getBucketTagging:request completionHandler:^(OBSGetBucketTaggingResponse *response, NSError *error){ NSLog(@"%@",response); }]; 查看桶标签过程中返回的错误码含义、问题原因及处理措施可参考OBS错误码sdk自定义异常sdk公共响应头。 父主题: 标签管理
  • 查看桶日志配置 您可以通过getBucketLogging查看桶日志配置。以下代码展示了如何查看桶日志配置: 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]; // 获取桶访问日志 OBSGetBucketLoggingRequest *request = [[OBSGetBucketLoggingRequest alloc] initWithBucketName:@"bucketname"]; [client getBucketLogging:request completionHandler:^(OBSGetBucketLoggingResponse *response, NSError *error){ NSLog(@"%@",response); }]; 查看桶日志配置过程中返回的错误码含义、问题原因及处理措施可参考OBS错误码sdk自定义异常sdk公共响应头。 父主题: 设置访问日志
  • 查看桶多版本状态 您可以通过getBucketVersioning查看桶的多版本状态。以下代码展示了如何查看桶的多版本状态: 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]; // 查看桶多版本状态 OBSGetBucketVersioningRequest *request = [[OBSGetBucketVersioningRequest alloc] initWithBucketName:@"bucketname"]; [client getBucketVersioning:request completionHandler:^(OBSGetBucketVersioningResponse *response, NSError *error) { NSLog(@"%@",response); }]; 查看桶多版本状态过程中返回的错误码含义、问题原因及处理措施可参考OBS错误码sdk自定义异常sdk公共响应头。 父主题: 多版本控制
  • 恢复多版本归档存储对象 您可以通过OBSRestoreObjectRequest接口传入版本号(versionID)来恢复多版本归档存储对象,示例代码如下: 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]; // 恢复归档存储对象 OBSRestoreObjectRequest *request = [[OBSRestoreObjectRequest alloc]initWithBucketName:@"bucketname" objectKey:@"objectname" storeDays:[NSNumber numberWithInt:30]];//1 to 30 request.restoreTier = OBSRestoreTierExpedited; //多版本号 request.versionID = @"多版本ID"; [client restoreObject:request completionHandler:^(OBSRestoreObjectResponse *response, NSError *error){ NSLog(@"%@",response); }]; 恢复多版本归档存储对象过程中返回的错误码含义、问题原因及处理措施可参考OBS错误码sdk自定义异常sdk公共响应头。 重复恢复归档存储数据时在延长恢复有效期的同时,也将会对恢复时产生的恢复费用进行重复收取。产生的标准存储类别的对象副本有效期将会延长,并且收取延长时间段产生的标准存储副本费用。 父主题: 多版本控制
  • 查看生命周期规则 您可以通过getBucketLifecycle查看桶的生命周期规则,以下代码展示了如何查看桶的生命周期规则: 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]; // 查看生命周期 OBSGetBucketLifecycleRequest *request = [[OBSGetBucketLifecycleRequest alloc] initWithBucketName:@"bucketname"]; [client getBucketLifecycle:request completionHandler:^(OBSGetBucketLifecycleResponse *response, NSError *error){ NSLog(@"%@",response); }]; 查看生命周期规则过程中返回的错误码含义、问题原因及处理措施可参考OBS错误码sdk自定义异常sdk公共响应头。 父主题: 生命周期管理
  • 删除对象 本示例用于删除桶名为“bucketname”里,名称为“objectname”的对象。 代码示例如下: OBSDeleteObjectRequest *request = [[OBSDeleteObjectRequest alloc] initWithBucketName:@"bucketname" objectKey:@"objectname"]; [client deleteObject:request completionHandler:^(OBSDeleteObjectResponse *response, NSError *error) { NSLog(@"%@",response); }]; 更多删除对象的信息,请参见删除对象。 父主题: 快速入门
  • 排查思路 以下排查思路根据原因的出现概率进行排序,建议您从高频率原因往低频率原因排查,从而帮助您快速找到问题根因。 如果处理完某个可能原因仍未解决问题,请继续排查其他可能原因。 表1 排查思路 可能原因 处理措施 本地网络故障 检查本地与OBS之间的网络是否正常,如果存在网络故障,解决网络故障,确保网络正常。 无删除对象的权限 请参考检查是否有删除对象的权限。 对象所属桶已启用多版本控制 请参考在“已删除对象”列表彻底删除对象。 “已删除对象”页签中WORM对象的保留策略在保留期内 请参考彻底删除保留策略在保留期内的WORM对象。 删除的是文件夹,文件夹中的对象较多 请参考删除对象较多的文件夹。 其他原因 请参考提交工单。
  • 在“已删除对象”列表彻底删除对象 对象所属桶已启用多版本控制时,在“对象”列表删除对象,对象会迁移至“已删除对象”列表中,需要彻底删除避免产生计费。 如果待彻底删除的对象为保留策略在保留期内的WORM对象,请参考彻底删除保留策略在保留期内的WORM对象处理。 确认对象所属桶是否启用多版本控制。 在OBS控制台桶列表单击待操作的桶,进入“对象”页面。 在左侧导航栏单击“概览”,进入“概览”页面。 在“基础配置”区域查看“多版本控制”状态。 图3 查看多版本控制的状态 如果状态为已启用,此时请继续下一步。 如果状态为暂停或未启用,此时仍然无法删除对象,请提交工单寻求更多帮助。 彻底删除对象。 单击“已删除对象”页签,进入已删除对象列表。 在待删除对象的操作列单击“彻底删除”。 单击“确定”。 图4 彻底删除对象
  • 排查思路 以下排查思路根据原因的出现概率进行排序,建议您从高频率原因往低频率原因排查,从而帮助您快速找到问题根因。 如果处理完某个可能原因仍未解决问题,请继续排查其他可能原因。 OBS权限控制比较灵活,建议您使用前先阅读OBS权限控制说明,不同场景的权限配置方法可以参考典型场景配置案例。 图1 无法访问OBS排查思路 表1 排查思路 可能原因 处理措施 IAM 缓存导致权限未生效 由于缓存的存在,配置IAM权限后一般需要10~15分钟权限才能生效。请等待10~15分钟后再试。 使用了错误的账号或AK/SK访问OBS 多数情况下,出现无权限访问OBS的问题,可能是由于使用了错误的登录信息,如账号或AK/SK,其中AK/SK使用错误更为常见。例如资源拥有者给用户A开通了OBS权限,但实际使用了用户B的账号密码或AK/SK登录访问OBS。 需要与资源拥有者确认,已开通OBS权限的账号与自己当前使用的账号或AK/SK是否匹配。 配置的权限不正确 请参考检查配置的权限是否正确。 配置了拒绝访问的权限 请参考检查是否配置了拒绝访问的权限。 配置了防盗链 请参考配置防盗链修改白名单Referer/黑名单Referer。 账户余额不足 请根据所需费用给账户充值后再进行操作。
  • 重命名并行文件系统中文件 您可以通过API、SDK、OBS Browser+方式重命名并行文件系统中的文件。 通过API重命名对象 重命名对象Java SDK 使用OBS Browser+: 登录OBS Browser+。 如果未安装OBS Browser+,请先下载并安装。 在并行文件系统列表中,单击目标并行文件系统。 在文件列表中,单击需要重命名文件操作列的。 单击“重命名”。 在弹出窗口中输入新的文件名,单击“确定”。
  • 返回结果说明 表5 返回结果 参数名称 参数类型 描述 output *CreateSignedUrlOutput 参数解释: 接口返回信息,详情参见CreateSignedUrlOutput。 err error 参数解释: 接口返回错误信息。 表6 CreateSignedUrlOutput 参数名称 参数类型 描述 SignedUrl string 参数解释: 带授权信息的URL。 默认取值: 无 ActualSignedRequestHeaders http.Header 参数解释: 通过带授权信息的URL发起请求时实际应携带的头域。 默认取值: 无
共100000条
提示

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