云服务器内容精选

  • 复制多版本对象 开发过程中,您有任何问题可以在github上提交issue,或者在华为云 对象存储服务 论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 您可以通过ObsClient.copyObject接口传入版本号(versionId)来复制多版本对象。 本示例用于通过设置versionId复制sourcebucketname桶中sourceobjectname的多版本对象,复制到destbucketname桶中destobjectname。 代码示例如下所示: // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AC CES S_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(); request.setSourceBucketName("sourebucketname"); request.setSourceObjectKey("sourceobjectname"); // 设置要复制对象的版本号 request.setVersionId("versionid"); request.setDestinationBucketName("destbucketname"); request.setDestinationObjectKey("destobjectname"); obsClient.copyObject(request); 复制多版本对象过程中返回的错误码含义、问题原因及处理措施可参考OBS服务端错误码。 父主题: 多版本控制
  • 功能说明 OBS支持对多版本对象的操作进行权限控制。默认情况下,只有多版本对象的创建者才有该多版本对象的读写权限。用户也可以设置其他的访问策略,比如对一个多版本对象可以设置公共访问策略,允许所有人对其都有读权限。SSE-KMS方式加密的多版本对象即使设置了ACL,跨租户也不生效。 OBS用户在上传多版本对象时可以设置权限控制策略,也可以通过ACL操作API接口对已存在的多版本对象更改或者获取ACL(access control list) 。 可以通过本接口设置指定桶中多版本对象的访问权限。
  • 接口约束 您必须是桶拥有者或拥有设置对象ACL的权限,才能设置多版本对象ACL。建议使用 IAM 或桶策略进行授权,如果使用IAM则需授予obs:object:PutObjectAcl权限,如果使用桶策略则需授予PutObjectAcl权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、配置对象策略。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。 一个多版本对象的ACL最多支持配置100条授权策略。
  • 接口约束 您必须是桶拥有者或拥有设置桶的多版本状态的权限,才能设置桶的多版本状态。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:bucket:PutBucketVersioning权限,如果使用桶策略则需授予PutBucketVersioning权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、自定义创建桶策略。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。
  • 返回结果 表2 返回结果 参数类型 描述 表3 说明: 该接口返回是一个Promise类型,需要使用Promise、async/await语法处理。 参数解释: 接口返回信息,详见 表3。 表3 Response 参数名称 参数类型 描述 CommonMsg ICommonMsg 参数解释: 接口调用完成后的公共信息,包含HTTP状态码,操作失败的错误码等,详见ICommonMsg。 InterfaceResult 表5 参数解释: 操作成功后的结果数据,详见表5。 约束限制: 当Status大于300时为空。 表4 ICommonMsg 参数名称 参数类型 描述 Status number 参数解释: OBS服务端返回的HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 Code string 参数解释: OBS服务端返回的错误码。 Message string 参数解释: OBS服务端返回的错误描述。 HostId string 参数解释: OBS服务端返回的请求服务端ID。 RequestId string 参数解释: OBS服务端返回的请求ID。 Id2 string 参数解释: OBS服务端返回的请求ID2。 Indicator string 参数解释: OBS服务端返回的详细错误码。 表5 BaseResponseOutput 参数名称 参数类型 描述 RequestId string 参数解释: OBS服务端返回的请求ID。
  • 请求参数 表1 请求参数列表 参数名称 参数类型 是否必选 描述 Bucket string 必选 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 取值范围: 长度为3~63个字符。 默认取值: 无 VersionStatus string 必选 参数解释: 桶的多版本状态。 约束限制: 无 取值范围: 桶的多版本状态,支持的值: Enabled:启用 Suspended:暂停 默认取值: 无
  • 查看事件之间的更改 您可以使用CodeArts IDE差异查看器来检查每个事件引入的更改。在Timeline视图中,右键单击一个事件,然后从上下文菜单中选择所需的操作。 Compare with File(与文件比较):将文件内容与文件的当前状态进行比较。 Compare with Previous(与上一个比较):比较此事件和上一个事件之间的文件内容。 Select for Compare(选择比较):选择要进行比较的事件。选择了一个事件后,右键单击要将文件内容与之比较的另一个事件,然后从上下文菜单中选择Compare with Selected。
  • Stash存储 使用stash存储,您可以将当前更改移动到临时位置,而无需将其提交,从而将工作副本恢复到“干净”(即HEAD提交)状态。 要存储更改,请执行以下操作: 在Source Control视图中,展开Source Control Repositories部分。 单击要存储更改的存储库旁边的More Actions按钮(),指向Stash,然后执行以下操作之一: 要存储已暂存的更改,请选择Stash。 要存储所有更改,包括未暂存和未版本化的文件,请选择Stash(Include Untracked)。 移动更改后,您可以随时重新应用它们到您的工作副本中。 在Source Control视图中,展开Source Control Repositories部分。 单击要重新应用更改的存储库旁边的More Actions按钮(),指向Stash,然后执行以下操作之一: 要应用最近的存储,请选择Apply Latest Stash。如果您还想从存储堆栈中删除已应用的存储,请选择Apply Latest Stash。 要应用任意存储,请选择Apply Stash,然后在打开的弹出窗口中选择所需的存储。如果您还想从存储堆栈中删除已应用的存储,请选择Pop Stash。 您可以清理存储堆栈以删除不再需要的存储。 在Source Control视图中,展开Source Control Repositories部分。 单击要重新应用更改的存储库旁边的More Actions按钮(),指向Stash,然后执行以下操作之一: 要删除任意存储,请选择Drop Stash,并在打开的弹出窗口中选择所需的存储。 要删除所有存储,请选择Drop All Stashes。 父主题: 管理版本控制下的文件
  • 接口约束 您必须是桶拥有者或拥有设置桶的多版本状态的权限,才能设置桶的多版本状态。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:bucket:PutBucketVersioning权限,如果使用桶策略则需授予PutBucketVersioning权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、自定义创建桶策略。 OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。
  • 代码示例 以下代码展示了如何通过启用和暂停设置examplebucket桶的多版本状态。 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536373839404142434445464748495051 import com.obs.services.ObsClient;import com.obs.services.exception.ObsException;import com.obs.services.model.BucketVersioningConfiguration;import com.obs.services.model.VersioningStatusEnum;public class SetBucketVersioning001 { public static void main(String[] args) { // 您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。如果使用硬编码可能会存在泄露风险。 // 您可以登录访问管理控制台获取访问密钥AK/SK String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。 // 您可以通过环境变量获取访问密钥AK/SK/SecurityToken,也可以使用其他外部引入方式传入。 // String securityToken = System.getenv("SECURITY_TOKEN"); // endpoint填写桶所在的endpoint, 此处以华北-北京四为例,其他地区请按实际情况填写。 String endPoint = "https://obs.cn-north-4.myhuaweicloud.com"; // 您可以通过环境变量获取endPoint,也可以使用其他外部引入方式传入。 //String endPoint = System.getenv("ENDPOINT"); // 创建ObsClient实例 // 使用永久AK/SK初始化客户端 ObsClient obsClient = new ObsClient(ak, sk,endPoint); // 使用临时AK/SK和SecurityToken初始化客户端 // ObsClient obsClient = new ObsClient(ak, sk, securityToken, endPoint); try { // 启用桶多版本状态 obsClient.setBucketVersioning( "examplebucket", new BucketVersioningConfiguration(VersioningStatusEnum.ENABLED)); // 暂停桶多版本状态 obsClient.setBucketVersioning( "examplebucket", new BucketVersioningConfiguration(VersioningStatusEnum.SUSPENDED)); System.out.println("setBucketVersioning successfully"); } catch (ObsException e) { System.out.println("setBucketVersioning failed"); // 请求失败,打印http状态码 System.out.println("HTTP Code:" + e.getResponseCode()); // 请求失败,打印服务端错误码 System.out.println("Error Code:" + e.getErrorCode()); // 请求失败,打印详细错误信息 System.out.println("Error Message:" + e.getErrorMessage()); // 请求失败,打印请求id System.out.println("Request ID:" + e.getErrorRequestId()); System.out.println("Host ID:" + e.getErrorHostId()); e.printStackTrace(); } catch (Exception e) { System.out.println("setBucketVersioning failed"); // 其他异常信息打印 e.printStackTrace(); } }}