云服务器内容精选

  • 功能说明 OBS客户端支持通过访问密钥、请求方法类型、请求参数等信息生成一个在Query参数中携带鉴权信息的URL,可将该URL提供给其他用户进行临时访问。在生成URL时,您需要指定URL的有效期来限制访客用户的访问时长。 如果您想授予其他用户对桶或对象临时进行其他操作的权限(例如上传或下载对象),则需要生成带对应请求的URL后(例如使用生成PUT请求的URL上传对象),将该URL提供给其他用户。 如果遇到跨域报错、签名不匹配问题,请参考以下步骤排查问题: 未配置跨域,需要在控制台配置CORS规则,请参考配置桶允许跨域请求。 签名计算问题,请参考URL中携带签名排查签名参数是否正确;比如上传对象功能,后端将Content-Type参与计算签名生成授权URL,但是前端使用授权URL时没有设置Content-Type字段或者传入错误的值,此时会出现跨域错误。解决方案为:Content-Type字段前后端保持一致。 不支持通过 CDN加速 后的 域名 生成临时访问URL。
  • 列举对象 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); }]
  • 接口约束 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。 如果遇到跨域报错、签名不匹配问题,请参考以下步骤排查问题: 未配置跨域,需要在控制台配置CORS规则,请参考配置桶允许跨域请求。 签名计算问题,请参考URL中携带签名排查签名参数是否正确;比如上传对象功能,后端将Content-Type参与计算签名生成授权URL,但是前端使用授权URL时没有设置Content-Type字段或者传入错误的值,此时会出现跨域错误。解决方案为:Content-Type字段前后端保持一致。
  • 请求参数 表1 请求参数列表 参数名称 参数类型 是否必选 描述 Method HttpMethodType 必选 参数解释: HTTP方法类型,详情参见HttpMethodType。 Bucket string 必选 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 取值范围: 长度为3~63个字符。 默认取值: 无 Key string 必选 参数解释: 对象名。对象名是对象在存储桶中的唯一标识。对象名是对象在桶中的完整路径,路径中不包含桶名。 例如,您对象的访问地址为examplebucket.obs.cn-north-4.myhuaweicloud.com/folder/test.txt 中,对象名为folder/test.txt。 约束限制: 无 取值范围: 长度大于0且不超过1024的字符串。 默认取值: 无 SpecialParam SpecialParam 可选 参数解释: 要访问的子资源。 约束限制: 无 取值范围: 详情参见SpecialParam。 默认取值: 无 Expires number 可选 参数解释: 带授权信息的URL的过期时间。 约束限制: 无 取值范围: 0~(231-1),单位:秒。 默认取值: 300 Headers object 可选 参数解释: 请求中携带的头域。 约束限制: 无 取值范围: 无 默认取值: 无 QueryParams object 可选 参数解释: 请求中携带的查询参数。 约束限制: 无 取值范围: 无 默认取值: 无 表2 HttpMethodType 常量值 说明 GET HTTP GET请求。 POST HTTP POST请求。 PUT HTTP PUT请求。 DELETE HTTP DELETE请求。 HEAD HTTP HEAD请求。 OPTIONS HTTP OPTIONS请求。 表3 SpecialParam 常量值 适用接口 storagePolicy 设置/获取桶存储类型。 quota 设置/获取桶配额。 storageinfo 获取桶存量信息。 location 获取桶区域位置。 acl 设置/获取桶ACL、设置/获取对象ACL。 policy 设置/获取/删除桶策略。 cors 设置/获取/删除桶CORS配置。 versioning 设置/获取桶多版本状态。 website 设置/获取/删除桶Website配置。 logging 设置/获取桶日志管理配置。 lifecycle 设置/获取/删除桶生命周期配置。 notification 设置/获取桶时间通知配置。 tagging 设置/获取/删除桶标签。 append 追加上传对象 delete 批量删除对象。 versions 列举桶内多版本对象。 uploads 列举桶内分段上传任务、初始化分段上传任务。 restore 恢复归档存储或深度归档存储对象。
  • 什么是临时授权访问 开发过程中,您有任何问题可以在github上提交issue,或者在华为云 对象存储服务 论坛中发帖求助。 临时授权访问是指通过访问密钥、请求方法类型、请求参数等信息生成一个临时访问权限的URL,这个URL中会包含鉴权信息,您可以使用该URL进行访问OBS服务进行特定操作。在生成URL时,您需要指定URL的有效期。生成临时授权访问的URL是通过设置结构体temp_auth_configure来实现的。 temp_auth_configure结构体存在于obs_options结构体中。该方法适用于每个C SDK接口。 参数 作用 SDK中对应的结构体 expires 生成的临时URL的有效期 obs_options. temp_auth_configure temp_auth_callback 回调函数用于返回生成的临时URL callback_data 回调数据 如果遇到跨域报错、签名不匹配问题,请参考以下步骤排查问题: 未配置跨域,需要在控制台配置CORS规则,请参考配置桶允许跨域请求。 签名计算问题,请参考URL中携带签名排查签名参数是否正确;比如上传对象功能,后端将Content-Type参与计算签名生成授权URL,但是前端使用授权URL时没有设置Content-Type字段或者传入错误的值,此时会出现跨域错误。解决方案为:Content-Type字段前后端保持一致。 父主题: 临时授权访问