华为云用户手册

  • 删除单个对象 您可以通过ObsClient.DeleteObject删除单个对象。以下代码展示如何删除单个对象: // 初始化配置参数ObsConfig config = new ObsConfig();config.Endpoint = "https://your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);// 删除对象try{ DeleteObjectRequest request = new DeleteObjectRequest() { BucketName = "bucketname", ObjectKey = "objectname", }; DeleteObjectResponse response = client.DeleteObject(request); Console.WriteLine("Delete object response: {0}", response.StatusCode);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);}
  • 批量删除对象 您可以通过ObsClient.DeleteObjects批量删除对象。 每次最多删除1000个对象,并支持两种响应模式:详细(verbose)模式和简单(quiet)模式。 详细模式:返回的删除成功和删除失败的所有结果,默认模式。 简单模式:只返回的删除过程中出错的结果。 以下代码展示了如何进行批量删除对象: // 初始化配置参数ObsConfig config = new ObsConfig();config.Endpoint = "https://your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);// 批量删除对象try{ DeleteObjectsRequest request = new DeleteObjectsRequest(); request.BucketName = "bucketname"; request.Quiet = true; request.AddKey("objectname1"); request.AddKey("objectname2"); DeleteObjectsResponse response = client.DeleteObjects(request); Console.WriteLine("Delete objects response: {0}", response.StatusCode);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);}
  • 设置对象过期时间 以下代码展示了如何设置最新版本对象和历史版本对象的过期时间: // 初始化配置参数ObsConfig config = new ObsConfig();config.Endpoint = "https://your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);// 设置对象过期时间try{ SetBucketLifecycleRequest request = new SetBucketLifecycleRequest(); request.BucketName = "bucketname"; request.Configuration = new LifecycleConfiguration(); LifecycleRule rule1 = new LifecycleRule(); rule1.Id = "rule1"; rule1.Prefix = "prefix"; rule1.Status = RuleStatusEnum.Enabled; rule1.Expiration = new Expiration(); //指定满足前缀的对象创建60天后过期 rule1.Expiration.Days = 60; // 指定满足前缀的对象成为历史版本60天后过期 rule1.NoncurrentVersionExpiration = new NoncurrentVersionExpiration(); rule1.NoncurrentVersionExpiration.NoncurrentDays = 60; request.Configuration.Rules.Add(rule1); SetBucketLifecycleResponse response = client.SetBucketLifecycle(request); Console.WriteLine("Set bucket lifecycle response: {0}", response.StatusCode);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);} 调用设置生命周期规则后会将原有规则覆盖。
  • 设置跨域规则 开发过程中,您有任何问题可以在github上提交issue,或者在华为云 对象存储服务 论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.SetBucketCors设置桶的跨域规则,如果原规则存在则覆盖原规则。 本示例用于设置桶名为“bucketname”的跨域规则。 代码示例如下所示: // 初始化配置参数ObsConfig config = new ObsConfig();config.Endpoint = "https://your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);// 设置桶跨域规则try{ SetBucketCorsRequest request = new SetBucketCorsRequest(); request.BucketName = "bucketname"; request.Configuration = new CorsConfiguration(); CorsRule rule = new CorsRule(); rule.Id = "20170820"; // 指定允许跨域请求的来源 rule.AllowedOrigins.Add("http://www.a.com"); rule.AllowedOrigins.Add("http://www.b.com"); // 控制在OPTIONS预取指令中Access-Control-Request-Headers头中指定的header是否被允许使用 rule.AllowedHeaders.Add("x-obs-header"); // 指定允许的跨域请求方法(GET/PUT/DELETE/POST/HEAD) rule.AllowedMethods.Add(HttpVerb.HEAD); rule.AllowedMethods.Add(HttpVerb.PUT); rule.AllowedMethods.Add(HttpVerb.GET); rule.AllowedMethods.Add(HttpVerb.POST); rule.AllowedMethods.Add(HttpVerb.DELETE); // 指定允许用户从应用程序中访问的header rule.ExposeHeaders.Add("x-obs-test1"); rule.ExposeHeaders.Add("x-obs-test2"); rule.MaxAgeSeconds = 100; request.Configuration.Rules.Add(rule); SetBucketCorsResponse response = client.SetBucketCors(request); Console.WriteLine("Set bucket cors response: {0}", response.StatusCode);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);} AllowedOrigins、AllowedMethods、AllowedHeaders都能够最多支持一个“*”通配符。“*”表示对于所有的域来源、操作或者头域都满足。 父主题: 跨域资源共享
  • 图片处理 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 OBS为用户提供了稳定、安全、高效、易用、低成本的图片处理服务。当要下载的对象是图片文件时,您可以通过传入图片处理参数对图片文件进行图片剪切、图片缩放、图片水印、格式转换等处理。 更多关于图片处理的内容,参见图片处理特性指南。 以下代码展示了如何使用下载对象接口实现图片处理: // 初始化配置参数ObsConfig config = new ObsConfig();config.Endpoint = "https://your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);try{ GetObjectRequest request = new GetObjectRequest() { BucketName = "bucketname", ObjectKey = "objectname", // 对图片依次进行缩放、旋转 ImageProcess = "image/resize,m_fixed,w_100,h_100/rotate,90", }; GetObjectResponse response = client.GetObject(request); Console.WriteLine("Get object response: {0}", response.StatusCode);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);} 使用GetObjectRequest.ImageProcess指定图片处理参数。 图片处理参数支持级联处理,可对图片文件依次实施多条命令。 父主题: 下载对象
  • 跨域资源共享简介 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 跨域是指不同 域名 之间相互访问。跨域访问是浏览器出于安全考虑而设置的一个限制,即同源策略。 由于JavaScript同源策略的限制,A域名下的JavaScript无法操作B域名或C域名下的对象。 同协议、同域名(或IP)、以及同端口视为同一个域。两个页面的协议、域名和端口(如果指定了端口)相同,则视为同源。 跨域资源共享(CORS)允许Web端的应用程序访问不属于本域的资源。OBS提供接口方便开发者控制跨域访问的权限。 更多关于跨域资源共享的内容请参考跨域资源访问。 父主题: 跨域资源共享
  • 获取对象属性 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.GetObjectMetadata来获取对象属性,包括对象最后修改时间、版本号、对象自定义元数据等信息。以下代码展示了如何获取对象属性: // 初始化配置参数ObsConfig config = new ObsConfig();config.Endpoint = "https://your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);try{ GetObjectMetadataRequest request = new GetObjectMetadataRequest(); // 指定存储桶名称 request.BucketName = "bucketname"; // 指定对象,此处以 example/objectname 为例 request.ObjectKey = "example/objectname"; // 获取对象元数据 using (GetObjectMetadataResponse response = client.GetObjectMetadata(request)) { Console.WriteLine("Get object metadata response: {0}", response.StatusCode); // 获取对象的ETag值 Console.WriteLine("Object etag {0}: ", response.ETag); // 获取对象的版本号 Console.WriteLine("Object versionId {0}: ", response.VersionId); // 获取对象数据的长度,单位是字节 Console.WriteLine("Object contentLength {0}: ", response.ContentLength); }}catch (ObsException ex){ Console.WriteLine("Message: {0}", ex.Message);} 由于 HTTP 编码规范限制,无法发送非 ASCII 码字符,SDK 会在接收响应时使用 url 解码规则解码响应头中的信息。如您的元数据存储的 content-disposition 为“attachment; filename="%E4%B8%AD%E6%96%87.txt"”,则 SDK 获取结果为“attachment; filename="中文.txt"”。 父主题: 管理对象
  • 删除桶标签 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.DeleteBucketTagging删除桶标签。以下代码展示了如何删除桶标签: // 初始化配置参数ObsConfig config = new ObsConfig();config.Endpoint = "https://your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);// 删除桶标签try{ DeleteBucketTaggingRequest request = new DeleteBucketTaggingRequest { BucketName = "bucketname", }; DeleteBucketTaggingResponse response = client.DeleteBucketTagging(request); Console.WriteLine("Delete bucket tag response: {0}", response.StatusCode);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);} 父主题: 标签管理
  • 查看桶日志配置 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.GetBucketLogging查看桶日志配置。 本示例用于查看桶名为“bucketname”的日志配置。 代码示例如下所示: // 初始化配置参数ObsConfig config = new ObsConfig();config.Endpoint = "https://your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);// 查看桶日志try{ GetBucketLoggingRequest request = new GetBucketLoggingRequest { BucketName = "bucketname", }; GetBucketLoggingResponse response = client.GetBucketLogging(request); Console.WriteLine("TargetBucketName is : " + response.Configuration.TargetBucketName); Console.WriteLine("TargetPrefix is : " + response.Configuration.TargetPrefix); Console.WriteLine("Get bucket logging response: {0}", response.StatusCode);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);} 查看桶日志过程中返回的错误码含义、问题原因及处理措施可参考OBS服务端错误码。 父主题: 设置访问日志
  • 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,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 下载对象成功后会返回对象的自定义元数据。 本示例用于获取桶名为“bucketname”,名称为“objectname”的对象自定义元数据。 代码示例如下所示: // 初始化配置参数ObsConfig config = new ObsConfig();config.Endpoint = "https://your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);// 下载对象try{ GetObjectRequest request = new GetObjectRequest() { BucketName = "bucketname", ObjectKey = "objectname", }; using (GetObjectResponse response = client.GetObject(request)) { //获取对象自定义元数据 foreach (string key in response.Metadata.Keys) { Console.WriteLine("key is :" + key + " value is: " + response.Metadata[key]); } string dest = "savepath"; if (!File.Exists(dest)) { response.WriteResponseStreamToFile(dest); } Console.WriteLine("Get object response: {0}", response.StatusCode); }}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);} 父主题: 下载对象
  • 静态网站托管简介 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 静态网站通常仅包含静态网页,以及可能包含部分可在客户端运行的脚本,如JavaScript、Flash等。相比之下,动态网站则依赖于服务器端处理脚本,包括PHP、JSP或ASP.Net等。 您可以将静态网站文件上传至OBS的桶中作为对象,并对这些对象赋予公共读权限,然后将该桶配置成静态网站托管模式,以实现在OBS上托管静态网站的目的。 第三方用户在访问您网站的时候,实际上是在访问OBS的桶中的对象。 在使用静态网站托管功能时,OBS还支持配置请求重定向,通过重定向配置您可以将特定的请求或所有请求实施重定向。 更多关于静态网站托管的内容请参考静态网站托管。 父主题: 静态网站托管
  • 关闭桶日志 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 关闭桶日志功能实际上就是调用ObsClient.SetBucketLogging将日志配置清空。 本示例用于关闭桶名为“bucketname”的日志配置。 代码示例如下所示: // 初始化配置参数ObsConfig config = new ObsConfig();config.Endpoint = "https://your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);try{ SetBucketLoggingRequest putrequest = new SetBucketLoggingRequest(); putrequest.BucketName = "bucketname";//源桶 putrequest.Configuration = new LoggingConfiguration(); SetBucketLoggingResponse putresponse = client.SetBucketLogging(putrequest); Console.WriteLine("Delete bucket logging response: {0}", putresponse.StatusCode);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);} 关闭桶日志过程中返回的错误码含义、问题原因及处理措施可参考OBS服务端错误码。 父主题: 设置访问日志
  • 简单列举 以下代码展示如何简单列举对象,最多返回1000个对象: // 初始化配置参数ObsConfig config = new ObsConfig();config.Endpoint = "https://your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);// 简单列举try{ ListObjectsRequest request = new ListObjectsRequest(); request.BucketName = "bucketname"; ListObjectsResponse response = client.ListObjects(request); foreach (ObsObject entry in response.ObsObjects) { Console.WriteLine("key = {0} size = {1}", entry.ObjectKey, entry.Size); }}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);} 每次至多返回1000个对象,如果指定桶包含的对象数量大于1000,则返回结果中ListObjectsResponse.IsTruncated为true表明本次没有返回全部对象,并可通过ListObjectsResponse.NextMarker获取下次列举的起始位置。
  • 指定前缀列举 以下代码展示如何指定前缀列举对象: // 初始化配置参数ObsConfig config = new ObsConfig();config.Endpoint = "https://your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);// 指定前缀列举try{ ListObjectsRequest request = new ListObjectsRequest(); request.BucketName = "bucketname"; //指定前缀 request.Prefix = "prefix"; ; ListObjectsResponse response = client.ListObjects(request); foreach (ObsObject entry in response.ObsObjects) { Console.WriteLine("key = {0} size = {1}", entry.ObjectKey, entry.Size); }}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);}
  • 指定起始位置列举 以下代码展示如何指定起始位置列举对象: // 初始化配置参数ObsConfig config = new ObsConfig();config.Endpoint = "https://your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);// 指定起始位置列举try{ ListObjectsRequest request = new ListObjectsRequest(); request.BucketName = "bucketname"; //指定列举的起始位置 request.Marker = "marker"; ListObjectsResponse response = client.ListObjects(request); foreach (ObsObject entry in response.ObsObjects) { Console.WriteLine("key = {0} size = {1}", entry.ObjectKey, entry.Size); }}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);}
  • 列举文件夹中的所有对象 OBS本身是没有文件夹的概念的,桶中存储的元素只有对象。文件夹对象实际上是一个大小为0且对象名以“/”结尾的对象,将这个文件夹对象名作为前缀,即可模拟列举文件夹中对象的功能。以下代码展示如何列举文件夹中的对象: // 初始化配置参数ObsConfig config = new ObsConfig();config.Endpoint = "https://your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);//列举文件夹中的所有对象try{ ListObjectsRequest request = new ListObjectsRequest(); ListObjectsResponse response; request.BucketName = "bucketname"; request.MaxKeys = 1000; // 设置文件夹对象名"dir/"为前缀 request.Prefix = "dir/"; do { response = client.ListObjects(request); foreach (ObsObject entry in response.ObsObjects) { Console.WriteLine("key = {0} size = {1}", entry.ObjectKey, entry.Size); } request.Marker = response.NextMarker; } while (response.IsTruncated);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);}
  • 查看桶多版本状态 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.GetBucketVersioning查看桶的多版本状态。 本示例用于获取桶名为“bucketname”里的多版本状态。 代码示例如下所示: // 初始化配置参数ObsConfig config = new ObsConfig();config.Endpoint = "https://your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);// 查看桶的多版本状态try{ GetBucketVersioningRequest request = new GetBucketVersioningRequest(); request.BucketName = "bucketname"; GetBucketVersioningResponse response = client.GetBucketVersioning(request); Console.WriteLine("Get bucket version response: {0}", response.StatusCode); Console.WriteLine("Status: {0}", response.Configuration.Status);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);} 获取桶多版本状态过程中返回的错误码含义、问题原因及处理措施可参考OBS服务端错误码。 父主题: 多版本控制
  • 指定数目列举 以下代码展示如何指定数目列举对象: // 初始化配置参数ObsConfig config = new ObsConfig();config.Endpoint = "https://your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);// 指定数目列举try{ ListObjectsRequest request = new ListObjectsRequest(); request.BucketName = "bucketname"; // 只列举100个对象 request.MaxKeys = 100; ListObjectsResponse response = client.ListObjects(request); foreach (ObsObject entry in response.ObsObjects) { Console.WriteLine("key = {0} size = {1}", entry.ObjectKey, entry.Size); }}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);}
  • 分页列举全部对象 以下代码展示分页列举全部对象: // 初始化配置参数ObsConfig config = new ObsConfig();config.Endpoint = "https://your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);//分页列举全部对象try{ ListObjectsRequest request = new ListObjectsRequest(); ListObjectsResponse response; request.BucketName = "bucketname"; request.MaxKeys = 100; do { response = client.ListObjects(request); foreach (ObsObject entry in response.ObsObjects) { Console.WriteLine("key = {0} size = {1}", entry.ObjectKey, entry.Size); } request.Marker = response.NextMarker; } while (response.IsTruncated);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);}
  • 多版本控制简介 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 OBS支持保存一个对象的多个版本,您可以利用多版本控制,在一个桶中保留多个版本的对象。 多版本功能可以方便地检索和还原各个版本,在意外操作或应用程序故障时快速恢复数据。 在默认情况下,OBS中新创建的桶不会开启多版本功能,向同一个桶上传同名的对象时,新上传的对象将覆盖原有的对象。 更多关于多版本控制的内容请参见多版本控制。 父主题: 多版本控制
  • 设置对象生命周期 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 上传对象或者初始化分段上传任务时,您可以直接指定对象的过期时间。示例代码如下: // 初始化配置参数ObsConfig config = new ObsConfig();config.Endpoint = "https://your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);try{ PutObjectRequest request = new PutObjectRequest() { BucketName = "bucketname", ObjectKey = "objectname", FilePath = "localfile",// 上传的本地文件路径,需要指定到具体的文件名 Expires = 30 // 上传对象时,设置对象30天后过期 }; PutObjectResponse response = client.PutObject(request); Console.WriteLine("put object response: {0}", response.StatusCode); InitiateMultipartUploadRequest initiateRequest = new InitiateMultipartUploadRequest { BucketName = "bucketname", ObjectKey = "objectname", // 初始化分段上传任务时,设置合并段后生成的对象60天后过期 Expires = 60 }; InitiateMultipartUploadResponse initResponse = client.InitiateMultipartUpload(initiateRequest); Console.WriteLine("InitiateMultipartUpload status: {0}", initResponse.StatusCode); Console.WriteLine("InitiateMultipartUpload UploadId: {0}", initResponse.UploadId);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);} 上述方式仅支持设置以天为单位的对象过期时间,过期后的对象会被OBS服务端自动清理。 上述方式设置的对象过期时间,其优先级高于桶生命周期规则。 父主题: 上传对象
  • 设置桶标签 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.SetBucketTagging设置桶标签。以下代码展示了如何设置桶标签: // 初始化配置参数ObsConfig config = new ObsConfig();config.Endpoint = "https://your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);// 设置桶标签try{ SetBucketTaggingRequest request = new SetBucketTaggingRequest(); request.BucketName = "bucketname"; Tag tag1 = new Tag(); tag1.Key = "tag1"; tag1.Value = "value1"; Tag tag2 = new Tag(); tag2.Key = "tag2"; tag2.Value = "value2"; request.Tags.Add(tag2); request.Tags.Add(tag1); SetBucketTaggingResponse response = client.SetBucketTagging(request); Console.WriteLine("Set bucket tag response: {0}", response.StatusCode);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);} 每个桶支持最多10个标签。 标签的Key和Value支持Unicode。 父主题: 标签管理
  • 加密说明 开发过程中,您有任何问题可以在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 父主题: 服务端加密
  • 设置对象MD5值 您可以通过PutObjectRequest.ContentMd5来设置对象MD5值。以下代码展示如何设置对象MD5值: // 初始化配置参数ObsConfig config = new ObsConfig();config.Endpoint = "https://your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);// 上传文件try{ PutObjectRequest request = new PutObjectRequest { BucketName = "bucketname", ObjectKey = "objectname", FilePath = "localfile",//上传的本地文件路径,需要指定到具体的文件名 ContentMd5 = "your md5 which should be encoded by base64" }; PutObjectResponse response = client.PutObject(request); Console.WriteLine("put object response: {0}", response.StatusCode);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);}
  • 追加上传 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 追加上传可实现对同一个对象追加数据内容的功能。您可以通过ObsClient.AppendObject进行追加上传。示例代码如下: // 初始化配置参数ObsConfig config = new ObsConfig();config.Endpoint = "https://your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);try{ // 第一次追加上传 AppendObjectRequest request = new AppendObjectRequest(); request.BucketName = "bucketname"; request.ObjectKey = "objectkey"; request.InputStream = new MemoryStream(Encoding.UTF8.GetBytes("Hello OBS")); AppendObjectResponse response = client.AppendObject(request); // 第二次追加上传 request.Position = response.NextPosition; request.InputStream = new MemoryStream(Encoding.UTF8.GetBytes("Hello OBS Again")); response = client.AppendObject(request); Console.WriteLine("NextPosition:{0}", response.NextPosition); Console.WriteLine("ETag:{0}", response.ETag); // 通过获取对象属性接口获取下次追加上传的位置 GetObjectMetadataResponse metadataResponse = client.GetObjectMetadata("bucketname", "objectkey"); Console.WriteLine("NextPosition from metadata:{0}", metadataResponse.NextPosition);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);} ObsClient.PutObject上传的对象可覆盖ObsClient.AppendObject上传的对象,覆盖后对象变为普通对象,不可再进行追加上传。 第一次调用追加上传时,如果已存在同名的普通对象,则会抛出异常(HTTP状态码为409)。 每次追加上传返回的ETag是当次追加数据内容的ETag,不是完整对象的ETag。 单次追加上传的内容不能超过5GB,且最多支持10000次追加上传。 追加上传成功后,可通过AppendObjectResponse.NextPosition获取下次追加上传的位置;或者通过ObsClient.GetObjectMetadata接口获取下次追加上传的位置。 父主题: 上传对象
  • 设置对象MIME类型 您可以通过PutObjectRequest.ContentType来设置对象MIME类型。以下代码展示如何设置对象MIME类型: // 初始化配置参数ObsConfig config = new ObsConfig();config.Endpoint = "https://your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);// 上传文件try{ PutObjectRequest request = new PutObjectRequest() { BucketName = "bucketname", ObjectKey = "objectname", FilePath = "localfile",//上传的本地文件路径,需要指定到具体的文件名 ContentType = "image/jpeg",//对象MIME类型 }; PutObjectResponse response = client.PutObject(request); Console.WriteLine("put object response: {0}", response.StatusCode);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);}
  • 设置对象存储类型 您可以通过PutObjectRequest.StorageClass来设置对象存储类型。以下代码展示如何设置对象存储类型: // 初始化配置参数ObsConfig config = new ObsConfig();config.Endpoint = "https://your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);// 上传文件try{ PutObjectRequest request = new PutObjectRequest { BucketName = "bucketname", ObjectKey = "objectname", FilePath ="localfile",//上传的本地文件路径,需要指定到具体的文件名 StorageClass = StorageClassEnum.Warm,//对象存储类型 }; PutObjectResponse response = client.PutObject(request); Console.WriteLine("put object response: {0}", response.StatusCode);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);}
  • 设置对象自定义元数据 您可以通过PutObjectRequest.Metadata来设置对象自定义元数据。以下代码展示如何设置对象自定义元数据: // 初始化配置参数ObsConfig config = new ObsConfig();config.Endpoint = "https://your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);// 上传文件try{ PutObjectRequest request = new PutObjectRequest { BucketName = "bucketname", ObjectKey = "objectname", FilePath = "localfile",//上传的本地文件路径,需要指定到具体的文件名 }; request.Metadata.Add("meta1", "value1"); PutObjectResponse response = client.PutObject(request); Console.WriteLine("put object response: {0}", response.StatusCode);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);}
  • 开启桶日志 以下代码展示了如何开启桶日志: // 初始化配置参数ObsConfig config = new ObsConfig();config.Endpoint = "https://your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlstring accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine);string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine);// 创建ObsClient实例ObsClient client = new ObsClient(accessKey, secretKey, config);try{ // 设置源桶logging SetBucketLoggingRequest putrequest = new SetBucketLoggingRequest(); putrequest.BucketName = "bucketname"; putrequest.Configuration = new LoggingConfiguration(); putrequest.Configuration.TargetBucketName = "targetbucketname"; putrequest.Configuration.TargetPrefix = "access-log."; putrequest.Configuration.Agency= "your agency"; SetBucketLoggingResponse putresponse = client.SetBucketLogging(putrequest); Console.WriteLine("Set bucket logging response: {0}", putresponse.StatusCode);}catch (ObsException ex){ Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage);}
共100000条