华为云用户手册

  • 创建OBS客户端 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 OBS客户端(ObsClient)是访问OBS服务的Android客户端,它为调用者提供一系列与OBS服务进行交互的接口,用于管理、操作桶(Bucket)和对象(Object)等OBS服务上的资源。使用OBS Android SDK向OBS发起请求,您需要初始化一个ObsClient实例,并根据需要修改ObsConfiguration的默认配置项。 直接使用服务地址创建OBS客户端(ObsClient),所有配置均为默认值,且后续不支持修改。示例代码如下: 永久访问密钥(AK/SK)创建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); // 使用访问OBS // 关闭obsClient obsClient.close(); 临时访问密钥(AK/SK/SecurityToken)创建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"; String securityToken = "*** Provide your Security Token ***"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, securityToken, endPoint); // 使用访问OBS // 关闭obsClient obsClient.close(); OBS属于全局级服务,所以在获取临时访问密钥时,需要设置Token的使用范围取值为domain,表示获取的Token可以作用于全局服务,全局服务不区分项目或者区域。 使用可定制各参数的配置类(ObsConfiguration)创建OBS客户端(ObsClient),创建完成后不支持再次修改参数,具体可配置的参数参见配置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"; // 创建ObsConfiguration配置类实例 ObsConfiguration config = new ObsConfiguration(); config.setEndPoint(endPoint); config.setSocketTimeout(30000); config.setMaxErrorRetry(1); // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, config); // 使用访问OBS // 关闭obsClient obsClient.close(); 您的工程中可以有多个ObsClient,也可以只有一个ObsClient。 ObsClient是线程安全的,可在并发场景下使用。 ObsClient在调用ObsClient.close方法关闭后不能再次使用。 父主题: 初始化
  • 限定条件下载 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 下载对象时,可以指定一个或多个限定条件,满足限定条件时则进行下载,否则抛出异常,下载对象失败。 您可以使用的限定条件如下: 参数 作用 OBS Android SDK对应方法 If-Modified-Since 如果对象在指定的时间后有修改,则返回对象内容,否则返回错误。 GetObjectRequest.setIfModifiedSince If-Unmodified-Since 如果对象在指定的时间后没有修改,则返回对象内容,否则返回错误。 GetObjectRequest.setIfUnmodifiedSince If-Match 如果对象的ETag值与该参数值相同,则返回对象内容,否则抛出异常。 GetObjectRequest.setIfMatchTag If-None-Match 如果对象的ETag值与该参数值不相同,则返回对象内容,否则抛出异常。 GetObjectRequest.setIfNoneMatchTag 对象的ETag值是指对象数据的MD5校验值。 如果包含If-Unmodified-Since并且不符合或者包含If-Match并且不符合,抛出异常中HTTP状态码为:412 precondition failed。 如果包含If-Modified-Since并且不符合或者包含If-None-Match并且不符合,抛出异常中HTTP状态码为:304 Not Modified。 以下代码展示了如何进行限定条件下载: // 认证用的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); GetObjectRequest request = new GetObjectRequest("bucketname", "objectname"); request.setRangeStart(0l); request.setRangeEnd(1000l); request.setIfModifiedSince(new SimpleDateFormat("yyyy-MM-dd").parse("2016-01-01")); ObsObject obsObject = obsClient.getObject(request); obsObject.getObjectContent().close(); 父主题: 下载对象
  • 简单复制 以下代码展示了如何进行简单复制: // 认证用的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); CopyObjectResult result = obsClient.copyObject("sourcebucketname", "sourceobjectname", "destbucketname", "destobjectname"); Log.i("CopyObject","\t" + result.getEtag());
  • 限定条件复制 复制对象时,可以指定一个或多个限定条件,满足限定条件时则进行复制,否则抛出异常,复制对象失败。 您可以使用的限定条件如下: 参数 作用 OBS Android SDK对应方法 Copy-Source-If-Modified-Since 如果源对象在指定的时间后有修改,则进行复制,否则抛出异常。 CopyObjectRequest.setIfModifiedSince Copy-Source-If-Unmodified-Since 如果源对象在指定的时间后没有修改,则进行复制,否则抛出异常。 CopyObjectRequest.setIfUnmodifiedSince Copy-Source-If-Match 如果源对象的ETag值与该参数值相同,则进行复制,否则抛出异常。 CopyObjectRequest.setIfMatchTag Copy-Source-If-None-Match 如果源对象的ETag值与该参数值不相同,则进行复制,否则抛出异常。 CopyObjectRequest.setIfNoneMatchTag
  • 重写对象访问权限 以下代码展示了如何在复制对象时重写对象访问权限: // 认证用的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); CopyObjectRequest request = new CopyObjectRequest("sourcebucketname", "sourceobjectname", "destbucketname", "destobjectname"); // 复制时重写对象访问权限为公共读 request.setAcl(AccessControlList.REST_CANNED_PUBLIC_READ); CopyObjectResult result = obsClient.copyObject(request); Log.i("CopyObject","\t" + result.getEtag());
  • 重写对象属性 以下代码展示了如何在复制对象时重写对象属性: // 认证用的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); CopyObjectRequest request = new CopyObjectRequest("sourcebucketname", "sourceobjectname", "destbucketname", "destobjectname"); // 设置进行对象属性重写 request.setReplaceMetadata(true); ObjectMetadata newObjectMetadata = new ObjectMetadata(); newObjectMetadata.setContentType("image/jpeg"); newObjectMetadata.addUserMetadata("property", "property-value"); newObjectMetadata.setObjectStorageClass(StorageClassEnum.WARM); request.setNewObjectMetadata(newObjectMetadata); CopyObjectResult result = obsClient.copyObject(request); Log.i("CopyObject","\t" + result.getEtag()); CopyObjectRequest.setReplaceMetadata需与CopyObjectRequest.setNewObjectMetadata配合使用。
  • 断点续传下载 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 当下载大对象到本地时,经常出现因网络不稳定或程序崩溃导致下载失败的情况。失败后再次重新下载不仅浪费资源,而且当网络不稳定时仍然有下载失败的风险。断点续传下载接口能有效地解决此类问题引起的下载失败,其原理是将待下载的对象分成若干个分段分别下载,并实时地将每段下载结果统一记录在checkpoint文件中,仅当所有分段都下载成功时返回下载成功的结果,否则抛出异常提醒用户再次调用接口进行重新下载(重新下载时因为有checkpoint文件记录当前的下载进度,避免重新下载所有分段,从而节省资源提高效率)。 您可以通过ObsClient.downloadFile进行断点续传下载。该接口可设置的参数如下: 参数 作用 OBS Android SDK对应方法 bucketName 桶名,必选参数。 DownloadFileRequest.setBucketName objectKey 对象名,必选参数。 DownloadFileRequest.setObjectKey downloadFile 下载对象的本地文件全路径。当该值为空时,默认为当前程序的运行目录。 DownloadFileRequest.setDownloadFile partSize 分段大小,单位字节,取值范围是100KB~5GB,默认为5MB。 DownloadFileRequest.setPartSize taskNum 分段下载时的最大并发数,默认为1。 DownloadFileRequest.setTaskNum isEncodeHeaders 是否自动解码响应头 DownloadFileRequest.setIsEncodeHeaders enableCheckpoint 是否开启断点续传模式,默认为false,表示不开启。 DownloadFileRequest.setEnableCheckpoint checkpointFile 记录下载进度的文件,只在断点续传模式下有效。当该值为空时,默认与下载对象的本地文件路径同目录。 DownloadFileRequest.setCheckpointFile versionId 对象的版本号。 DownloadFileRequest.setVersionId ifModifiedSince 如果对象在指定的时间后有修改,则返回对象内容,否则返回错误。 DownloadFileRequest.setIfModifiedSince ifUnmodifiedSince 如果对象在指定的时间后没有修改,则返回对象内容,否则返回错误。 DownloadFileRequest.setIfUnmodifiedSince ifMatchTag 如果对象的ETag值与该参数值相同,则返回对象内容,否则抛出异常。 DownloadFileRequest.setIfMatchTag ifNoneMatchTag 如果对象的ETag值与该参数值不相同,则返回对象内容,否则抛出异常。 DownloadFileRequest.setIfNoneMatchTag progressListener 设置数据传输监听器,用于获取下载进度。 DownloadFileRequest.setProgressListener 以下代码展示了如何使用断点续传下载接口下载对象到本地文件: // 认证用的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); DownloadFileRequest request = new DownloadFileRequest("bucketname", "objectname"); // 设置下载对象的本地文件路径 request.setDownloadFile("localfile"); // 设置分段下载时的最大并发数 request.setTaskNum(5); // 设置分段大小为10MB request.setPartSize(10 * 1024 * 1024); // 开启断点续传模式 request.setEnableCheckpoint(true); try{ // 进行断点续传下载 DownloadFileResult result = obsClient.downloadFile(request); }catch (ObsException e) { // 发生异常时可再次调用断点续传下载接口进行重新下载 } 断点续传下载接口是利用范围下载特性实现的,是对范围下载的封装和加强。 断点续传下载接口不仅能在失败重下时节省资源提高效率,还因其对分段进行并发下载的机制能加快下载速度,帮助用户快速完成下载业务;且其对用户透明,用户不用关心checkpoint文件的创建和删除、分段任务的切分、并发下载的实现等内部细节。 enableCheckpoint参数默认是false,代表不启用断点续传模式,此时断点续传下载接口退化成对范围下载的简单封装,不会产生checkpoint文件。 checkpointFile参数仅在enableCheckpoint参数为true时有效。 由于 HTTP 编码规范限制,无法发送非 ASCII 码字符,SDK 会在接收响应时使用 url 解码规则解码响应头头中的信息,。如您的元数据存储的 content-disposition 为 ”attachment; filename="%E4%B8%AD%E6%96%87.txt"”,则 SDK 获取结果为”attachment; filename="中文.txt"”。 如果不需要 SDK 帮您解码,可以调用 DownloadFileRequest.setIsEncodeHeaders(false) 关闭自动解码。 父主题: 下载对象
  • 与其他服务的关系 表1 异步复制与其他服务的关系 交互功能 相关服务 位置 使用弹性云服务器创建异步复制的保护实例。 弹性云服务器 创建保护实例 使用云硬盘创建异步复制的容灾盘。 云硬盘 创建保护实例 为异步复制创建云上的容灾网络。 虚拟私有云 创建站点复制对 作为生产端和容灾端的数据缓存。 对象存储服务 - 表2 同步复制与其他服务的关系 交互功能 相关服务 位置 使用弹性云服务器创建同步复制的保护实例。 弹性云服务器 创建保护实例 使用云硬盘创建同步复制的复制对。 云硬盘 创建复制对 使用专属分布式存储提供的独享物理存储资源创建的云硬盘来创建同步复制的复制对。 专属分布式存储 创建复制对 为同步复制的保护组选择一个所属的虚拟私有云。 虚拟私有云 创建保护组 云审计服务记录存储容灾的服务相关的操作事件,方便用户日后的查询、审计和回溯。 云审计服务 云审计
  • 限定条件复制 复制对象时,可以指定一个或多个限定条件,满足限定条件时则进行复制,否则返回异常码,复制对象失败。 您可以使用的限定条件如下: 参数 作用 格式 CopySourceIfModifiedSince 如果源对象在指定的时间后有修改,则进行复制,否则抛出异常。 符合http://www.ietf.org/rfc/rfc2616.txt规定格式的HTTP时间字符串。 CopySourceIfUnmodifiedSince 如果源对象在指定的时间后没有修改,则进行复制,否则抛出异常。 符合http://www.ietf.org/rfc/rfc2616.txt规定格式的HTTP时间字符串。 CopySourceIfMatch 如果源对象的ETag值与该参数值相同,则进行复制,否则返回异常码。 字符串。 CopySourceIfNoneMatch 如果源对象的ETag值与该参数值不相同,则进行复制,否则返回异常码。 字符串。
  • 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 因为ACL而没有权限进行某种操作。 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 父主题: 异常处理
  • 责任共担 华为云秉承“将公司对网络和业务安全性保障的责任置于公司的商业利益之上”。针对层出不穷的云安全挑战和无孔不入的云安全威胁与攻击,华为云在遵从法律法规业界标准的基础上,以安全生态圈为护城河,依托华为独有的软硬件优势,构建面向不同区域和行业的完善云服务安全保障体系。 安全性是华为云与您的共同责任,如图1所示。 华为云:负责云服务自身的安全,提供安全的云。华为云的安全责任在于保障其所提供的IaaS、PaaS和SaaS各类各项云服务自身的安全,涵盖华为云数据中心的物理环境设施和运行其上的基础服务、平台服务、应用服务等。这不仅包括华为云基础设施和各项云服务技术的安全功能和性能本身,也包括运维运营安全,以及更广义的安全合规遵从。 租户:负责云服务内部的安全,安全地使用云。 华为云租户的安全责任在于对使用的IaaS、PaaS和SaaS类各项云服务内部的安全以及对租户定制配置进行安全有效的管理,包括但不限于虚拟网络、虚拟主机和访客虚拟机的操作系统,虚拟防火墙、API网关和高级安全服务,各项云服务,租户数据,以及身份账号和密钥管理等方面的安全配置。 《华为云安全白皮书》详细介绍华为云安全性的构建思路与措施,包括云安全战略、责任共担模型、合规与隐私、安全组织与人员、基础设施安全、租户服务与租户安全、工程安全、运维运营安全、生态安全。 图1 华为云安全责任共担模型 父主题: 安全
  • 审计 云审计服务(Cloud Trace Service,以下简称CTS),是华为云安全解决方案中专业的日志审计服务,提供对各种云资源操作记录的收集、存储和查询功能,可用于支撑安全分析、合规审计、资源跟踪和问题定位等常见应用场景。 用户开通云审计服务并创建和配置追踪器后,CTS开始记录操作事件用于审计。开通方法请参考CTS快速入门。 开通云审计服务后,可查看ServiceStage云审计日志,云审计服务保存最近7天的操作日志。CTS支持追踪的ServiceStage操作列表,请参考云审计服务支持的ServiceStage操作列表。 CTS支持配置关键操作通知。您可将与ServiceStage相关的高危敏感操作,作为关键操作加入到CTS的实时监控列表中进行监控跟踪。当您使用ServiceStage服务时,如果触发了监控列表中的关键操作,那么CTS会在记录操作日志的同时实时发送通知。
  • 步骤四:创建日志配置下发任务 在“虚拟机日志接入”页面,选择左侧导航栏的“任务管理”。 单击页面右上角的“新建任务”。 配置任务参数,参数说明如表5所示,配置完成后,单击“确定”。 表5 日志配置下发任务参数说明 参数名称 参数说明 日志项目 选择已创建的日志项目。 任务名称 自定义任务名称。 任务类型 选择任务类型。 配置类型 选择日志采集配置类型。 配置列表 选择需要下发的配置。 用户名称 选择已规划并拥有日志读取权限的业务账号。 选择主机 选择需要下发配置的主机。 已选主机 显示已选主机。 在任务列表中查看已创建的任务,单击任务所在行“操作”列的“执行”。 执行完成后,状态为成功即表示日志配置内容已下发成功,即会按照配置将日志接入AppStage。
  • 使用说明 当用户修改权限后,权限信息在一天后生效。 SDK支持跨云/本地上报日志,当前仅支持华北-北京四、华东-上海一、华南-广州、西南-贵阳一。使用详情见Appender配置参数说明表中的“enableLocalTest”参数,当该参数为true时,上报日志规格为单个机器200次/秒(即每秒只能发送200次,每次批量发送数量/大小详情见参数“batchSizeThresholdInBytes、batchCountThreshold、lingerMs”)。 通过SDK上报日志到LTS的时间相距当前时间不超过2天,否则上报日志会被LTS删除。
  • 注意事项 由于Java-SDK默认对SK明文存储,不符合某些对于安全有更高要求的用户,lts提供了一种用户自定义的加解密方式,建议用户优先使用加解密方式。 加密过程如下: 用户编写一个java类,比如com.demo.DecryptDemo类,在该类中增加一个解密方法,比如decrypt方法,输入和输出均为字符串。 编写decrypt的方法内容,客户自行实现SK加解密算法,返回解密后的值。 当用户调用Java-SDK初始化时,会需要传入SK,这时使用DecryptDemo.decrypt方法即可。
  • 参数获取方式 区域表 区域名称 RegionName 华北-北京二 cn-north-2 华北-北京四 cn-north-4 华北-北京一 cn-north-1 华东-上海二 cn-east-2 华东-上海一 cn-east-3 华南-广州 cn-south-1 华南-深圳 cn-south-2 西南-贵阳一 cn-southwest-2 亚太-新加坡 ap-southeast-3 日志组ID:在云日志服务控制台,选择“日志管理”,鼠标悬浮在日志组名称上,可查看日志组名称和日志组ID。 日志流ID:单击日志组名称对应的按钮,鼠标悬浮在日志流名称上,可查看日志流名称和日志流ID。
  • 使用说明 当用户修改权限后,权限信息在一天后生效。 SDK支持跨云/本地上报日志,当前仅支持华北-北京四、华东-上海一、华南-广州、西南-贵阳一。使用详情见Appender配置参数说明表中的“enableLocalTest”参数,当该参数为true时,上报日志规格为单个机器200次/秒(即每秒只能发送200次,每次批量发送数量/大小详情见参数“batchSizeThresholdInBytes、batchCountThreshold、lingerMs”)。 支持将logback.xml变为logback-spring.xml(SpringBoot),且读取springProfile中的配置。 支持读取logback.xml、logback-spring.xml中的自定义标签。 通过SDK上报日志到LTS的时间相距当前时间不超过2天,否则上报日志会被LTS删除。
  • 参数获取方法 区域表 表2 区域表 区域名称 RegionName 华北-北京二 cn-north-2 华北-北京四 cn-north-4 华北-北京一 cn-north-1 华东-上海二 cn-east-2 华东-上海一 cn-east-3 华南-广州 cn-south-1 华南-深圳 cn-south-2 西南-贵阳一 cn-southwest-2 亚太-新加坡 ap-southeast-3 日志组ID:在云日志服务控制台,选择“日志管理”,鼠标悬浮在日志组名称上,可查看日志组名称和日志组ID。 日志流ID:单击日志组名称对应的按钮,鼠标悬浮在日志流名称上,可查看日志流名称和日志流ID。
  • 示例代码 const miniSDK = require('lts-mini-sdk').default; // import miniSDK from 'lts-mini-sdk'; App({ onLaunch(options) { // 初始化 const wxmini = new miniSDK({ // 上报region region: string, // 华为云项目ID projectId: string, // 上报地址 url: string, // LTS日志组ID groupId: string, // LTS日志流ID streamId: string, // 调试日志等级 debug: string, // 当前小程序所属平台 platform: string, // 上报条数阈值 cacheThreshold: number, // 上报时间阈值 timeInterval: number, }); // 立即上报单条带标签 wxmini.reportImmediately({ 'name': 'xiaoming', 'age': 18 }, { 'key': 'value' }); // 立即上报单条 不带标签 wxmini.reportImmediately([{ key: 'value', number: 1, array: [], json: { json: 'json' } }, { 'key': 'value' }]); // 缓存上报多条 带标签 wxmini.report([{ 'name': 'xiaohong', 'age': 18 }, { 'name': 'xiaobai', 'age': 20 }], { 'key': 'value' }); // 缓存上报多条 不带标签 wxmini.report([{ 'name': 'xiaohong', 'age': 18 }, { key: 'value', number: 1, array: [], json: { json: 'json' } }]); // 缓存上报多条 带多个标签(最多50个) wxmini.report([{ 'name': 'xiaohong', 'name': 'xiaolan' }], {'version': '1.0.0', 'render': 'mini', 'link': '/', from: 'wx'}); } });
  • 版本更新说明 表1 版本更新说明 版本号 更新说明 1.0.24 支持更多region:华东-上海一、华南-广州。 1.0.23 新增支持快应用上报。 1.0.21 废弃config方法,优先使用new SDK创建一个新的实例。 去除代码中对三方包的依赖和存在的中文符号。 1.0.19 修改时间阈值的范围从1-60改为1-1800,其默认值从30改为3。 1.0.18 调整日志级别等级。 支持labels嵌套。 1.0.15 新增多实例。
  • 责任共担 华为云秉承“将公司对网络和业务安全性保障的责任置于公司的商业利益之上”。针对层出不穷的云安全挑战和无孔不入的云安全威胁与攻击,华为云在遵从法律法规业界标准的基础上,以安全生态圈为护城河,依托华为独有的软硬件优势,构建面向不同区域和行业的完善云服务安全保障体系。 安全性是华为云与您的共同责任,如图1所示。 华为云:负责云服务自身的安全,提供安全的云。华为云的安全责任在于保障其所提供的 IaaS、PaaS 和 SaaS 类云服务自身的安全,涵盖华为云数据中心的物理环境设施和运行其上的基础服务、平台服务、应用服务等。这不仅包括华为云基础设施和各项云服务技术的安全功能和性能本身,也包括运维运营安全,以及更广义的安全合规遵从。 租户:负责云服务内部的安全,安全地使用云。华为云租户的安全责任在于对使用的 IaaS、PaaS 和 SaaS 类云服务内部的安全以及对租户定制配置进行安全有效的管理,包括但不限于虚拟网络、虚拟主机和访客虚拟机的操作系统,虚拟防火墙、API 网关和高级安全服务,各项云服务,租户数据,以及身份账号和密钥管理等方面的安全配置。 《华为云安全白皮书》详细介绍华为云安全性的构建思路与措施,包括云安全战略、责任共担模型、合规与隐私、安全组织与人员、基础设施安全、租户服务与租户安全、工程安全、运维运营安全、生态安全。 图1 华为云安全责任共担模型 父主题: 安全
  • 产品优势 云解析服务具有以下优势: 高性能 云解析服务采用自研的新一代高性能解析加速服务,单节点支持千万级并发,为您提供高效稳定的解析服务。 安全防护 云解析服务基于华为自研Anti-DDoS设备以及多年防护经验,可以有效应对各类DDoS攻击。 轻松访问云上资源 云解析服务支持为云服务器创建内网域名,既支持云服务器之间通过内网域名互相访问,也支持云服务器通过内网DNS访问云上资源,无需经过Internet,访问时延小,性能高。 您可以参考为云服务器配置内网域名为您的云服务器创建域名。 平滑切换无感知 支持将使用中的网站域名迁移至华为云云解析服务进行解析。在域名转入时,我们可以提前创建域名,并设置解析记录,使您网站的DNS服务实现平滑切换,用户访问体验不中断。 DNS服务平滑切换的详细内容请参考迁移域名到华为云进行域名解析。 核心数据安全隔离 对于保存核心数据的云服务器,不绑定弹性IP,使用内网DNS为其提供域名解析服务,这样,既保证了核心数据的安全性,又实现了对核心数据的访问。
  • 基本功能 云解析服务为您提供以下解析服务类型: 公网域名解析 云解析服务将公网域名与IP地址相关联,为您提供基于Internet网络的域名解析服务,实现通过域名直接访问网站或者Web应用程序。 内网域名解析 云解析服务将在VPC内生效的内网域名与私网IP地址相关联,为华为云上资源提供VPC内的域名解析服务。 反向解析 云解析服务支持通过IP地址反向获取该IP地址指向的域名,通常用于自建邮件服务器的场景,是提高邮箱IP和域名信誉度的必要设置。 智能线路解析 云解析服务支持按运营商、地域等不同访问者IP的来源和类型,对同一域名的访问请求作出不同的解析响应,指向不同服务器的IP地址。解决跨运营商或者跨地域访问慢的难题,提高解析效率。
  • 云服务器切换 随着互联网用户数量的高速增长,一个网站应用部署在一个服务器上很难经得起高并发的访问,业务拆分到多个服务器分担压力是最基本的方案。 多个服务器可以建立在同一个VPC内,云服务器之间通过私网IP实现互访,私网IP会写入云服务器的内部调用API接口中。此时,存在这样的问题:假如其中一个云服务器发生切换,私网IP也会随之变化,这时就需要修改其他云服务器代码中的API接口,并重新发布变更,维护极其不便。 这时,如果您通过云解析服务为您VPC内的每个云服务器创建一个内网域名,并添加到对应私网IP的解析。这样,云服务器之间可以通过内网域名进行互访。当某个云服务器发生切换时,无需修改云服务器的代码,只需修改对应域名的解析记录即可。 云解析服务作为内网DNS的典型应用场景如图2所示。 图2 为云服务器配置内网域名 在一个VPC内,部署了ECS和RDS。其中: ECS:作为主业务站点和业务入口。 ECS1:作为公共接口。 RDS1:作为数据库,存储业务数据。 ECS2和RDS2:作为备份服务器和数据库。 当该网站在运行过程中,因ECS1故障,需要将业务切换到备份的云服务器ECS2时,如果云服务器没有配置内网域名,则需要通过修改主业务节点ECS的代码来重新设置云服务器的内网IP地址。该操作需要中断业务并重新发布网站,耗时耗力。 假如在部署该网站时,我们为云服务器申请了内网域名,且代码中设置的是云服务器的内网域名,则仅需要通过修改内网域名解析记录即可实现云服务器的切换,无需中断业务,也不需要重新发布网站。 您可以参考为云服务器配置内网域名为您的云服务器规划内网域名信息。
  • 云服务器访问云上资源 当您创建云服务器时,可以使用内网DNS进行解析,不经公网直接访问SMN、OBS等云服务。 当您创建云服务器时, 如果关联VPC子网的DNS服务器设置为公共DNS,云服务器对云服务的访问需要通过公共DNS在Internet上进行解析。 当云服务器访问OBS、SMN等华为云上服务时,解析过程如图3右侧的“1~10”所示。 在解析过程中,因需要通过Internet,访问时延大,体验差。 如果关联VPC子网的DNS服务器默认设置为华为云内网DNS,云服务器对云服务的访问直接通过内网DNS进行解析。 当云服务器访问OBS、SMN等华为云上服务时,内网DNS直接返回这些云服务的内网地址,无需通过Internet,访问时延小,性能高,解析过程如图3左侧的“①~④”所示。 您可以参考怎样切换内网DNS将云服务器的默认DNS服务器修改为华为云的内网DNS,这样就可以实现通过内网DNS直接访问云服务。 图3 访问云服务
  • 云服务器主机名管理 您可以根据云服务器的位置、用途、所有者等信息规划主机名,并使用主机名为云服务器添加内网解析记录,便于直观的获取云服务器的信息,更利于管理云服务器。 例如,您在某区域的某个可用区部署了20台ECS,其中10台用于网站A,10台用于网站B,则可以采用以下方式规划主机名和内网域名: 网站A:weba01.region1.az1.com~weba10.region1.az1.com 网站B:webb01.region1.az1.com~webb10.region1.az1.com 完成上述规划后,可以帮助您快速定位云服务的位置和用途,便于日常管理和维护。 您可以参考配置内网解析完成云服务器主机名管理的相关操作。
  • 反向解析 反向解析是指通过IP地址反向获取该IP地址指向的域名,可以应用于自建邮件服务器的场景,是提高邮箱IP和域名信誉度的必要设置。 通常收件服务器在收到邮件时,会通过检测发件方邮箱的IP信誉度和域名信誉度,来判断是否为垃圾邮件。如果收件服务器反向解析发件方IP地址无法获取邮箱域名,则会认为这是由恶意主机发送的垃圾邮件而拒收。因此,搭建邮箱服务器时,建议您为邮箱服务器的IP地址添加到域名的反向解析。 假设要部署ECS作为邮箱服务器,且已经通过云解析服务为ECS的弹性IP添加反向解析记录,此时,反向解析在邮件收发过程中的应用如图1所示。 图1 反向解析应用 图1中仅描述与云解析服务相关的流程,邮件收件方对于发件方IP和域名信誉度的检测,本文不做描述。 如果没有为邮箱服务器添加反向解析记录,则收件方在收到邮件后,无法根据发件方的IP地址反向解析出邮箱域名。收件方会认为这是由恶意主机发送的垃圾邮件而选择拒收。因此,自建邮箱服务器时,为邮箱服务器的IP地址添加反向解析记录是必不可少的步骤。 您可以参考配置反向解析为您的云服务器配置反向解析。
  • 项目 项目用于将资源(计算资源、存储资源和网络资源等)进行分组和隔离。项目可以是一个部门或者一个项目组。 一个账户中可以创建多个项目。 对于云解析服务,公网域名属于Global级别的资源,而内网域名和反向解析属于区域级别的资源。因此,系统会基于项目实现内网域名、反向解析资源的隔离和管理。在创建、查询、设置内网域名和反向解析前,用户需先指定区域和项目,然后在指定项目下执行相关操作。 父主题: 基本概念
  • 域名解析过程 通过域名www.example.com访问网站的域名解析过程如图3所示。 图3 域名解析过程 用户通过Web浏览器输入网站域名www.example.com。 Web浏览器将对域名www.example.com的查询请求路由到Local DNS。 Local DNS缓存域名解析数据,并提供递归查询功能。Local DNS通常是Internet服务商提供的DNS。 Local DNS在缓存中没有查询到域名的解析记录,将对域名www.example.com的查询请求路由到根域名服务器。 因域名后缀为.com,根域名服务器向Local DNS返回.com顶级域服务器的地址。 Local DNS将对域名www.example.com的查询请求路由到.com顶级域服务器。 .com顶级域服务器向Local DNS返回为域名example.com提供权威解析服务的权威DNS服务器地址。 Local DNS将对域名www.example.com的查询请求路由到权威DNS服务器。 如果域名www.example.com的DNS服务器设置为华为云DNS服务器地址,则云解析服务作为权威DNS服务器为域名提供权威的解析记录。 权威DNS服务器向Local DNS返回域名对应的网站IP地址。 Local DNS向Web浏览器返回网站IP地址。 Web浏览器通过网站IP地址访问网站服务器。 网站服务器向Web浏览器返回网站主页。 终端用户从Web浏览器获取网站主页,对网站的访问成功。 云解析服务的公网域名解析功能可以应用于网站解析、邮箱解析等场景:配置网站解析
  • 四步实现通过域名访问网站 公网域名解析可以应用于网站搭建场景。如果您想要搭建一个网站,并且使其可以通过Internet被访问,需要完成以下环节的工作: 图1 四步实现通过域名访问网站 注册域名并进行域名实名认证 通过域名注册商完成,如果您选择华为云作为您的域名注册商,可以参考域名注册完成网站域名的注册。 中信部规定,域名需要在注册完成的5个工作日内提交实名认证,否则将会被注册局暂停解析,影响域名的使用。 搭建网站 您可以选择通过华为云或者其他云平台搭建您的网站,如果您选择在华为云搭建您的网站,网站搭建从搭建方式、网站类型、操作系统等维度指导您完成网站的搭建。 备案网站 如果您的网站部署在华为云中国站,则可以通过华为云的备案中心进行备案,详细内容请参见什么是备案。 中信部规定,网站的域名和服务器IP需要进行备案,备案成功后您的域名才可以指向服务器开通访问。 解析域名 您可以选择华为云的云解析服务为您的网站域名提供DNS解析服务。要实现这一点,您需要在云解析服务中创建公网域名,并添加域名到弹性公网IP的解析记录。 配置网站解析指导您完成域名解析。 之后,您就可以通过在浏览器输入域名访问您的网站,其过程如图2所示。 图2 访问网站示意图 “阶段一”表示云解析服务的公网域名解析过程。 “阶段二”表示公网域名解析成功后,用户通过域名访问网站服务器的过程。 如果网站的域名未通过实名认证,网站没有通过备案审核,则会导致“阶段二”受阻,网站无法正常访问。 详细内容请参见为什么域名解析成功但网站仍然无法访问? 公网域名解析过程与域名的分层结构有关,下面详细介绍域名分层结构及域名解析过程。
共100000条