华为云用户手册

  • 响应参数 状态码: 200 表2 响应Body参数 参数 参数类型 描述 topic String topic名称。 partitions Array of partitions objects 分区列表。 group_subscribed Array of strings 订阅该topic的消费组名称列表。 表3 partitions 参数 参数类型 描述 partition Integer 分区ID。 leader Integer leader副本所在节点的id。 leo Integer 分区leader副本的LEO(Log End Offset)。 hw Integer 分区高水位(HW,High Watermark)。 lso Integer 分区leader副本的LSO(Log Start Offset)。 last_update_timestamp Long 分区上次写入消息的时间。 格式为Unix时间戳。 单位:毫秒。 replicas Array of replicas objects 副本列表。 表4 replicas 参数 参数类型 描述 broker Integer 副本所在的节点ID。 leader Boolean 该副本是否为leader。 in_sync Boolean 该副本是否在ISR副本中。 size Integer 该副本当前日志大小。单位:Byte。 lag Long 该副本当前落后hw的消息数。
  • 响应示例 状态码: 200 查询成功。 { "dimensions" : [ { "name" : "kafka_instance_id", "metrics" : [ "current_partitions", "current_topics", "group_messages" ], "key_name" : [ "instance_ids" ], "dim_router" : [ "kafka_instance_id" ] }, { "name" : "kafka_broker", "metrics" : [ "broker_data_size", "broker_messages_in_rate", "broker_bytes_out_rate", "broker_bytes_in_rate", "broker_produce_mean", "broker_fetch_mean" ], "key_name" : [ "nodes" ], "dim_router" : [ "kafka_instance_id", "kafka_broker" ] }, { "name" : "kafka_rest", "metrics" : [ "rest_produce_success", "rest_produce_failed", "rest_produce_latency", "rest_produce_msg_num", "rest_produce_flow", "rest_consume_success", "rest_consume_failed", "rest_consume_latency", "rest_consume_msg_num", "rest_consume_flow", "rest_commit_success", "rest_commit_failed", "rest_commit_latency", "rest_commit_msg_num", "rest_commit_flow" ], "key_name" : [ "nodes" ], "dim_router" : [ "kafka_instance_id", "kafka_rest" ] }, { "name" : "kafka_topics", "metrics" : [ "topic_data_size", "topic_messages_in_rate", "topic_bytes_out_rate", "topic_bytes_in_rate", "topic_messages" ], "key_name" : [ "queues" ], "dim_router" : [ "kafka_instance_id", "kafka_topics" ], "children" : [ { "name" : "kafka_partitions", "metrics" : [ "produced_messages", "partition_messages" ], "key_name" : [ "queues", "partitions" ], "dim_router" : [ "kafka_instance_id", "kafka_topics", "kafka_partitions" ] } ] }, { "name" : "kafka_groups_partitions", "metrics" : [ "messages_consumed", "messages_remained" ], "key_name" : [ "groups", "queues", "partitions" ], "dim_router" : [ "kafka_instance_id", "kafka_groups", "kafka_groups_topics", "kafka_groups_partitions" ] } ], "instance_ids" : [ { "name" : "68f3f6a0-3741-453b-bda9-a6ff6b5bb6f7" } ], "nodes" : [ { "name" : "broker-0" }, { "name" : "broker-1" }, { "name" : "broker-2" } ], "queues" : [ { "name" : "aaaa", "partitions" : [ { "name" : "0" } ] }, { "name" : "mytest", "partitions" : [ { "name" : "0" }, { "name" : "1" }, { "name" : "2" } ] }, { "name" : "topic-84234378", "partitions" : [ { "name" : "0" }, { "name" : "1" }, { "name" : "2" } ] } ], "groups" : [ { "name" : "test-consumer-group", "queues" : [ { "name" : "mytest", "partitions" : [ { "name" : "0" }, { "name" : "1" }, { "name" : "2" } ] } ] } ] }
  • 响应参数 状态码: 200 表2 响应Body参数 参数 参数类型 描述 dimensions Array of dimensions objects 监控维度。 instance_ids Array of instance_ids objects 实例信息。 nodes Array of nodes objects 节点信息。 queues Array of queues objects 队列信息。 groups Array of groups objects 消费组信息。 表3 dimensions 参数 参数类型 描述 name String 监控维度名称。 metrics Array of strings 监控指标名称。 key_name Array of strings 监控查询使用的key。 dim_router Array of strings 监控维度路由。 children Array of children objects 子维度列表。 表4 children 参数 参数类型 描述 name String 子维度名称。 metrics Array of strings 监控指标名称列表。 key_name Array of strings 监控查询使用的key。 dim_router Array of strings 监控维度路由。 表5 instance_ids 参数 参数类型 描述 name String 实例ID。 表6 nodes 参数 参数类型 描述 name String 节点名称。 表7 queues 参数 参数类型 描述 name String topic名称。 partitions Array of partitions objects 分区列表。 表8 partitions 参数 参数类型 描述 name String 分区名称。 表9 groups 参数 参数类型 描述 name String 消费组名称。 queues Array of queues objects topic信息。 表10 queues 参数 参数类型 描述 name String topic名称。 partitions Array of partitions objects 分区信息。 表11 partitions 参数 参数类型 描述 name String 分区名称。
  • 响应消息 响应参数 参数说明见表1、表2。 表1 参数说明 参数 类型 说明 region_id String 区域ID。 available_zones Array 可用区数组,具体请参考表2。 表2 available_zones参数说明 参数 类型 说明 soldOut Boolean 是否售罄。 id String 可用区ID。 code String 可用区编码。 name String 可用区名称。 port String 可用区端口号。 resource_availability String 分区上是否还有可用资源。 true:还有资源。 false:资源已售罄。 响应示例 { regionId: "XXXX", available_zones:[ { "id":"1d7b939b382c4c3bb3481a8ca10da768", "name":"az10.dc1", "code":"az10.dc1", "port":"8002", "resource_availability": "true" }, { "id":"1d7b939b382c4c3bb3481a8ca10da769", "name":"az10.dc2", "code":"az10.dc2", "port":"8002", "resource_availability": "true" } ] }
  • 请求示例 修改实例的连接空闲超时和日志删除的时间阈值。 PUT https://{endpoint}/v2/{project_id}/instances/{instance_id}/configs { "kafka_configs" : [ { "name" : "connections.max.idle.ms", "value" : "500000" }, { "name" : "log.retention.hours", "value" : "66" } ] }
  • 响应消息 响应参数 参数说明见表表1、表2 表1 响应参数说明 参数 类型 说明 maintain_windows Array 支持的维护时间窗列表 表2 maintain_windows参数说明 参数 类型 说明 seq Integer 序号。 begin String 维护时间窗开始时间。 end String 维护时间窗结束时间。 default Boolean 是否为默认时间段。 响应示例 { "maintain_windows": [{ "default": false, "seq": 1, "begin": "22:00:00", "end": "02:00:00" }, { "default": true, "seq": 2, "begin": "02:00:00", "end": "06:00:00" }, { "default": false, "seq": 3, "begin": "06:00:00", "end": "10:00:00" }, { "default": false, "seq": 4, "begin": "10:00:00", "end": "14:00:00" }, { "default": false, "seq": 5, "begin": "14:00:00", "end": "18:00:00" }, { "default": false, "seq": 6, "begin": "18:00:00", "end": "22:00:00" }] }
  • 响应示例 状态码: 200 查询产品规格列表成功。 { "Hourly" : [ { "name" : "kafka", "version" : "1.1.0", "values" : [ { "detail" : [ { "tps" : "50000", "storage" : "200", "partition_num" : "300", "product_id" : "00300-30308-0--0", "spec_code" : "dms.instance.kafka.cluster.c3.mini", "io" : [ { "io_type" : "normal", "storage_spec_code" : "dms.physical.storage.normal", "available_zones" : [ "cn-north-7b", "cn-north-7a", "cn-north-7c" ], "volume_type" : "SATA" }, { "io_type" : "high", "storage_spec_code" : "dms.physical.storage.high", "unavailable_zones" : [ "cn-north-7b", "cn-north-7a", "cn-north-7c" ], "available_zones" : [ ], "volume_type" : "SAS" }, { "io_type" : "ultra", "storage_spec_code" : "dms.physical.storage.ultra", "unavailable_zones" : [ "cn-north-7b", "cn-north-7a", "cn-north-7c" ], "available_zones" : [ ], "volume_type" : "SSD" } ], "bandwidth" : "100MB", "unavailable_zones" : [ "cn-north-7b", "cn-north-7a" ], "available_zones" : [ "cn-north-7c" ], "ecs_flavor_id" : "s6.large.2", "arch_type" : "X86" }, { "tps" : "100000", "storage" : "1200", "partition_num" : "900", "product_id" : "00300-30310-0--0", "spec_code" : "dms.instance.kafka.cluster.c3.small.2", "io" : [ { "io_type" : "normal", "storage_spec_code" : "dms.physical.storage.normal", "available_zones" : [ "cn-north-7b", "cn-north-7a", "cn-north-7c" ], "volume_type" : "SATA" }, { "io_type" : "high", "storage_spec_code" : "dms.physical.storage.high", "unavailable_zones" : [ "cn-north-7b", "cn-north-7a", "cn-north-7c" ], "available_zones" : [ ], "volume_type" : "SAS" }, { "io_type" : "ultra", "storage_spec_code" : "dms.physical.storage.ultra", "unavailable_zones" : [ "cn-north-7b", "cn-north-7a", "cn-north-7c" ], "available_zones" : [ ], "volume_type" : "SSD" } ], "bandwidth" : "300MB", "unavailable_zones" : [ "cn-north-7b", "cn-north-7a" ], "available_zones" : [ "cn-north-7c" ], "ecs_flavor_id" : "c3.medium.2", "arch_type" : "X86" } ], "name" : "cluster", "unavailable_zones" : [ "cn-north-7b", "cn-north-7a" ], "available_zones" : [ "cn-north-7c" ] } ] } ], "Monthly" : [ { "name" : "kafka", "version" : "1.1.0", "values" : [ { "detail" : [ { "tps" : "50000", "storage" : "200", "partition_num" : "300", "product_id" : "00300-30309-0--0", "spec_code" : "dms.instance.kafka.cluster.c3.mini", "io" : [ { "io_type" : "normal", "storage_spec_code" : "dms.physical.storage.normal", "available_zones" : [ "cn-north-7b", "cn-north-7a", "cn-north-7c" ], "volume_type" : "SATA" }, { "io_type" : "high", "storage_spec_code" : "dms.physical.storage.high", "unavailable_zones" : [ "cn-north-7b", "cn-north-7a", "cn-north-7c" ], "available_zones" : [ ], "volume_type" : "SAS" }, { "io_type" : "ultra", "storage_spec_code" : "dms.physical.storage.ultra", "unavailable_zones" : [ "cn-north-7b", "cn-north-7a", "cn-north-7c" ], "available_zones" : [ ], "volume_type" : "SSD" } ], "bandwidth" : "100MB", "unavailable_zones" : [ "cn-north-7b", "cn-north-7a" ], "available_zones" : [ "cn-north-7c" ], "ecs_flavor_id" : "s6.large.2", "arch_type" : "X86" }, { "tps" : "100000", "storage" : "1200", "partition_num" : "900", "product_id" : "00300-30311-0--0", "spec_code" : "dms.instance.kafka.cluster.c3.small.2", "io" : [ { "io_type" : "normal", "storage_spec_code" : "dms.physical.storage.normal", "available_zones" : [ "cn-north-7b", "cn-north-7a", "cn-north-7c" ], "volume_type" : "SATA" }, { "io_type" : "high", "storage_spec_code" : "dms.physical.storage.high", "unavailable_zones" : [ "cn-north-7b", "cn-north-7a", "cn-north-7c" ], "available_zones" : [ ], "volume_type" : "SAS" }, { "io_type" : "ultra", "storage_spec_code" : "dms.physical.storage.ultra", "unavailable_zones" : [ "cn-north-7b", "cn-north-7a", "cn-north-7c" ], "available_zones" : [ ], "volume_type" : "SSD" } ], "bandwidth" : "300MB", "unavailable_zones" : [ "cn-north-7b", "cn-north-7a" ], "available_zones" : [ "cn-north-7c" ], "ecs_flavor_id" : "c3.medium.2", "arch_type" : "X86" } ], "name" : "cluster", "unavailable_zones" : [ "cn-north-7b", "cn-north-7a" ], "available_zones" : [ "cn-north-7c" ] } ] } ] }
  • 响应参数 状态码: 200 表2 响应Body参数 参数 参数类型 描述 Hourly Array of Hourly objects 表示按需付费的产品列表。 Monthly Array of Monthly objects 表示包年包月的产品列表。当前暂不支持通过API创建包年包月的Kafka实例。 表3 Hourly 参数 参数类型 描述 name String 消息引擎的名称,该字段显示为kafka。 version String 消息引擎的版本,当前支持1.1.0、2.3.0和2.7。 values Array of values objects 产品规格列表。 表4 values 参数 参数类型 描述 detail Array of detail objects 规格详情。 name String 实例类型。 unavailable_zones Array of strings 资源售罄的可用区列表。 available_zones Array of strings 有可用资源的可用区列表。 表5 detail 参数 参数类型 描述 tps String 单位时间内的消息量最大值。 storage String 消息存储空间。 partition_num String Kafka实例的分区数量。 product_id String 产品ID。 spec_code String 规格ID。 io Array of io objects IO信息。 bandwidth String Kafka实例的基准带宽。 unavailable_zones Array of strings 资源售罄的可用区列表。 available_zones Array of strings 有可用资源的可用区列表。 ecs_flavor_id String 该产品规格对应的虚拟机规格。 arch_type String 实例规格架构类型。当前仅支持X86。 表6 io 参数 参数类型 描述 io_type String IO类型。 storage_spec_code String IO规格。 available_zones Array of strings IO未售罄的可用区列表。 unavailable_zones Array of strings IO已售罄的不可用区列表。 volume_type String 磁盘类型。 表7 Monthly 参数 参数类型 描述 name String 消息引擎的名称,该字段显示为kafka。 version String 消息引擎的版本,当前支持1.1.0、2.3.0和2.7。 values Array of values objects 产品规格列表。 表8 values 参数 参数类型 描述 detail Array of detail objects 规格详情。 name String 实例类型。 unavailable_zones Array of strings 资源售罄的可用区列表。 available_zones Array of strings 有可用资源的可用区列表。 表9 detail 参数 参数类型 描述 tps String 单位时间内的消息量最大值。 storage String 消息存储空间。 partition_num String Kafka实例的分区数量。 product_id String 产品ID。 spec_code String 规格ID。 io Array of io objects IO信息。 bandwidth String Kafka实例的基准带宽。 unavailable_zones Array of strings 资源售罄的可用区列表。 available_zones Array of strings 有可用资源的可用区列表。 ecs_flavor_id String 该产品规格对应的虚拟机规格。 arch_type String 实例规格架构类型。当前仅支持X86。 表10 io 参数 参数类型 描述 io_type String IO类型。 storage_spec_code String IO规格。 available_zones Array of strings IO未售罄的可用区列表。 unavailable_zones Array of strings IO已售罄的不可用区列表。 volume_type String 磁盘类型。
  • 功能介绍 在创建Kafka实例时,需要配置订购的产品ID(即product_id),可通过该接口查询产品规格。 例如,要订购按需计费、基准带宽为100MB的Kafka实例,可从接口响应消息中,查找Hourly的消息体,然后找到bandwidth为100MB的记录对应的product_id,该product_id的值即是创建上述Kafka实例时需要配置的产品ID。 同时,unavailable_zones字段表示资源不足的可用区列表,如果为空,则表示所有可用区都有资源,如果不为空,则表示字段值的可用区没有资源。所以必须确保您购买的资源所在的可用区有资源,不在该字段列表内。 当前页面API为历史版本API,未来可能停止维护。请使用查询产品规格列表。
  • 响应示例 状态码: 200 实例缩容前置检查 { "success" : false, "check_detail" : [ { "broker_id" : 4, "can_delete" : false, "is_zk_node" : false, "is_controller" : false, "has_topics" : true, "topics" : [ "test" ] } ] }
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 success Boolean 缩容检查是否通过 check_detail Array of check_detail objects broker检查结果 表4 check_detail 参数 参数类型 描述 broker_id Integer broker序号 can_delete Boolean 节点是否可删除。 is_zk_node Boolean 节点是否为zk部署节点。 is_controller Boolean broker是否为controller。 has_topics Boolean broker上是否存在topic数据。 topics Array of strings broker上存在的topic列表。
  • 请求示例 重置的消费进度到指定偏移量。 POST https://{endpoint}/v2/kafka/{project_id}/instances/{instance_id}/groups/{group}/reset-message-offset { "topic" : "test", "partition" : 0, "message_offset" : 10 } 重置的消费进度到指定时间。 POST https://{endpoint}/v2/kafka/{project_id}/instances/{instance_id}/groups/{group}/reset-message-offset { "topic" : "test", "partition" : 0, "timestamp" : 1571812144000 }
  • 请求参数 表2 请求Body参数 参数 是否必选 参数类型 描述 topic 否 String topic名称。 partition 是 Integer 分区编号,默认值为-1,若传入值为-1,则重置所有分区。 message_offset 否 Long 重置消费进度到指定偏移量。 如果传入offset小于当前最小的offset,则重置到最小的offset。 如果大于最大的offset,则重置到最大的offset。 message_offset、timestamp二者必选其一。 timestamp 否 Long 重置消费进度到指定时间,格式为unix时间戳,单位为毫秒。 如果传入timestamp早于当前最早的timestamp,则重置到最早的timestamp。 如果晚于最晚的timestamp,则重置到最晚的timestamp。 message_offset、timestamp二者必选其一。
  • 响应示例 状态码: 200 OK { "database" : { "name" : "db_7567", "created" : "1604631243234", "status" : "RUNNING", "updated" : "1604631243234", "databases" : [ { "id" : "e70a82534a364492b795c5080e3a1591in01", "name" : "db_7567_0000", "idName" : "db_7567_0000", "dbslot" : 0, "status" : "RUNNING", "created" : "1604631243234", "updated" : "1604631243234" }, { "id" : "e70a82534a364492b795c5080e3a1591in01", "name" : "db_7567_0001", "idName" : "db_7567_0001", "dbslot" : 1, "status" : "RUNNING", "created" : "1604631243234", "updated" : "1604631243234" }, { "id" : "e70a82534a364492b795c5080e3a1591in01", "name" : "db_7567_0002", "idName" : "db_7567_0002", "dbslot" : 2, "status" : "RUNNING", "created" : "1604631243234", "updated" : "1604631243234" }, { "id" : "e70a82534a364492b795c5080e3a1591in01", "name" : "db_7567_0003", "idName" : "db_7567_0003", "dbslot" : 3, "status" : "RUNNING", "created" : "1604631243234", "updated" : "1604631243234" }, { "id" : "e70a82534a364492b795c5080e3a1591in01", "name" : "db_7567_0004", "idName" : "db_7567_0004", "dbslot" : 4, "status" : "RUNNING", "created" : "1604631243234", "updated" : "1604631243234" }, { "id" : "e70a82534a364492b795c5080e3a1591in01", "name" : "db_7567_0005", "idName" : "db_7567_0005", "dbslot" : 5, "status" : "RUNNING", "created" : "1604631243234", "updated" : "1604631243234" }, { "id" : "e70a82534a364492b795c5080e3a1591in01", "name" : "db_7567_0006", "idName" : "db_7567_0006", "dbslot" : 6, "status" : "RUNNING", "created" : "1604631243234", "updated" : "1604631243234" }, { "id" : "e70a82534a364492b795c5080e3a1591in01", "name" : "db_7567_0007", "idName" : "db_7567_0007", "dbslot" : 7, "status" : "RUNNING", "created" : "1604631243234", "updated" : "1604631243234" } ], "shard_mode" : "cluster", "shard_number" : 8, "shard_unit" : 8, "dataVips" : [ "192.168.185.97:5066" ], "used_rds" : [ { "id" : "e70a82534a364492b795c5080e3a1591in01", "name" : "rds-5338", "status" : "normal" } ] } } 状态码: 400 bad request { "externalMessage" : "Parameter error.", "errCode" : "DBS.280001" } 状态码: 500 server error { "externalMessage" : "Server failure.", "errCode" : "DBS.200412" }
  • URI GET /v1/{project_id}/instances/{instance_id}/databases/{ddm_dbname} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID。 获取方法请参见获取项目ID。 instance_id 是 String DDM实例ID。 ddm_dbname 是 String 需要查询的逻辑库名称,不区分大小写。
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 database GetDatabaseResponseBean object 逻辑库信息。 表4 GetDatabaseResponseBean 参数 参数类型 描述 name String 逻辑库名称。 created String 逻辑库的创建时间。 status String 状态。 updated String DDM实例最后更新时间。 databases Array of GetDatabases objects 逻辑库分片的详细信息。 shard_mode String 逻辑库的工作模式。 cluster表示逻辑库是拆分模式。 single表示逻辑库是非拆分模式。 shard_number Integer 同一种工作模式下逻辑库分片的数量。 shard_unit Integer 单个RDS上的逻辑库分片数。 dataVips Array of strings 连接逻辑库使用的IP:端口。 used_rds Array of GetDatabaseUsedRds objects 关联RDS。 表5 GetDatabases 参数 参数类型 描述 dbslot Integer 分片数。 name String 分片名称。 status String 状态。 created String 创建时间。 updated String 最近更新时间。 id String 所在RDS的ID。 idName String 物理库的名称。 表6 GetDatabaseUsedRds 参数 参数类型 描述 id String 关联RDS节点ID。 name String 关联RDS名称。 status String 关联RDS状态。 error_msg String 响应信息,若无异常信息则不返回该参数。 状态码: 400 表7 响应Body参数 参数 参数类型 描述 errCode String 业务错误码。 externalMessage String 错误信息。 状态码: 500 表8 响应Body参数 参数 参数类型 描述 errCode String 业务错误码。 externalMessage String 错误信息。
  • 发起请求 共有三种方式可以基于已构建好的请求消息发起请求,分别为: cURL cURL是一个命令行工具,用来执行各种URL操作和信息传输。cURL充当的是HTTP客户端,可以发送HTTP请求给服务端,并接收响应消息。cURL适用于接口调试。关于cURL详细信息请参见https://curl.haxx.se/。 为了安全起见,在服务器上使用curl命令调用接口查询信息后,需要清理历史操作记录,包括但不限于“~/.bash_history”、“/var/log/messages”(如有)。 编码 通过编码调用接口,组装请求消息,并发送处理请求消息。 REST客户端 Mozilla、Google都为REST提供了图形化的浏览器插件,发送处理请求消息。针对Firefox,请参见Firefox REST Client。针对Chrome,请参见Chrome REST Client。
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 可选的附加请求头字段,如指定的URI和HTTP方法所要求的字段。详细的公共请求消息头字段请参见表3。 表3 公共请求消息头 名称 描述 是否必选 示例 Host 请求的服务器信息,从服务API的URL中获取。值为hostname[:port]。端口缺省时使用默认的端口,https的默认端口为443。 否 使用AK/SK认证时该字段必选。 code.test.com or code.test.com:443 Content-Type 发送的实体的MIME类型。推荐用户默认使用application/json,如果API是对象、镜像上传等接口,媒体类型可按照流类型的不同进行确定。 是 application/json Content-Length 请求body长度,单位为Byte。 POST请求为可选,GET请求该字段值留空。 3495 X-Project-Id project id,项目编号。请参考获取项目ID章节获取项目编号。 否 如果是专属云场景采用AK/SK 认证方式的接口请求或者多project场景采用AK/SK认证的接口请求则该字段必选。 e9993fc787d94b6c886cbaa340f9c0f4 X-Auth-Token 用户Token。 请求响应成功后在响应消息头中包含的“X-Subject-Token”的值即为Token值。 否 使用Token认证时该字段必选。 注:以下仅为Token示例片段 MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ API同时支持使用AK/SK认证,AK/SK认证是使用SDK对请求进行签名,签名过程会自动往请求中添加Authorization(签名认证信息)和X-Sdk-Date(请求发送的时间)请求头。 AK/SK认证的详细说明请参见AK/SK认证。
  • 请求消息体(可选) 该部分可选。请求消息体通常以结构化格式(如JSON或XML)发出,与请求消息头中Content-Type对应,传递除请求消息头之外的内容。若请求消息体中的参数支持中文,则中文字符必须为UTF-8编码。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根据具体接口而定。 对于获取用户Token接口,您可以从接口的请求部分看到所需的请求参数及参数说明。将消息体加入后的请求如下所示,加粗的斜体字段需要根据实际值填写,其中username为用户名,domainname为用户所属的账号名称,********为用户登录密码,xxxxxxxxxxxxxxxxxx为project的名称,如“cn-north-1”,您可以从地区和终端节点获取。 scope参数定义了Token的作用域,上面示例中获取的Token仅能访问project下的资源。您还可以设置Token的作用域为某个账号下所有资源或账号的某个project下的资源。 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "name": "xxxxxxxxxxxxxxxxxx" } } } } 到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编写代码等方式发送请求调用API。对于获取用户Token接口,返回的响应消息头中“X-Subject-Token”就是需要获取的用户Token。有了Token之后,您就可以使用Token认证调用其他API。
  • 请求URI 请求URI由如下部分组成。 {URI-scheme} :// {Endpoint} / {resource-path} ? {query-string} 尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传递它,所有在此单独拿出来强调。 表1 URI中的参数说明 参数 描述 URI-scheme 表示用于传输请求的协议,当前所有API均采用HTTPS协议。 Endpoint 指定承载REST服务端点的服务器域名或IP,不同服务不同区域的Endpoint不同。您可以从地区和终端节点获取。 例如 IAM 服务在“华北-北京一”区域的Endpoint为“iam.cn-north-1.myhuaweicloud.com”。 resource-path 资源路径,即API访问路径。从具体API的URI模块获取,例如“获取用户Token”API的resource-path为“/v3/auth/tokens”。 Query string 查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个“?”,形式为“参数名=参数取值”,例如“limit=10”,表示查询不超过10条数据。 例如您需要获取IAM在“华北-北京一”区域的Token,则需使用“华北-北京一”区域的Endpoint(iam.cn-north-1.myhuaweicloud.com),并在获取用户Token的URI部分找到resource-path(/v3/auth/tokens),拼接起来如下所示。 1 https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens 图1 URI示意图
  • 请求方法 HTTP方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。 表2 HTTP方法 方法 说明 GET 请求服务器返回指定资源。 PUT 请求服务器更新指定资源。 POST 请求服务器新增资源或执行特殊操作。 DELETE 请求服务器删除指定资源,如删除对象等。 在获取用户Token的URI部分,您可以看到其请求方法为“POST”,则其请求为: 1 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens
  • 响应示例 状态码: 200 OK { "users" : [ { "name" : "ddmtest", "status" : "RUNNING", "base_authority" : [ "SELECT" ], "description" : "账号", "created" : "2019-10-30T11:01:24+0800", "databases" : [ { "name" : "zhxtest", "description" : "逻辑库" } ] } ], "page_no" : 1, "page_size" : 10, "total_record" : 1, "total_page" : 1 } 状态码: 400 bad request { "externalMessage" : "Parameter error.", "errCode" : "DBS.280001" } 状态码: 500 server error { "externalMessage" : "Server failure.", "errCode" : "DBS.200412" }
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 users Array of GetUsersListDetailResponses objects DDM实例账号相关信息的集合。 page_no Integer 当前页码。 page_size Integer 当前页码的数据条数。 total_record Integer 总条数。 total_page Integer 总页数。 表5 GetUsersListDetailResponses 参数 参数类型 描述 name String DDM实例账号名称。 status String DDM实例账号状态。 base_authority Array of strings DDM实例账号的基础权限。 取值为:CREATE、DROP、ALTER、INDEX、INSERT、DELETE、UPDATE、SELECT extend_authority Array of strings DDM实例账号的扩展权限。2021年8月开始不支持该字段,9月会去掉该字段。 取值为:fulltableDelete、fulltableSelect、fulltableUpdate description String DDM实例账号的描述。 created Long DDM实例账号的创建时间。 databases Array of GetUsersListdatabase objects 关联的逻辑库的集合。 表6 GetUsersListdatabase 参数 参数类型 描述 name String DDM实例账号关联的逻辑库名称。 description String 逻辑库的描述信息。 状态码: 400 表7 响应Body参数 参数 参数类型 描述 errCode String 业务错误码。 externalMessage String 错误信息。 状态码: 500 表8 响应Body参数 参数 参数类型 描述 errCode String 业务错误码。 externalMessage String 错误信息。
  • URI GET /v1/{project_id}/instances/{instance_id}/users?offset={offset}&limit={limit} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID。 获取方法请参见获取项目ID。 instance_id 是 String DDM实例ID。 表2 Query参数 参数 是否必选 参数类型 描述 offset 否 Integer 索引位置,偏移量。 从第一条数据偏移offset条数据后开始查询,默认为0。 取值必须为数字,且不能为负数。 limit 否 Integer 查询个数上限值。 取值范围:1~128。 不传该参数时,默认值为10。
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 databases Array of GetDatabaseInfo objects 逻辑库相关信息的集合。 total Integer 总条数。 表5 GetDatabaseInfo 参数 参数类型 描述 name String 逻辑库名称。 shard_mode String 逻辑库的工作模式。 cluster表示逻辑库是拆分模式。 single表示逻辑库是非拆分模式。 shard_number Integer 同一种工作模式下逻辑库分片的数量。 status String 逻辑库状态。 created String 逻辑库的创建时间。 used_rds Array of GetDatabaseUsedRds objects 逻辑库关联的RDS实例信息。 shard_unit Integer 单个RDS上的逻辑库分片数。 表6 GetDatabaseUsedRds 参数 参数类型 描述 id String 关联RDS节点ID。 name String 关联RDS名称。 status String 关联RDS状态。 error_msg String 响应信息,若无异常信息则不返回该参数。 状态码: 400 表7 响应Body参数 参数 参数类型 描述 errCode String 业务错误码。 externalMessage String 错误信息。 状态码: 500 表8 响应Body参数 参数 参数类型 描述 errCode String 业务错误码。 externalMessage String 错误信息。
  • URI GET /v1/{project_id}/instances/{instance_id}/databases?offset={offset}&limit={limit} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID。 获取方法请参见获取项目ID。 instance_id 是 String DDM实例ID。 表2 Query参数 参数 是否必选 参数类型 描述 offset 否 Integer 索引位置,偏移量。 从第一条数据偏移offset条数据后开始查询,默认为0。 取值必须为数字,且不能为负数。 limit 否 Integer 查询个数上限值。 取值范围:1~128。 不传该参数时,默认值为10。
  • 响应示例 状态码: 200 OK { "databases" : [ { "status" : "RUNNING", "created" : "1642063713625", "name" : "mytestdb170", "shard_mode" : "cluster", "shard_number" : 8, "shard_unit" : 8, "used_rds" : [ { "id" : "c6f68fed9e74478c8679479a07d7d568in01", "status" : "normal", "name" : "rds-test" } ] } ], "total" : 172 } 状态码: 400 bad request { "externalMessage" : "Parameter error.", "errCode" : "DBS.280001" } 状态码: 500 server error { "externalMessage" : "Server failure.", "errCode" : "DBS.200412" }
  • AK/SK认证 AK/SK签名认证方式仅支持消息体大小12MB以内,12MB以上的请求请使用Token认证。 AK/SK认证就是使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而通过身份认证。 AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。 SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。 使用AK/SK认证时,您可以基于签名算法使用AK/SK对请求进行签名,也可以使用专门的签名SDK对请求进行签名。详细的签名方法和SDK使用方法请参见API签名指南。 签名SDK只提供签名功能,与服务提供的SDK不同,使用时请注意。
  • Token认证 Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存起来,避免频繁调用。 Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。Token认证就是在调用API的时候将Token加到请求消息头,从而通过身份认证,获得操作API的权限。 Token可通过调用获取用户Token接口获取,调用本服务API需要project级别的Token,即调用获取用户Token接口时,请求body中auth.scope的取值需要选择project,如下所示。 { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "name": "xxxxxxxx" } } } } 在构造请求中以调用获取用户Token接口为例说明了如何调用API。 获取Token 后,再调用其他接口时,您需要在请求消息头中添加“X-Auth-Token”,其值即为Token。例如Token值为“ABCDEFJ....”,则调用接口时将“X-Auth-Token: ABCDEFJ....”加到请求消息头即可,如下所示。 1 2 3 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/projects Content-Type: application/json X-Auth-Token: ABCDEFJ.... 您还可以通过这个视频教程了解如何使用Token认证:https://bbs.huaweicloud.com/videos/101333 。
  • 自定义策略样例 授权用户购买、绑定、和查看激活码权限。 { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "CodeArtsIDE:license:purchase", "CodeArtsIDE:license:bind", "CodeArtsIDE:license:list" ] } ] } 授权用户使用CodeArts IDE所有权限。 { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "CodeArtsIDE:*:*" ] } ] } 禁止用户购买CodeArts IDE激活码。 用户被授予的策略中,一个授权项的作用如果同时存在Allow和Deny,则遵循Deny优先原则。因此禁止策略需要同时配合其他策略使用,否则没有实际作用。 例如:如果授予用户CodeArts IDE FullAccess的系统策略,但不希望用户拥有CodeArts IDE FullAccess中定义的购买CodeArts IDE激活码权限,可以创建一条禁止购买CodeArts IDE激活码的自定义策略,同时将CodeArts IDE FullAccess和禁止策略授予用户,根据Deny优先原则,则用户可以对CodeArts IDE执行除了购买CodeArts IDE激活码外的所有操作。禁止策略示例如下: { "Version": "1.1", "Statement": [ { "Effect": "Deny", "Action": [ "CodeArtsIDE:license:purchase" ] } ] }
共100000条