云服务器内容精选

  • 示例程序 OBS .NET SDK提供了丰富的示例程序,方便用户参考或直接使用。您可以从OBS .NET SDK开发包的demo文件夹中获取示例程序。 示例包括以下内容: 示例代码 说明 BucketOperationsSample 展示了桶相关接口的用法 ObjectOperationsSample 展示了对象相关接口的用法 TemporarySignatureSample 展示了使用URL进行授权访问的用法
  • 重写对象属性 以下代码展示了如何在复制对象时重写对象属性: // 初始化配置参数 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.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 重写对象属性 try { CopyObjectRequest request = new CopyObjectRequest(); request.SourceBucketName = "sourcebucketname"; request.SourceObjectKey = "sourceobjectname"; request.BucketName = "destbucketname"; request.ObjectKey = "destobjectName"; request.StorageClass = StorageClassEnum.Warm; request.ContentType = "image/jpeg"; request.MetadataDirective = MetadataDirectiveEnum.Replace; CopyObjectResponse response = client.CopyObject(request); Console.WriteLine("Copy 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.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 重写对象访问权限 try { CopyObjectRequest request = new CopyObjectRequest(); request.SourceBucketName = "sourcebucketname"; request.SourceObjectKey = "sourceobjectname"; request.BucketName = "destbucketname"; request.ObjectKey = "destobjectName"; request.CannedAcl = CannedAclEnum.PublicRead; CopyObjectResponse response = client.CopyObject(request); Console.WriteLine("Copy object response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 限定条件复制 复制对象时,可以指定一个或多个限定条件,满足限定条件时则进行复制,否则抛出异常,复制对象失败。 您可以使用的限定条件如下: 参数 作用 OBS .NET SDK对应属性 Copy-Source-If-Modified-Since 如果源对象在指定的时间后有修改,则进行复制,否则抛出异常。 CopyObjectRequest.IfModifiedSince Copy-Source-If-Unmodified-Since 如果源对象在指定的时间后没有修改,则进行复制,否则抛出异常。 CopyObjectRequest.IfUnmodifiedSince Copy-Source-If-Match 如果源对象的ETag值与该参数值相同,则进行复制,否则抛出异常。 CopyObjectRequest.IfMatch Copy-Source-If-None-Match 如果源对象的ETag值与该参数值不相同,则进行复制,否则抛出异常。 CopyObjectRequest.IfNoneMatch
  • 简单复制 以下代码展示了如何进行简单复制: // 初始化配置参数 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.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 复制对象 try { CopyObjectRequest request = new CopyObjectRequest(); request.SourceBucketName = "sourcebucketname"; request.SourceObjectKey = "sourceobjectname"; request.BucketName = "destbucketname"; request.ObjectKey = "destobjectName"; CopyObjectResponse response = client.CopyObject(request); Console.WriteLine("Copy object response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 其他使用前须知 请确认您已经熟悉OBS的基本概念,如桶(Bucket)、对象(Object)、访问密钥(AK和SK)等。 您可以先参考OBS客户端通用示例,了解OBS .NET SDK接口调用的通用方式。 使用OBS客户端进行接口调用操作完成后,没有异常抛出,则表明返回值有效;如果抛出异常,则说明操作失败,此时应从SDK自定义异常实例中获取错误信息。 使用OBS客户端进行接口调用成功后,均会返回包含响应头信息的SDK公共响应头实例。
  • 变更说明 如表1所示,本节将为您展示.NET SDK的版本变更情况和兼容性说明。 表1 .NET SDK版本变更及兼容性说明 版本 变更类型 说明 是否兼容 v3.22.11.4 - 在NuGet中提供.NET Framework版本。 是 v3.22.11.3 - 在NuGet中提供.NET Core版本。 是 v3.22.3 新特性 支持Content-Disposition标准元数据接口。 是 低于v3.22.3(停止配套,EOM) - 版本过低,已停止维护,建议及时升级版本。 -
  • 如何解决进程偶现卡死的问题? 在调用.NET SDK方法时,如果遇到该问题,可以将方法调用加上using方式,示例如下。 // 初始化配置参数 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.html string 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); } 父主题: 常见问题
  • SDK自定义异常 SDK自定义异常(ObsException)是由ObsClient统一抛出的异常。通常是OBS服务端错误,包含OBS错误码、错误信息等,便于用户定位问题,并做出适当的处理。 ObsException通常包含以下错误信息: ObsException.StatusCode:HTTP状态码。 ObsException.ErrorCode:OBS服务端错误码。 ObsException.ErrorMessage:OBS服务端错误描述。 ObsException.RequestId:OBS服务端返回的请求ID。 ObsException.HostId:请求的服务端ID。 父主题: 异常处理
  • 分析方法 分析定位问题或查看运行状态时,可根据日期查找到相应的日志文件,再通过日志文件的日志记录进行分析。 分析的具体步骤如下: 查找日志信息。 根据错误发生时间及操作的相关信息,日志文件目录下查找相关的接口日志,日志示例如下。 2018-05-23 21:55:02,103 [9] INFO - ListObjectsRequest begin. 2018-05-23 21:55:02,526 [9] INFO - Send http request end, cost 385 ms 2018-05-23 21:55:02,536 [9] ERROR - Rethrowing as a ObsException error in PerformRequest Request error, StatusCode:404, ErrorCode:NoSuchBucket, ErrorMessage:The specified bucket does not exist, RequestId:0403000001638D4819383F2D4A2B2C50, HostId:N8OMsHew7O/LMHua8qpm49geWphVJI6l2mnnzUIYwQwHAuzJw/kmV+O4iIcf0GRR 2018-05-23 21:55:02,548 [9] ERROR - ListObjectsRequest exception code: NoSuchBucket, with message: Request error 2018-05-23 21:55:02,553 [9] INFO - ListObjectsRequest end, cost 449 ms 根据错误日志信息分析错误原因。 例如,从日志文件中获取到错误码"NoSuchBucket",通过查看对照OBS服务端错误码,得知实际的错误信息为“指定bucket不存在”。
  • OBS服务端错误码 在向OBS服务端发出请求后,如果遇到错误,会在响应中包含响应的错误码描述错误信息。详细的错误码及其对应的描述和HTTP状态码见下表: 错误码 描述 HTTP状态码 AccessDenied 拒绝访问。 403 Forbidden AccessForbidden 权限不足。 403 Forbidden AccountProblem 用户的账户出现异常(过期、冻结等),不能成功地完成操作。 403 Forbidden AllAccessDisabled 用户无权限执行某操作。 403 Forbidden AmbiguousGrantByEmailAddress 用户提供的Email地址关联的账户超过了1个。 400 Bad Request BadDigest 客户端指定的对象内容的MD5值与系统接收到的内容MD5值不一致。 400 Bad Request BadDomainName 域名 不合法。 400 Bad Request BadRequest 请求参数不合法。 400 Bad Request BucketAlreadyExists 请求的桶名已经存在。桶的命名空间是系统中所有用户共用的,选择一个不同的桶名再重试一次。 409 Conflict BucketAlreadyOwnedByYou 发起该请求的用户已经创建过了这个名字的桶,并拥有这个桶。 409 Conflict BucketNotEmpty 用户尝试删除的桶不为空。 409 Conflict CredentialsNotSupported 该请求不支持证书验证。 400 Bad Request CustomDomainAreadyExist 配置了已存在的域。 400 Bad Request CustomDomainNotExist 操作的域不存在。 400 Bad Request DeregisterUserId 用户已经注销。 403 Forbidden EntityTooSmall 用户试图上传的对象大小小于系统允许的最小大小。 400 Bad Request EntityTooLarge 用户试图上传的对象大小超过了系统允许的最大大小。 400 Bad Request FrozenUserId 用户被冻结。 403 Forbidden IllegalVersioningConfiguration Exception 请求中的版本配置无效。 400 Bad Request IllegalLocationConstraintException 配置了与所在Region不匹配的区域限制。 400 Bad Request InArrearOrInsufficientBalance 用户欠费或余额不足而没有权限进行某种操作。 403 Forbidden IncompleteBody 请求体不完整。 400 Bad Request IncorrectNumberOfFilesInPost Request 每个POST请求都需要带一个上传的文件。 400 Bad Request InlineDataTooLarge Inline Data超过了允许的最大长度。 400 Bad Request InsufficientStorageSpace 存储空间不足。 403 Forbidden InternalError 系统遇到内部错误,请重试。 500 Internal Server Error InvalidAccessKeyId 系统记录中不存在客户提供的Access Key Id。 403 Forbidden InvalidAddressingHeader 用户必须指定匿名角色。 N/A InvalidArgument 无效的参数。 400 Bad Request InvalidBucketName 请求中指定的桶名无效。 400 Bad Request InvalidBucket 请求访问的桶已不存在。 400 Bad Request InvalidBucketState 无效的桶状态。 409 Conflict InvalidBucketStoragePolicy 修改桶策略时,提供的新策略不合法。 400 Bad Request InvalidDigest HTTP头中指定的Content-MD5值无效。 400 Bad Request InvalidEncryptionAlgorithmError 错误的加密算法。 400 Bad Request InvalidLocationConstraint 创建桶时,指定的location不合法。 400 Bad Request InvalidPart 一个或多个指定的段无法找到。这些段可能没有上传,或者指定的entity tag与段的entity tag不一致。 400 Bad Request InvalidPartOrder 段列表的顺序不是升序,段列表必须按段号升序排列。 400 Bad Request InvalidPayer 所有对这个对象的访问已经无效了。 403 Forbidden InvalidPolicyDocument 表单中的内容与策略文档中指定的条件不一致。 400 Bad Request InvalidRange 请求的range不可获得。 416 Client Requested Range Not Satisfiable InvalidRedirectLocation 无效的重定向地址。 400 Bad Request InvalidRequest 无效请求。 400 Bad Request InvalidRequestBody POST请求体无效。 400 Bad Request InvalidSecurity 提供的安全证书无效。 403 Forbidden InvalidStorageClass 用户指定的Storage Class无效。 400 Bad Request InvalidTargetBucketForLogging delivery group对目标桶无ACL权限。 400 Bad Request InvalidURI 无法解析指定的URI。 400 Bad Request KeyTooLong 提供的Key过长。 400 Bad Request MalformedACLError 提供的XML格式错误,或者不符合要求的格式。 400 Bad Request MalformedError 请求中携带的XML格式不正确。 400 Bad Request MalformedLoggingStatus Logging的XML格式不正确。 400 Bad Request MalformedPolicy Bucket policy检查不通过。 400 Bad Request MalformedPOSTRequest POST请求的请求体不是结构化良好的多段或形式化数据。 400 Bad Request MalformedQuotaError Quota的XML格式不正确。 400 Bad Request MalformedXML 当用户发送了一个配置项的错误格式的XML会出现这样的错误。错误消息是:“The XML you provided was not well-formed or did not validate against our published schema.”。 400 Bad Request MaxMessageLengthExceeded 请求消息过长。 400 Bad Request MaxPostPreDataLengthExceeded Error 在上传文件前面的POST请求域过大。 400 Bad Request MetadataTooLarge 元数据消息头超过了允许的最大元数据大小。 400 Bad Request MethodNotAllowed 指定的方法不允许操作在请求的资源上。 对应返回的Message为:Specified method is not supported. 405 Method Not Allowed MissingContentLength 必须要提供HTTP消息头中的Content-Length字段。 411 Length Required MissingRegion 请求中缺少Region信息,且系统无默认Region。 400 Bad Request MissingRequestBodyError 当用户发送一个空的XML文档作为请求时会发生。错误消息是:“Request body is empty.”。 400 Bad Request MissingRequiredHeader 请求中缺少必要的头域。 400 Bad Request MissingSecurityHeader 请求缺少一个必须的头。 400 Bad Request NoSuchBucket 指定的桶不存在。 404 Not Found NoSuchBucketPolicy 桶policy不存在。 404 Not Found NoSuchCORSConfiguration CORS配置不存在。 404 Not Found NoSuchCustomDomain 请求的用户域不存在。 404 Not Found NoSuchKey 指定的Key不存在。 404 Not Found NoSuchLifecycleConfiguration 请求的LifeCycle不存在。 404 Not Found NoSuchPolicy 给定的policy名字不存在。 404 Not Found NoSuchUpload 指定的多段上传不存在。Upload ID不存在,或者多段上传已经终止或完成。 404 Not Found NoSuchVersion 请求中指定的version ID与现存的所有版本都不匹配。 404 Not Found NoSuchWebsiteConfiguration 请求的Website不存在。 404 Not Found NotImplemented 用户提供的消息头功能上还没有实现。 501 Not Implemented NotSignedUp 账户未在系统中注册,必须先在系统中注册了才能使用该账户。 403 Forbidden OperationAborted 另外一个冲突的操作当前正作用在这个资源上,请重试。 409 Conflict PermanentRedirect 尝试访问的桶必须使用指定的节点,请将以后的请求发送到这个节点。 301 Moved Permanently PreconditionFailed 用户指定的先决条件中至少有一项没有包含。 412 Precondition Failed Redirect 临时重定向。 307 Moved Temporarily RequestIsNotMultiPartContent 桶POST必须是闭式的多段/表单数据。 400 Bad Request RequestTimeout 用户与Server之间的socket连接在超时时间内没有进行读写操作。 400 Bad Request RequestTimeTooSkewed 请求的时间与服务器的时间相差太大。 403 Forbidden RequestTorrentOfBucketError 不允许请求桶的torrent文件。 400 Bad Request ServiceNotImplemented 请求的方法服务端没有实现。 501 Not Implemented ServiceNotSupported 请求的方法服务端不支持。 409 Conflict ServiceUnavailable 服务器过载或者内部错误异常。 503 Service Unavailable SignatureDoesNotMatch 请求中带的签名与系统计算得到的签名不一致。检查您的访问密钥(AK和SK)和签名计算方法。 403 Forbidden SlowDown 请降低请求频率。 503 Service Unavailable System Capacity Not enough 系统空间不足异常。 403 Forbidden TooManyCustomDomains 配置了过多的用户域。 400 Bad Request TemporaryRedirect 当DNS更新时,请求将被重定向到桶。 307 Moved Temporarily TooManyBuckets 用户拥有的桶的数量达到了系统的上限,并且请求试图创建一个新桶。 400 Bad Request TooManyObjectCopied 用户单个对象被拷贝的数量超过系统上限。 400 Bad Request TooManyWrongSignature 因高频错误请求被拒绝服务。 400 Bad Request UnexpectedContent 该请求不支持带内容字段。 400 Bad Request UnresolvableGrantByEmailAddress 用户提供的Email与记录中任何账户的都不匹配。 400 Bad Request UserKeyMustBeSpecified 请求中缺少用户的AK信息。 400 Bad Request WebsiteRedirect Website请求缺少bucketName。 301 Moved Permanently KMS.DisabledException SSE-KMS加密方式下,主密钥被禁用。 400 Bad Request KMS.NotFoundException SSE-KMS加密方式下,主密钥不存在。 400 Bad Request RestoreAlreadyInProgress 对象正在恢复,请求冲突。 409 Conflict ObjectHasAlreadyRestored 已经恢复的对象,禁止缩短恢复保存时间。 409 Conflict InvalidObjectState 恢复对象不是归档存储对象。 403 Forbidden InvalidTagError 配置桶标签时,提供了无效的Tag。 400 Bad Request NoSuchTagSet 指定的桶没有设置标签。 404 Not Found 父主题: 异常处理
  • 加密说明 开发过程中,您有任何问题可以在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 父主题: 服务端加密
  • 删除桶标签 开发过程中,您有任何问题可以在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.html string 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.GetBucketTagging查看桶标签。以下代码展示了如何查看桶标签: // 初始化配置参数 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.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 获取桶标签 try { GetBucketTaggingRequest request = new GetBucketTaggingRequest { BucketName = "bucketname", }; GetBucketTaggingResponse response = client.GetBucketTagging(request); foreach (Tag tag in response.Tags) { Console.WriteLine("Get bucket Tagging response Key: {0}" + tag.Key); Console.WriteLine("Get bucket Tagging response Value:{0} " + tag.Value); } } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } 父主题: 标签管理
  • 设置桶标签 开发过程中,您有任何问题可以在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.html string 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。 父主题: 标签管理