云服务器内容精选

  • 响应示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 { "count": 2, "servers": [ { "id": "b544be62-1b3b-4982-ad98-572b002ac23b", "name": "bms-test1", "addresses": { "5849fdf1-9d79-4589-80c2-fe557990c417": [ { "version": "4", "addr": "192.168.1.63", "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:3a:8d:f1", "OS-EXT-IPS:port_id": "c79d2813-94c9-4135-973e-cbf5d23e78e6", "OS-EXT-IPS:type": "fixed" } ] }, "flavor": { "disk": "9309", "vcpus": "32", "ram": "193047", "id": "physical.s1.medium.ondemand", "name": "physical.s1.medium.ondemand", "gpus": [{ "name":"Nvidia Tesla V100S 32GB", "count":8, "memory_mb":32768 }], "asic_accelerators": [] }, "accessIPv4": "", "accessIPv6": "", "status": "ACTIVE", "progress": 0, "hostId": "cd243addb5d2c64e89218180b7a3ed95abe6882e81c337cc563137df", "updated": "2018-09-10T01:20:58Z", "created": "2018-09-06T09:29:27Z", "metadata": { "baremetalPortIDList": "[c79d2813-94c9-4135-973e-cbf5d23e78e6]", "chargingMode": "0" }, "tags": [ "__type_baremetal" ], "description": "bms-test1", "locked": false, "config_drive": "", "tenant_id": "bbf1946d374b44a0a2a95533562ba954", "user_id": "0c50494c5816425eb05c40b5e81ab65a", "key_name": "$key_name", "OS-EXT-STS:power_state": 1, "OS-EXT-STS:vm_state": "active", "OS-EXT-SRV-ATTR:host": "bms.dc1", "OS-EXT-SRV-ATTR:instance_name": "instance-0014bdc2", "OS-EXT-SRV-ATTR:hypervisor_hostname": "nova002@2", "OS-DCF:diskConfig": "MANUAL", "OS-EXT-AZ:availability_zone": "az-dc-1", "os:scheduler_hints": {}, "OS-EXT-SRV-ATTR:root_device_name": "/dev/vda", "OS-EXT-SRV-ATTR:ramdisk_id": "", "enterprise_project_id": "0", "OS-SRV-USG:launched_at": "2018-09-06T09:30:36.000000", "OS-EXT-SRV-ATTR:kernel_id": "", "OS-EXT-SRV-ATTR:launch_index": 0, "host_status": "UP", "OS-EXT-SRV-ATTR:reservation_id": "r-qjad3fv0", "OS-EXT-SRV-ATTR:hostname": "bms-test1", "sys_tags": [ { "key": "_sys_enterprise_project_id", "value": "0" } ] }, { "id": "a1541cfc-8ac3-43e9-a70d-b8d4b395b256", "name": "bms_test2", "addresses": { "5849fdf1-9d79-4589-80c2-fe557990c417": [ { "version": "4", "addr": "192.168.1.50", "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:8f:38:2c", "OS-EXT-IPS:port_id": "460aa585-9f83-4719-9527-fc39ebaca9aa", "OS-EXT-IPS:type": "fixed" } ] }, "flavor": { "disk": "9309", "vcpus": "32", "ram": "193047", "id": "physical.s1.medium", "name": "physical.s1.medium" }, "accessIPv4": "", "accessIPv6": "", "status": "SHUTOFF", "hostId": "cd243addb5d2c64e89218180b7a3ed95abe6882e81c337cc563137df", "updated": "2018-09-06T10:00:25Z", "created": "2018-08-30T12:40:47Z", "metadata": { "metering.order_id": " CS 18083020422CNV9", "baremetalPortIDList": "[460aa585-9f83-4719-9527-fc39ebaca9aa]", "metering.product_id": "00301-167001-0--0", "chargingMode": "1" }, "tags": [ "__type_baremetal", "_sys_enterprise_project_id=9dd1131d-71fd-40fe-8f14-3fe6b6b5ef8b", "key1=value1", "three=3", "two=2" ], "description": "bms_test2", "locked": false, "config_drive": "", "tenant_id": "bbf1946d374b44a0a2a95533562ba954", "user_id": "3fc5ab2b0c544979abcaafd86edd80e6", "key_name": "$key_name", "OS-EXT-STS:power_state": 4, "OS-EXT-STS:vm_state": "stopped", "OS-EXT-SRV-ATTR:host": "bms.dc1", "OS-EXT-SRV-ATTR:instance_name": "instance-0014581b", "OS-EXT-SRV-ATTR:hypervisor_hostname": "nova002@2", "OS-DCF:diskConfig": "MANUAL", "OS-EXT-AZ:availability_zone": "az-dc-1", "os:scheduler_hints": {}, "OS-EXT-SRV-ATTR:root_device_name": "/dev/vda", "OS-EXT-SRV-ATTR:ramdisk_id": "", "enterprise_project_id": "0", "OS-SRV-USG:launched_at": "2018-08-30T12:42:10.000000", "OS-EXT-SRV-ATTR:kernel_id": "", "OS-EXT-SRV-ATTR:launch_index": 0, "host_status": "UP", "OS-EXT-SRV-ATTR:reservation_id": "r-i5w3yc9a", "OS-EXT-SRV-ATTR:hostname": "bms-test2", "sys_tags": [ { "key": "_sys_enterprise_project_id", "value": "0" }] } ] }
  • 参数说明 表1 参数说明 参数名称 是否必选 参数说明 table_name 是 需要设置生命周期的表名。 dli.lifecycle.days 是 设置的生命周期时间,只能为正整数,单位为天。 external.table.purge 否 仅OBS表支持配置该参数。 是否需要在删除表或分区时,清除path路径下的数据。默认不删除。 设置'external.table.purge'='true'时: 非分区OBS表配置删除文件后,表目录也会删除。 分区OBS表自定义分区数据也会删除。 dli.lifecycle.trash.dir 否 仅OBS表支持配置该参数。 设置'external.table.purge'='true'时,清除数据的备份目录,默认七天后删除备份数据。
  • 表的回收规则 在创建表时通过TBLPROPERTIES指定表的生命周期。 非分区表 如果表是非分区表,根据每张表的最后修改时间,经过生命周期时间后判断是否要回收此表。 分区表 如果是分区表,则根据各分区的最后一次表数据被修改的时间(LAST_AC CES S_TIME)判断该分区是否该被回收。分区表的最后一个分区被回收后,该表不会被删除。 分区表不支持设置分区级的生命周期,仅支持表级别的生命周期管理。 生命周期回收为每天定时启动,扫描全量分区。 生命周期回收为每天定时启动,扫描全量分区的最后一次表数据被修改的时间(LAST_ACCESS_TIME)需要超过生命周期指定的时间才回收。 假设某个分区表生命周期为1天,该分区数据最后一次被修改的时间是2023年05月20日15时。如果在2023年05月20日15时之前扫描此表(不到一天),则不会回收表分区。如果2023年05月20日回收扫描时发现表分区最后一次表数据被修改的时间(LAST_ACCESS_TIME)超过生命周期指定的时间,则上述分区会被回收。 生命周期主要提供定期回收表或分区的功能,每天根据服务的繁忙程度,不定时回收。不能确保表或分区的生命周期到期后,立刻被回收。 删除表后,表的所有属性信息全部会删除,包括生命周期。新建同名表后,表的生命周期以新设置的属性为准。
  • 语法格式 DataSource语法创建 DLI 表 CREATE TABLE table_name(name string, id int) USING parquet TBLPROPERTIES( "dli.lifecycle.days"=1 ); Hive语法创建DLI表 CREATE TABLE table_name(name string, id int) stored as parquet TBLPROPERTIES( "dli.lifecycle.days"=1 ); DataSource语法创建OBS表 CREATE TABLE table_name(name string, id int) USING parquet OPTIONS (path "obs://dli-test/table_name") TBLPROPERTIES( "dli.lifecycle.days"=1, "external.table.purge"='true', "dli.lifecycle.trash.dir"='obs://dli-test/Lifecycle-Trash' ); Hive语法创建OBS表 1 2 3 4 CREATE TABLE table_name(name string, id int) STORED AS parquet LOCATION 'obs://dli-test/table_name' TBLPROPERTIES( "dli.lifecycle.days"=1, "external.table.purge"='true', "dli.lifecycle.trash.dir"='obs://dli-test/Lifecycle-Trash' );
  • 示例 DataSource语法新建test_datasource_lifecycle表,生命周期为100天 1 2 3 CREATE TABLE test_datasource_lifecycle(id int) USING parquet TBLPROPERTIES( "dli.lifecycle.days"=100); Hive语法新建test_hive_lifecycle表,生命周期为100天。 1 2 3 CREATE TABLE test_hive_lifecycle(id int) stored as parquet TBLPROPERTIES( "dli.lifecycle.days"=100); DataSource语法新建test_datasource_lifecycle_obs表,生命周期为100天,过期时默认删除数据且数据备份至目录'obs://dli-test/'。 1 2 3 4 CREATE TABLE test_datasource_lifecycle_obs(name string, id int) USING parquet OPTIONS (path "obs://dli-test/xxx") TBLPROPERTIES( "dli.lifecycle.days"=100, "external.table.purge"='true', "dli.lifecycle.trash.dir"='obs://dli-test/Lifecycle-Trash' ); Hive语法新建test_hive_lifecycle_obs表,生命周期为100天,过期时默认删除数据且数据备份至目录'obs://dli-test/'。 1 2 3 4 CREATE TABLE test_hive_lifecycle_obs(name string, id int) STORED AS parquet LOCATION 'obs://dli-test/xxx' TBLPROPERTIES( "dli.lifecycle.days"=100, "external.table.purge"='true', "dli.lifecycle.trash.dir"='obs://dli-test/Lifecycle-Trash' );
  • 生命周期管理简介 开发过程中,您有任何问题可以在github上提交issue,或者在华为云 对象存储服务 论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 OBS允许您对桶设置生命周期规则,实现自动转换对象的存储类型、自动淘汰过期的对象,以有效利用存储特性,优化存储空间。针对不同前缀的对象,您可以同时设置多条规则。一条规则包含: 规则ID,用于标识一条规则,不能重复。 受影响的对象前缀,此规则只作用于符合前缀的对象。 最新版本对象的转换策略,指定方式为: 指定满足前缀的对象创建后第几天时转换为指定的存储类型。 直接指定满足前缀的对象转换为指定的存储类型的日期。 最新版本对象过期时间,指定方式为: 指定满足前缀的对象创建后第几天时过期。 直接指定满足前缀的对象过期日期。 历史版本对象转换策略,指定方式为: 指定满足前缀的对象成为历史版本后第几天时转换为指定的存储类型。 历史版本对象过期时间,指定方式为: 指定满足前缀的对象成为历史版本后第几天时过期。 是否生效标识。 更多关于生命周期的内容请参考生命周期管理。 对象过期后会被OBS服务端自动删除。 对象转换策略中的时间必须早于对象过期时间;历史版本对象转换策略中的时间也必须早于历史版本对象的过期时间。 桶的多版本状态必须处于Enabled或者Suspended,历史版本对象转换策略和历史版本对象过期时间配置才能生效。 父主题: 生命周期管理
  • 生命周期管理简介 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。 OBS允许您对桶设置生命周期规则,实现自动转换对象的存储类别、自动淘汰过期的对象,以有效利用存储特性,优化存储空间。针对不同前缀的对象,您可以同时设置多条规则。一条规则包含: 规则ID,用于标识一条规则,不能重复。 受影响的对象前缀,此规则只作用于符合前缀的对象。 最新版本对象的转换策略,指定方式为: 指定满足前缀的对象创建后第几天时转换为指定的存储类别。 直接指定满足前缀的对象转换为指定的存储类别的日期。 最新版本对象过期时间,指定方式为: 指定满足前缀的对象创建后第几天时过期。 直接指定满足前缀的对象过期日期。 历史版本对象转换策略,指定方式为: 指定满足前缀的对象成为历史版本后第几天时转换为指定的存储类别。 历史版本对象过期时间,指定方式为: 指定满足前缀的对象成为历史版本后第几天时过期。 是否生效标识。 更多关于生命周期的内容请参考生命周期管理。 对象过期后会被OBS服务端自动删除。 对象转换策略中的时间必须早于对象过期时间;历史版本对象转换策略中的时间也必须早于历史版本对象的过期时间。 桶的多版本状态必须处于Enabled或者Suspended,历史版本对象转换策略和历史版本对象过期时间配置才能生效。 父主题: 生命周期管理
  • 响应参数 状态码: 200 表6 响应Body参数 参数 参数类型 描述 result String 参数解释: 请求结果。 取值范围: SUCCESS:请求成功。 FAIL:请求失败。 默认取值: 不涉及。 data Array of objects 参数解释: 请求数据。 取值范围: 不涉及。 默认取值: 不涉及。 errors Array of strings 参数解释: 异常信息。 取值范围: 不涉及。 默认取值: 不涉及。
  • 请求示例 POST https://dme.cn-north-4.huaweicloud.com/rdm_b3f9b7523a6141f4b2d76b92d6595281_app/publicservices/api/LifecycleManagedModel/updateState { "params" : [ { "id" : "1", "lifecycleState" : { "id" : "609794709757366272", "clazz" : "LifecycleState" }, "modifier" : "test1" } ] }
  • URI POST /rdm_{identifier}_app/publicservices/api/{modelName}/updateState 表1 路径参数 参数 是否必选 参数类型 描述 identifier 是 String 参数解释: 应用唯一标识。 约束限制: 不涉及。 取值范围: 由英文字母和数字组成,且长度为32个字符。 默认取值: 不涉及。 modelName 是 String 参数解释: 数据模型的英文名称。 约束限制: 不涉及。 取值范围: 大写字母开头,只能包含字母、数字、"_",且长度为[1-60]个字符。 默认取值: 不涉及。
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 参数解释: IAM 用户的token。 获取方法请参见获取IAM用户Token。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 表3 请求Body参数 参数 是否必选 参数类型 描述 params 否 Array of LifecycleManagedModelUpdateLifecycleStateDTO objects 参数解释: 迭代版本。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 applicationId 否 String 参数解释: 应用ID。 约束限制: 不涉及。 取值范围: 由英文字母和数字组成,且长度为32个字符。 默认取值: 不涉及。 表4 LifecycleManagedModelUpdateLifecycleStateDTO 参数 是否必选 参数类型 描述 id 是 String 参数解释: 数据实例 ID。 约束限制: 不涉及。 取值范围: -9223372036854775808到9223372036854775807的整数。 默认取值: 不涉及。 lifecycleState 是 ObjectReferenceParamDTO object 参数解释: 生命周期状态对象。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 modifier 否 String 参数解释: 修改人。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 表5 ObjectReferenceParamDTO 参数 是否必选 参数类型 描述 clazz 否 String 参数解释: 类名。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 id 是 String 参数解释: 数据实例ID。 约束限制: 不涉及。 取值范围: -9223372036854775808到9223372036854775807的整数。 默认取值: 不涉及。
  • 响应示例 { "servers": [ { "tenant_id": "edcb94a885a84ed3a3fdf8ea4d2741da", "vm_state": "active", "flavor": { "disk": 0, "name": "s2.medium.2", "id": "s2.medium.2", "vcpus": 1, "ram": 2048, "gpus":[], "asic_accelerators":[] }, "availability_zone": "az1-dc1", "user_id": "bb7f23e27e7e46f3aaceb5f53a158bdc", "created": "2023-03-18T09:02:36Z", "name": "ecs-5e70", "task_state": null, "in_recycle_bin": false, "id": "b37fd80e-ac67-4d02-b9f1-9891c9c0fabf", "updated": "2023-03-18T09:08:54Z", "spod_id": null, "status": "ACTIVE" }, { "tenant_id": "edcb94a885a84ed3a3fdf8ea4d2741da", "vm_state": "active", "flavor": { "disk": 0, "name": "s3.small.1", "id": "s3.small.1", "vcpus": 1, "ram": 1024, "gpus":[], "asic_accelerators":[] }, "availability_zone": "az1-dc1", "user_id": "bb7f23e27e7e46f3aaceb5f53a158bdc", "created": "2023-03-18T04:29:44Z", "name": "ecs-f680", "task_state": null, "in_recycle_bin": false, "id": "8380dcc9-0eac-4407-9f9e-df8c9eddeacd", "updated": "2023-03-18T04:40:25Z", "spod_id": null, "status": "ACTIVE" } ], "servers_links": [ { "rel": "next", "href": "" } ], "request_id": "2da856f5-95e6-437f-9f8b-ae7dc00a9ace" }
  • 请求参数说明 表1 请求参数列表 参数名称 参数类型 是否必选 描述 request BaseBucketRequest 必选 参数解释: 桶的基本信息请求参数列表,详见BaseBucketRequest。 表2 BaseBucketRequest 参数名称 参数类型 是否必选 描述 bucketName String 必选 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 默认取值: 无
  • 接口约束 您必须是桶拥有者或拥有获取桶的生命周期配置的权限,才能获取桶的生命周期配置。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:bucket:GetLifecycleConfiguration权限,如果使用桶策略则需授予GetLifecycleConfiguration权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、自定义创建桶策略。 OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。
  • 代码示例 以下代码展示了如何获取examplebucket桶的生命周期规则。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.LifecycleConfiguration; public class GetBucketLifecycle001 { 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 { // 查看生命周期规则 LifecycleConfiguration config = obsClient.getBucketLifecycle("examplebucket"); System.out.println("getBucketLifecycle successfully"); for (LifecycleConfiguration.Rule rule : config.getRules()) { System.out.println(rule.getId()); System.out.println(rule.getPrefix()); for (LifecycleConfiguration.Transition transition : rule.getTransitions()) { System.out.println(transition.getDays()); System.out.println(transition.getStorageClass()); } System.out.println(rule.getExpiration() != null ? rule.getExpiration().getDays() : ""); for (LifecycleConfiguration.NoncurrentVersionTransition noncurrentVersionTransition : rule.getNoncurrentVersionTransitions()) { System.out.println(noncurrentVersionTransition.getDays()); System.out.println(noncurrentVersionTransition.getStorageClass()); } System.out.println( rule.getNoncurrentVersionExpiration() != null ? rule.getNoncurrentVersionExpiration().getDays() : ""); } } catch (ObsException e) { System.out.println("getBucketLifecycle 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("getBucketLifecycle failed"); // 其他异常信息打印 e.printStackTrace(); } } }