华为云用户手册

  • 什么是数据血缘关系? 大数据时代,数据爆发性增长,海量的、各种类型的数据在快速产生。这些庞大复杂的数据信息,通过联姻融合、转换变换、流转流通,又生成新的数据,汇聚成数据的海洋。 数据的产生、加工融合、流转流通,到最终消亡,数据之间自然会形成一种关系。我们借鉴人类社会中类似的一种关系来表达数据之间的这种关系,称之为数据的血缘关系。与人类社会中的血缘关系不同,数据的血缘关系还包含了一些特有的特征: 归属性:一般来说,特定的数据归属特定的组织或者个人,数据具有归属性。 多源性:同一个数据可以有多个来源(多个父亲)。一个数据可以是多个数据经过加工而生成的,而且这种加工过程可以是多个。 可追溯性:数据的血缘关系,体现了数据的生命周期,体现了数据从产生到消亡的整个过程,具备可追溯性。 层次性:数据的血缘关系是有层次的。对数据的分类、归纳、总结等对数据进行的描述信息又形成了新的数据,不同程度的描述信息形成了数据的层次。 DataArts Studio 生成的血缘关系图如图1所示,为数据表对象,为作业节点对象,通过对象和箭头的编排表示血缘信息。从血缘关系图中可以看到,wk_02表数据是由wk_01表数据经过hive_1作业节点加工而生成的,wk_02表数据经由hive_2作业节点加工又分别生成了wk_03、wk_04和wk_05的表数据。 图1 数据血缘关系示例 父主题: 数据目录
  • 数据目录支持采集哪些对象的资产? 数据目录目前支持采集 数据湖 的资产,例如 MRS Hive、 DLI 、DWS等,除此之外也支持采集以下数据源的元数据: 关系型数据库,如MySQL/PostgreSQL等(可使用RDS类型连接,采集其元数据) 云搜索服务 CSS 图引擎服务GES 对象存储服务 OBS MRS Hudi组件(MRS Hudi作为一种数据格式,元数据存放在Hive中,操作通过Spark进行。在Hudi表开启“同步hive表配置”后,可通过采集MRS Hive元数据的方式采集Hudi表的元数据) 详情请参见支持的数据源。 父主题: 数据目录
  • 创建数据连接需要注意哪些事项? RDS数据连接方式依赖于OBS。如果没有与DataArts Studio同区域的OBS,则不支持RDS数据连接。 主机连接当前仅支持Linux系统主机。 当所连接的数据湖发生变化(如MRS集群扩容等情况)时,您需要重新编辑并保存该连接。 数据连接中的数据湖认证信息如果发生变化(如密码过期)时,此连接会失效。建议您将数据湖认证信息设定为永久有效,避免由于连接失败导致业务受损。 当前DataArts Studio不支持对接“Kerberos加密类型”为“aes256-sha2,aes128-sha2”的MRS集群。如需对接MRS集群,请注意“Kerberos加密类型”应为“aes256-sha1,aes128-sha1”。 在创建数据连接前,请确保待连接的数据湖与DataArts Studio实例之间网络互通。 如果数据湖为云下的数据库,则需要通过公网或者专线打通网络,确保数据源所在的主机可以访问公网,并且防火墙规则已开放连接端口。 如果数据湖为云上服务(如DWS、MRS等),则网络互通需满足如下条件: DataArts Studio实例(指DataArts Studio实例中的 CDM 集群)与云上服务处于不同区域的情况下,需要通过公网或者专线打通网络。 DataArts Studio实例(指DataArts Studio实例中的CDM集群)与云上服务同区域情况下,同虚拟私有云、同子网、同安全组的不同实例默认网络互通;如果同虚拟私有云但是子网或安全组不同,还需配置路由规则及安全组规则,配置路由规则请参见如何配置路由规则章节,配置安全组规则请参见如何配置安全组规则章节。 此外,您还必须确保该云服务的实例与DataArts Studio工作空间所属的企业项目必须相同,如果不同,您需要修改工作空间的企业项目。 父主题: 管理中心
  • DataArts Studio支持连接哪些数据源? DataArts Studio支持对接如DLI、DWS、MRS Hive等云服务,也支持对接如MySQL、Oracle等传统数据库,支持程度各有不同,详情请参见DataArts Studio支持的数据源章节。 DataArts Studio对接数据源,即为通过管理中心创建数据源的数据连接。DataArts Studio管理中心数据连接与数据集成数据连接相互独立,使用场景各有不同。 管理中心的数据连接用于对接数据湖底座,DataArts Studio基于数据湖底座,提供一站式数据开发、治理和服务等能力。 数据集成的数据连接仅限于在数据集成中使用,用于将源端原始数据集成到目的端数据湖底座中。 父主题: 管理中心
  • 解决方案 DataArts Studio数据架构支持的建模方法有以下三种: 关系建模 关系建模是用实体关系(Entity Relationship,ER)模型描述企业业务,它在范式理论上符合3NF,出发点是整合数据,将各个系统中的数据以整个企业角度按主题进行相似性组合和合并,并进行一致性处理,为数据分析决策服务,但是并不能直接用于分析决策。 用户在关系建模过程中,可以从以下三个层次去设计关系模型,这三个层次是逐层递进的,先设计概念模型,再进一步细化设计出逻辑模型,最后设计物理模型。 物理模型:是在逻辑数据模型的基础上,考虑各种具体的技术实现因素,进行数据库体系结构设计,真正实现数据在数据库中的存放,例如:所选的 数据仓库 是DWS或DLI。 维度建模 维度建模是从分析决策的需求出发构建模型,它主要是为分析需求服务,因此它重点关注用户如何更快速地完成需求分析,同时具有较好的大规模复杂查询的响应性能。 多维模型是由数字型度量值组成的一张事实表连接到一组包含描述属性的多张维度表,事实表与维度表通过主/外键实现关联。 典型的维度模型有星形模型,以及在一些特殊场景下使用的雪花模型。 在DataArts Studio数据架构中,维度建模是以维度建模理论为基础,构建总线矩阵、抽象出事实和维度,构建维度模型和事实模型,同时对报表需求进行抽象整理出相关指标体系,构建出汇总模型。 数据集市 又称为DM(Data Mart),DM面向展现层,数据有多级汇总,由一个特定的分析对象及其相关的统计指标组成的,向用户提供了以统计粒度为主题的所有统计数据。
  • 解决方案 修改Migration实时集成作业配置。 Migration任务中必须关闭异步compaction动作,同时将clean和archive关闭。具体来说,可以在“Hudi表属性全局配置”或单表的“表属性编辑”中配置下表所示参数。 表1 Hudi表参数 参数名 参数值 含义 compaction.schedule.enabled true 开启compaction计划生成 compaction.delta_commits 60 compaction计划生成的compaction次数触发周期 compaction.async.enabled false 关闭异步compaction clean.async.enabled false 清理历史版本数据文件 hoodie.archive.automatic false Hudi commit文件老化的开关 图1 关闭Migration compaction任务 如上配置项配置完成后,作业启动后不再进行compaction任务,只会定期生成compaction计划,Spark SQL作业可以通过“run compaction on”命令执行compaction计划。 compaction计划一定需要Migration任务生成,然后交给Spark执行,否则会有Hudi Timeline的冲突,导致Spark compaction作业执行失败。 创建Spark SQL周期性Compaction任务。 前往DataArts Studio数据开发界面,参考《开发批处理单任务SQL作业》创建Spark SQL作业。 图2 创建Spark SQL单任务作业 配置与Hudi相对应的Spark数据连接,并选中需要操作Hudi表对应的数据库。 图3 配置连接与数据库 根据实际情况配置compaction的调度周期。 图4 配置调度周期 填写Spark SQL的compaction语句,提交并运行作业。 set hoodie.compact.inline = true; set hoodie.run.compact.only.inline = true; set hoodie.clean.automatic = false; set hoodie.cleaner.commits.retained = 120; set hoodie.keep.min.commits = 121; set hoodie.keep.max.commits = 141; run compaction on `db_name`.`table_name`; run clean on `db_name`.`table_name`; run archivelog on `db_name`.`table_name`; 图5 提交并运行作业
  • 解决方案 对于不同的数据源其使用的端口也不尽相同,具体可通过查看各数据源官方文档确定具体端口。 下表提供部分数据源端口情况,仅供参考。 表1 数据源使用端口概览 数据源 涉及端口 MySQL 3306 DWS 8000 PostgreSQL 5432 Oracle 1521 Kafka 非安全:9092/9094 安全:9093/9095 MRS Hudi MRS Hudi所使用端口较为复杂,具体请参考《MRS集群服务常用端口列表》。 图1 MRS Hudi安全组规则示例
  • 问题案例总览 表1 问题案例总览 类型 相关文档 网络打通 数据源和资源组网络不通如何排查? 数据源安全组放通哪些端口可满足Migration访问? Hudi 如何配置Hudi Compaction的Spark周期任务? DWS MySQL到DWS实时同步中,同步新增列的DDL时报错怎么办? MySQL到DWS实时同步中,DWS为什么需要对主键null值进行过滤? Kafka Kafka到DLI实时同步中,作业运行失败,报“Array element access needs an index starting at 1 but was 0”怎么办? Oracle Oracle数据源如何开通归档日志、查询权限和日志解析权限? PostgreSQL PostgreSQL数据源如何手动删除复制槽? 父主题: 数据集成(实时作业)
  • 解决方案 登录作业使用的源数据库。 查询同步任务选择的database对象所对应的流复制槽名称。 select slot_name from pg_replication_slots where database = 'database'; 执行如下语句,删除对应的流复制槽。 select * from pg_drop_replication_slot('slot_name'); 执行如下语句,查询流复制槽是否成功删除。 select slot_name from pg_replication_slots where slot_name = 'slot_name';
  • 解决方案 开启归档日志。 以sysdba身份登录Oracle数据库。 执行SQL命令ARCHIVE LOG LIST查询当前数据库的归档状态,如下结果为未开启日志归档。 Database log mode No Archive Mode #非存档模式 Automatic archival Disabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 1 Current log sequence 2 执行SQL命令SHUTDOWN IMMEDIATE关闭数据库。 执行SQL命令STARTUP MOUNT启动数据库至MOUNT状态。 执行SQL命令ALTER DATABASE ARCHIVELOG启动归档模式。 执行SQL命令ARCHIVE LOG LIST查询归档状态,如下结果为已经开启归档日志。 Databaselogmode Archive Mode #存档模式 Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 1 Next log sequence to archive 2 Currentlogsequence 2 执行SQL命令ALTER DATABASE OPEN启动数据库。 Oracle开启数据库和需要迁移的表的补充日志。 执行以下SQL开启数据库补充日志。 ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; 开启需要实时同步的表的补充日志。 ALTER TABLE "schema_name"."table_name" ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS; 设置成功后通过以下SQL可以查询到ALL_COLUMN_LOGGING说明该表已经开通补充日志。 SELECT 'KEY', LOG_GROUP_TYPE FROM ALL_LOG_GROUPS WHERE OWNER = 'schema_name' AND TABLE_NAME = 'table_name'; "KEY" LOG_GROUP_TYPE KEY ALL_COLUMN_LOGGING 开通Oracle用户所需权限。 Oracle 19权限用户参考命令: sqlplus sys/password@//localhost:1521/ORCLCDB as sysdba CREATE USER mgrationuser IDENTIFIED BY mgrationuserPWD DEFAULT TABLESPACE logminer_tbs QUOTA UNLIMITED ON logminer_tbs CONTAINER=ALL; GRANT CREATE SESSION TO mgrationuser CONTAINER=ALL; GRANT SET CONTAINER TO mgrationuser CONTAINER=ALL; GRANT SELECT ON V_$DATABASE to mgrationuser CONTAINER=ALL; GRANT FLASHBACK ANY TABLE TO mrationuser CONTAINER=ALL; GRANT SELECT ANY TABLE TO mgrationuser CONTAINER=ALL; GRANT SELECT_CATALOG_ROLE TO mgrationuser CONTAINER=ALL; GRANT EXECUTE_CATALOG_ROLE TO mgrationuser CONTAINER=ALL; GRANT SELECT ANY TRANSACTION TO mgrationuser CONTAINER=ALL; GRANT LOGMINING TO mgrationuser CONTAINER=ALL; GRANT CREATE TABLE TO mgrationuser CONTAINER=ALL; -- Don’t need to execute this statement, If you set 'scan.incremental.snapshot.enabled=true' (default). GRANT LOCK ANY TABLE TO mgrationuser CONTAINER=ALL; GRANT CREATE SEQUENCE TO mgrationuser CONTAINER=ALL; GRANT EXECUTE ON DBMS_LOGMNR TO mgrationuser CONTAINER=ALL; GRANT EXECUTE ON DBMS_LOGMNR_D TO mgrationuser CONTAINER=ALL; GRANT SELECT ON V_$LOG TO mgrationuser CONTAINER=ALL; GRANT SELECT ON V_$LOG_HISTORY TO mgrationuser CONTAINER=ALL; GRANT SELECT ON V_$LOGMNR_LOGS TO mgrationuser CONTAINER=ALL; GRANT SELECT ON V_$LOGMNR_CONTENTS TO mgrationuser CONTAINER=ALL; GRANT SELECT ON V_$LOGMNR_PA RAM ETERS TO mgrationuser CONTAINER=ALL; GRANT SELECT ON V_$LOGFILE TO mgrationuser CONTAINER=ALL; GRANT SELECT ON V_$ARCHIVED_LOG TO mgrationuser CONTAINER=ALL; GRANT SELECT ON V_$ARCHIVE_DEST_STATUS TO mgrationuser CONTAINER=ALL; exit; Oracle 11g权限用户参考命令: sqlplus sys/password@host:port/SID AS SYSDBA; CREATE USER mgrationuser IDENTIFIED BY mgrationuserPDW DEFAULT TABLESPACE LOGMINER_TBS QUOTA UNLIMITED ON LOGMINER_TBS; GRANT CREATE SESSION TO mgrationuser; GRANT SELECT ON V_$DATABASE to mgrationuser; GRANT FLASHBACK ANY TABLE TO mgrationuser; GRANT SELECT ANY TABLE TO mgrationuser; GRANT SELECT_CATALOG_ROLE TO mgrationuser; GRANT EXECUTE_CATALOG_ROLE TO mgrationuser; GRANT SELECT ANY TRANSACTION TO mgrationuser; GRANT CREATE TABLE TO mgrationuser; GRANT LOCK ANY TABLE TO mgrationuser; GRANT ALTER ANY TABLE TO mgrationuser; GRANT CREATE SEQUENCE TO mgrationuser; GRANT EXECUTE ON DBMS_LOGMNR TO mgrationuser; GRANT EXECUTE ON DBMS_LOGMNR_D TO mgrationuser; GRANT SELECT ON V_$LOG TO mgrationuser; GRANT SELECT ON V_$LOG_HISTORY TO mgrationuser; GRANT SELECT ON V_$LOGMNR_LOGS TO mgrationuser; GRANT SELECT ON V_$LOGMNR_CONTENTS TO mgrationuser; GRANT SELECT ON V_$LOGMNR_PARAMETERS TO mgrationuser; GRANT SELECT ON V_$LOGFILE TO mgrationuser; GRANT SELECT ON V_$ARCHIVED_LOG TO mgrationuser; GRANT SELECT ON V_$ARCHIVE_DEST_STATUS TO mgrationuser; exit
  • 原因分析 查看日志提示报错信息为“Array element access needs an index starting at 1 but was 0”,即数组下标必须从1开始,a[1]表示数组中的第一个元素。 查看该CDM实时作业:配置源端为Kafka,目的端为DLI字段映射,赋值来源为“源表字段”,赋值框使用kafka消息中的嵌套json数组写入方式为a[0]。由于在字段映射使用源表字段对目标列进行赋值时,数组下标必须从1开始(表示数组的第一个元素),如果误用了下标0,那么作业会运行失败,故发现该问题为赋值数组下标设置错误导致,需重新设置。 图2 原有参数配置
  • 问题描述 1. 运行migration mysql2dws链路的实时同步作业,DDL同步中对增加列操作设置为“正常处理”。 2. 在目的端DWS表有数据的场景下,源端MySQL执行DDL语句,添加带非空约束的列,默认值为空字符串,如:alter table test add column t_col varchar(30) not null default '' 3. migration作业产生异常,报错执行DDL失败,失败原因为:column "t_col" contains null values。
  • 功能介绍 虚拟IP地址用于为网卡提供第二个IP地址,同时支持与多个弹性云服务器的网卡绑定,从而实现多个弹性云服务器之间的高可用性。 该接口用于给云服务器网卡配置虚拟IP地址: 当指定的IP地址是一个不存在的虚拟IP地址时,系统会创建该虚拟IP,并绑定至对应网卡。 当指定的IP地址是一个已经创建好的虚拟IP时,系统会将指定的网卡和虚拟IP绑定。如果该IP的device_owner为空,则仅支持VPC内二三层通信;如果该IP的device_owner为neutron:VIP_PORT,则支持VPC内二三层通信、VPC之间对等连接访问,以及弹性公网IP、VPN、云专线等Internet接入。 了解更多请参考虚拟IP简介。
  • 请求示例 PUT https://{endpoint}/v1/{project_id}/cloudservers/nics/{nic_id} { "nic": { "subnet_id": "d32019d3-bc6e-4319-9c1d-6722fc136a23", "ip_address": "192.168.0.7", "reverse_binding": true } }
  • 请求消息 请求参数如表2所示。 表2 请求参数 参数 是否必选 参数类型 描述 nic 是 Object 需要配置私有IP的网卡参数列表。更多信息请参见表3。 表3 nic字段数据结构说明 参数 是否必选 参数类型 描述 subnet_id 是 String 云服务器添加网卡的信息。 需要指定云服务器所属虚拟私有云下已创建的网络(network)的ID,UUID格式。 ip_address 是 String 网卡即将配置的虚拟IP的地址。 reverse_binding 否 Boolean 虚拟IP的allowed_address_pairs属性是否添加网卡的IP/Mac对。 说明: 添加IP/Mac对后才能在网卡详情页面正常展示虚拟IP的地址。
  • 响应示例 { "job_id": "ff808082739334d80173943ec9b42130", "order_id": " CS 2007281506xxxxx", "serverIds": [ "fe0528f0-5b1c-4c8c-9adf-e5d5047b8c17", "679854ae-a50d-40c9-8132-b19bf3a306a1" ] } 或 { "error": { "code": "Ecs.0005", "message": "request body is illegal." } }
  • 请求示例 创建一台包年/包月云服务器,操作系统为CentOS 7.6 64bit,1U1G,绑定1M带宽的弹性公网IP,采用密钥方式登录鉴权。 POST https://{endpoint}/v1.1/{project_id}/cloudservers { "server": { "availability_zone":"az1-dc1", "name": "newserver", "imageRef": "67f433d8-ed0e-4321-a8a2-a71838539e09", "root_volume": { "volumetype": "SSD" }, "data_volumes": [ { "volumetype": "SSD", "size": 100 }, { "volumetype": "SSD", "size": 100, "multiattach": true, "hw:passthrough": true } ], "flavorRef": "s2.small.1", "vpcid": "2a6f4aa6-d93e-45f5-a8cb-b030dbf8cd68", "security_groups": [ { "id": "6242ef48-4d35-49c8-8711-a6e54902e44a" } ], "nics": [ { "subnet_id": "ef039b60-6a14-42d1-963b-687b627fea08" } ], "publicip": { "eip": { "iptype": "5_sbgp", "bandwidth": { "size": 1, "sharetype": "PER" } } }, "key_name": "id_rsa", "count": 1, "metadata": { "op_svc_userid": "f79791beca3c48159ac2553fff22e166" }, "extendparam": { "chargingMode": "prePaid", "periodType": "month", "periodNum": 1, "isAutoRenew": "true", "isAutoPay": "true", "enterprise_project_id": "f8e0ecc8-3825-4ee8-9596-fb4258ffdcbb" }, "os:scheduler_hints": { "group": "cdbbfffe-ef18-47b4-a5c8-f61a984c0ecc" } } } 创建一台包年/包月云服务器,操作系统为CentOS 7.6 64bit,1U1G,绑定1M带宽的弹性公网IP,采用密码方式登录鉴权请求中的密码,建议将密码在配置文件或者环境变量中密文存放,使用时解密,确保安全。 POST https://{endpoint}/v1.1/{project_id}/cloudservers { "server": { "availability_zone":"az1-dc1", "name": "newserver", "adminPass": "$ADMIN_PASS", "imageRef": "67f433d8-ed0e-4321-a8a2-a71838539e09", "root_volume": { "volumetype": "SSD" }, "data_volumes": [ { "volumetype": "SSD", "size": 100 }, { "volumetype": "SSD", "size": 100, "multiattach": true, "hw:passthrough": true } ], "flavorRef": "s2.small.1", "vpcid": "2a6f4aa6-d93e-45f5-a8cb-b030dbf8cd68", "security_groups": [ { "id": "6242ef48-4d35-49c8-8711-a6e54902e44a" } ], "nics": [ { "subnet_id": "ef039b60-6a14-42d1-963b-687b627fea08" } ], "publicip": { "eip": { "iptype": "5_sbgp", "bandwidth": { "size": 1, "sharetype": "PER" } } }, "key_name": "", "count": 1, "metadata": {}, "extendparam": { "chargingMode": "prePaid", "periodType": "month", "periodNum": 1, "isAutoRenew": "true", "isAutoPay": "true", "enterprise_project_id": "f8e0ecc8-3825-4ee8-9596-fb4258ffdcbb" }, "os:scheduler_hints": { "group": "cdbbfffe-ef18-47b4-a5c8-f61a984c0ecc" } } } 创建一台包年/包月云服务器,操作系统为CentOS 7.6 64bit,1U1G,绑定1M带宽的按需按流量计费的弹性公网IP,采用密钥方式登录鉴权。 POST https://{endpoint}/v1.1/{project_id}/cloudservers { "server": { "availability_zone":"az1-dc1", "name": "newserver", "imageRef": "67f433d8-ed0e-4321-a8a2-a71838539e09", "root_volume": { "volumetype": "SSD" }, "data_volumes": [ { "volumetype": "SSD", "size": 100 }, { "volumetype": "SSD", "size": 100, "multiattach": true, "hw:passthrough": true } ], "flavorRef": "s2.small.1", "vpcid": "2a6f4aa6-d93e-45f5-a8cb-b030dbf8cd68", "security_groups": [ { "id": "6242ef48-4d35-49c8-8711-a6e54902e44a" } ], "nics": [ { "subnet_id": "ef039b60-6a14-42d1-963b-687b627fea08" } ], "publicip": { "eip": { "iptype": "5_sbgp", "bandwidth": { "size": 1, "sharetype": "PER", "chargemode": "traffic" }, "extendparam": { "chargingMode": "postPaid" } } }, "key_name": "id_rsa", "count": 1, "metadata": { "op_svc_userid": "f79791beca3c48159ac2553fff22e166" }, "extendparam": { "chargingMode": "prePaid", "periodType": "month", "periodNum": 1, "isAutoRenew": "true", "isAutoPay": "true", "enterprise_project_id": "f8e0ecc8-3825-4ee8-9596-fb4258ffdcbb" }, "os:scheduler_hints": { "group": "cdbbfffe-ef18-47b4-a5c8-f61a984c0ecc" } } } 创建一台包年/包月云服务器,操作系统为CentOS 7.6 64bit,1U1G,绑定共享带宽的弹性公网IP,采用密钥方式登录鉴权。 POST https://{endpoint}/v1.1/{project_id}/cloudservers { "server": { "availability_zone":"az1-dc1", "name": "newserver", "imageRef": "67f433d8-ed0e-4321-a8a2-a71838539e09", "root_volume": { "volumetype": "SSD" }, "data_volumes": [ { "volumetype": "SSD", "size": 100 }, { "volumetype": "SSD", "size": 100, "multiattach": true, "hw:passthrough": true } ], "flavorRef": "s2.small.1", "vpcid": "2a6f4aa6-d93e-45f5-a8cb-b030dbf8cd68", "security_groups": [ { "id": "6242ef48-4d35-49c8-8711-a6e54902e44a" } ], "nics": [ { "subnet_id": "ef039b60-6a14-42d1-963b-687b627fea08" } ], "publicip": { "eip": { "iptype": "5_sbgp", "bandwidth": { "id": "a0d4b26f-699d-49a0-bcc8-6f707a925abf", "sharetype": "WHOLE" } } }, "key_name": "id_rsa", "count": 1, "metadata": { "op_svc_userid": "f79791beca3c48159ac2553fff22e166", "agency_name": "test" }, "extendparam": { "chargingMode": "prePaid", "periodType": "month", "periodNum": 1, "isAutoRenew": "true", "isAutoPay": "true", "enterprise_project_id": "f8e0ecc8-3825-4ee8-9596-fb4258ffdcbb" }, "os:scheduler_hints": { "group": "cdbbfffe-ef18-47b4-a5c8-f61a984c0ecc" } } }
  • 接口约束 创建包年/包月云服务器时,支持自动支付和手动支付。 如果将请求中的isAutoPay字段设置为true,表示采用自动支付方式,系统会自动匹配账户支持的付款方式进行扣费。 自动支付支持的付款方式和顺序如下: 折扣优惠(每次只能使用一项)→代金券(每次只能使用一张)→现金券或储值卡(每次可使用多张,可同时使用)→账户余额(先扣现金额度后扣信用额度)或月末结算 如果上述付款方式无法完成支付,系统会自动生成一个待支付订单,您可以手动在控制台上选择支付方式进行支付。 自动支付的更多内容请参见自动支付。 如果将请求中的isAutoPay字段设置为false,表示采用手动支付方式,系统会自动生成一个待支付订单,您可以手动在控制台上选择支付方式进行支付。 创建按需计费云服务器时,系统会自动匹配适用的代金券进行使用。 如果您需要退订该包年/包月资源,请参考“退订包年/包月资源”。
  • 响应消息 表8 响应参数 参数 参数类型 描述 job_id String 提交任务成功后返回的任务ID,用户可以使用该ID对任务执行情况进行查询。如何根据job_id来查询Job的执行状态,请参考查询Job状态。 order_id String 订单号,创建包年包月的弹性云服务器时返回该参数。 说明: 创建包年/包月云服务器资源后,请参考“支付包年/包月产品订单”进行支付。 如果需要查询订单的资源开通详情,请参考“查询订单详情”。 如果需要退订该包年/包月资源,请参考“退订包年/包月资源”。 serverIds Array of strings 云服务器ID列表。 说明: 通过云服务器ID查询云服务器详情 ,若返回404 可能云服务器还在创建或者已经创建失败。 异常响应请参考响应(任务类),异常响应要素说明。
  • 功能介绍 创建一台或多台云服务器。 V1.1版本创建云服务器的接口兼容了V1版本创建云服务器(按需)的功能,同时合入新功能,支持创建包年/包月的弹性云服务器。 本接口为异步接口,当前创建云服务器请求下发成功后会返回job_id,此时创建云服务器并没有立即完成,需要通过调用查询任务的执行状态查询job状态,当Job状态为 SUC CES S 时代表云服务器创建成功。 本接口支持在HTTP请求消息头中设置X-Client-Token请求头,保证请求幂等性。详细信息请参考请求幂等性说明。 弹性云服务器的登录鉴权方式包括两种:密钥对、密码。为安全起见,推荐使用密钥对方式。 密钥对 指使用密钥对作为弹性云服务器的鉴权方式。 接口调用方法:使用key_name字段,指定弹性云服务器登录时使用的密钥文件,key_name字段的使用方法请参见表2。 密码 指使用设置初始密码方式作为弹性云服务器的鉴权方式,此时,您可以通过用户名密码方式登录弹性云服务器,Linux操作系统时为root用户的初始密码,Windows操作系统时为Administrator用户的初始密码。 接口调用方法:使用adminPass字段,指定管理员账号的初始登录密码,adminPass字段的使用方法请参见表2。对于镜像已安装Cloud-init的Linux云服务器,如果需要使用密文密码,可以使用user_data字段进行密码注入,具体请参见表2。 对于安装Cloud-init镜像的Linux云服务器,若指定user_data字段,则adminPass字段无效。
  • 如何保证请求幂等性 客户端在发送请求时,可以在HTTP请求消息头中增加X-Client-Token作为幂等性标识,字段描述参见表1。 表1 幂等标识消息头 名称 描述 是否必选 示例 X-Client-Token 保证客户端请求幂等性的标识。 该标识为32位UUID格式,由客户端生成,且需确保不同请求之间该标识具有唯一性。 否 46436810-d999-454c-bd85-e515fd258600 通常情况下,客户端只需要在服务端内部异常、连接超时等响应状态码为5xx的错误,或者无法获取响应结果重试请求。重试请求仍然使用相同的幂等标识和请求参数,则服务端会返回与第一次请求相同的请求结果。 幂等标识的详细信息如下所示: 幂等标识是一个大小写敏感的32位UUID,其格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12),其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。如果您提供了一个非UUID格式的标识,则服务端会返回Ecs.0123错误码。 幂等标识需要具有唯一性,如果您提供了一个已经使用过的标识,但请求参数有变化,则服务端会返回Ecs.0122错误码。 幂等标识具有时效性(8小时),如果您提供了一个已经失效的标识,则服务端会返回Ecs.0124错误码。 使用幂等标识后: 返回结果状态码为2xx时,重试后客户端可以得到与上次相同的结果,但对您的服务端状态没有影响。 返回结果状态码为4xx时,重试不会成功。您需要根据错误信息排查问题后再重试请求。
  • 响应示例 { "versions":[ { "min_version":"", "links":[ { "rel":"self", "href":"https://{endpoint}/v2/" } ], "id":"v2.0", "updated":"2011-01-21T11:33:21Z", "version":"", "status":"SUPPORTED" }, { "min_version":"2.1", "links":[ { "rel":"self", "href":"https://{endpoint}/v2.1/" } ], "id":"v2.1", "updated":"2013-07-23T11:33:21Z", "version":"2.60", "status":"CURRENT" } ] }
  • 响应消息 响应参数如表1所示。 表1 响应参数 参数 参数类型 描述 versions Object API版本信息列表,详情请参见表2。 表2 versions字段数据结构说明 参数 参数类型 描述 id string 所讨论的版本的通用名称,仅仅是信息性的,它没有真正的语义。 links Object 版本相关标记快捷链接信息,详情请参见表3。 min_version string 如果API的这个版本支持微版本,则支持最小的微版本。 如果不支持微版本,这将是空字符串。 status string API版本的状态。 CURRENT,这是使用的API的首选版本 SUPPORTED,这是一个较老的,但仍然支持的API版本。 DEPRECATED,一个被废弃的API版本,该版本将被删除。 version string 如果API的这个版本支持微版本,则支持最大的微版本。 如果不支持微版本,这将是空字符串。 updated string 一个有特定值的字符串。 API版本为2.0时,值为2011-01-21T11:33:21Z,API版本是2.1时,值为 2013-07-23T11:33:21Z。 表3 links字段数据结构说明 参数 参数类型 描述 href string 相应资源的链接。 rel string self:自助链接包含版本链接的资源。立即链接后使用这些链接。 bookmark:书签链接提供了一个永久资源的永久链接,该链接适合于长期存储。 alternate:备用链接可以包含资源的替换表示形式。 例如,OpenStack计算映像可能在OpenStack映像服务中有一个替代表示。
  • 响应示例 { "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" }
  • 请求消息 表2 请求参数 参数 是否必选 参数类型 描述 volumeAttachment 是 Object 云服务器挂载信息,参考表3。 dry_run 否 Boolean 是否只预检此次请求。 true:发送检查请求,不会挂载磁盘。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回响应结果。 false:发送正常请求,通过检查后并且进行挂载磁盘请求。 默认值:false 表3 volumeAttachment数据结构说明 参数 是否必选 参数类型 描述 volumeId 是 String 待挂载磁盘的磁盘ID,UUID格式。 device 否 String 磁盘挂载点。 说明: 新增加的磁盘挂载点不能和已有的磁盘挂载点相同。 对于采用XEN虚拟化类型的弹性云服务器,device为必选参数;系统盘挂载点请指定/dev/sda;数据盘挂载点请按英文字母顺序依次指定,如/dev/sdb,/dev/sdc,如果指定了以“/dev/vd”开头的挂载点,系统默认改为“/dev/sd”。 对于采用KVM虚拟化类型的弹性云服务器,系统盘挂载点请指定/dev/vda;数据盘挂载点可不用指定,也可按英文字母顺序依次指定,如/dev/vdb,/dev/vdc,如果指定了以“/dev/sd”开头的挂载点,系统默认改为“/dev/vd”。 对于仅支持SCSI类型磁盘的弹性云服务器,系统盘挂载点为“/dev/sda”,数据盘的挂载点请按英文字母顺序依次指定,如/dev/sdb,/dev/sdc,系统不会修改默认挂载点。 volume_type 否 String 云硬盘类型。 该字段在dry_run为true并且volumeId不存在时有效且为必选字段。 count 否 Integer 云硬盘的个数。 该字段在dry_run为true并且volumeId不存在时有效,如果该字段不存在,默认为1。 hw:passthrough 否 String true表示云硬盘的设备类型为SCSI类型,即允许ECS操作系统直接访问底层存储介质。支持SCSI锁命令 false表示云硬盘的设备类型为VBD (虚拟块存储设备 , Virtual Block Device)类型,VBD只能支持简单的SCSI读写命令。 该字段于dry_run为true并且volumeId不存在时有效且为必选字段。
  • 请求示例 挂载SCSI类型的云硬盘到云服务器,挂载点为“/dev/sda”。 POST https://{endpoint}/v1/{project_id}/cloudservers/{server_id}/attachvolume { "volumeAttachment": { "volumeId": "a26887c6-c47b-4654-abb5-dfadf7d3f803", "device": "/dev/sda", "volume_type": "SSD", "count": 5, "hw:passthrough": "true" }, "dry_run": false }
  • 响应示例 { "version":{ "min_version":"2.1", "media-types":[ { "type":"application/vnd.openstack.compute+json;version=2.1", "base":"application/json" } ], "links":[ { "rel":"self", "href":"https://{endpoint}/v2.1/" }, { "rel":"describedby", "href":"http://docs.openstack.org/", "type":"text/html" } ], "id":"v2.1", "updated":"2013-07-23T11:33:21Z", "version":"2.60", "status":"CURRENT" } }
  • 响应消息 响应参数如表2所示。 表2 响应参数 参数 参数类型 描述 versions Object 指定版本信息,详情请参见表3。 表3 versions字段数据结构说明 参数 参数类型 描述 id string 所讨论的版本的通用名称。仅仅是信息性的,它没有真正的语义。 links Object 链接到资源的问题。有关更多信息,请参见OpenStack Documentation。 详情请参见表4。 media-types Object 媒体类型。详情请参见表5。 min_version string 如果API的这个版本支持微版本,则支持最小的微版本。 如果不支持微版本,这将是空字符串。 status string API版本的状态: CURRENT这是使用的API的首选版本; SUPPORTED:这是一个较老的,但仍然支持的API版本; DEPRECATED:一个被废弃的API版本,该版本将被删除 updated string 一个有特定值的字符串。API版本为2.0时,值为2011-01-21T11:33:21Z ,API版本是2.1时,值为2013-07-23T11:33:21Z。 version string 如果API的这个版本支持微版本,则支持最大的微版本。 如果不支持微版本,这将是空字符串。 表4 links字段数据结构说明 参数 参数类型 描述 href string 相应资源的链接。 rel string self:自助链接包含版本链接的资源。立即链接后使用这些链接。 bookmark:书签链接提供了一个永久资源的永久链接,该链接适合于长期存储。 alternate:备用链接可以包含资源的替换表示形式。例如,OpenStack计算映像可能在OpenStack映像服务中有一个替代表示。 表5 media-types字段数据结构说明 参数 参数类型 描述 base string 基础类型。 type string 媒体类型。
  • 功能介绍 返回指定版本的信息。 为了支持功能不断扩展,Nova API支持版本号区分。Nova中有两种形式的版本号: "主版本号": 具有独立的url。 "微版本号": 通过Http请求头X-OpenStack-Nova-API-Version来使用,从 2.27 版本开始支持新的微版本头:OpenStack-API-Version。 如果使用OpenStack-API-Version的请求头,version对应的value取值格式为 compute 微版本号。 例如:key为OpenStack-API-Version的时候value需要填compute 2.27。
  • 历史版本 由于原生接口已停止跟随OpenStack社区的演进,当前已将其相关API资料移入历史API章节。为了更好地满足用户的需求,并提供更稳定、可靠的服务,推荐用户使用或迁移到未标记废弃的自研API,以获得更好的使用体验。 若用户要使用老的OpenStack API原生接口,建议使用v2.1版本的Openstack API接口,v2版本是Openstack API原生接口更早期的历史版本,且v2版本不支持微版本功能。 若用户要使用老的v2版本的Openstack API接口,只需要把原生API接口对应的URI中的v2.1版本号改为v2版本号即可。 父主题: API
共100000条