华为云用户手册

  • 消息结构体介绍 表1 message_type为device_unbind时,data结构体如下: 字段名 类型 说明 message_type(Json内层) String 消息类型 枚举值: DELETE_DEVICE 设备删除 UNBIND_DEVICE 设备解绑 UNBIND_MANAGE 接入调阅解绑 UNBIND_MOTION 动检云存储解绑 UNBIND_NORMAL 连续云存储解绑 UNBIND_DATAFLOW 行业数据流解绑 devices Array of Device Objects 设备对象,包含一或多个设备的对象 表2 Device 字段名 类型 说明 device_id String 设备ID channel_id String 通道ID message Message Object 套餐解绑时的详细信息 表3 Message 字段名 类型 说明 resource_id String 套餐ID 示例一、删除设备 { "message_id": 1676624636867660931, "message_type": "device_unbind", "data": { "message_type": "DELETE_DEVICE", "devices": [ { "device_id": "11111111111111111111", "channel_id": "", "message": null } ] }, "test": false } 示例二、解绑套餐 { "message_id": 1676624334098133709, "message_type": "device_unbind", "data": { "message_type": "UNBIND_MANAGE", "devices": [ { "device_id": "210123456SMY***", "channel_id": "0", "message": { "resource_id": "791afbac769f4edea98fea92bc5fcc7d" } } ] }, "test": false }
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 targets Array of TargetVo objects 目标列表(SDC仅返回图片信息和用户传入的目标ID) 表5 TargetVo 参数 参数类型 描述 target_id String 目标ID:目标标识符 name String 姓名 gender String 性别 age Integer 年龄 country String 国家 nation String 民族 native String 籍贯 occupation String 职业 organization String 组织名称 work_no String 工号或身份证号 phone String 电话 email String email domicile String 居住地 remark String 备注 eigen_value String 图片特征值 jpg String 图片内容:经过base64编码 start_time String 开始时间 end_time String 结束时间 external_target_id String 用户传入的目标ID:用户自定义的,在添加目标的时候由客户填入
  • 响应示例 状态码: 200 OK { "targets" : [ { "name" : "mark", "gender" : "male", "age" : 24, "country" : "中国", "nation" : "汉", "native" : "杭州", "occupation" : "工人", "work_no" : "124****77", "phone" : "15********61", "email" : "1*********@qq.com", "domicile" : "杭州", "remark" : "无", "jpegBase64" : "/9j/4AAQSkZJRgABAQAAAQABAAD..." } ], "target_id" : "2", "external_target_id" : "1234567890123456" }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 Access-Token 是 String 用户认证AccessToken:从获取用户北向接口认证AccessToken中获取 表3 请求Body参数 参数 是否必选 参数类型 描述 device_id 是 String 设备ID: 好望设备:大小写字母、数字组成,长度范围[8,32],可在设备外壳或者设备web页面上获取 target_ids 是 Array of strings 目标ID列表:数组长度范围[1,100] 目标ID:支持数字和-,长度范围[1,20],SDC的目标ID需要带上目标库ID(目标库ID_目标ID的形式), 可以从按索引范围获取目标ID列表、获取目标信息、按索引范围获取目标ID信息中获取
  • 响应参数 状态码: 200 表7 响应Body参数 参数 参数类型 描述 failed_num Integer 失败数量 channels Array of ChannelResult objects 通道结果 表8 ChannelResult 参数 参数类型 描述 device_id String 设备ID: 好望设备:大小写字母、数字组成,长度范围[8,32],可在设备外壳或者设备web页面上获取 国标设备:由数字组成,长度为20个字符长度,由客户自行设置,其中第11-13位,必须是以下之一132(IPC)、111(DVR)、118(NVR),用来区分设备类型 channel_id String 通道ID: 好望设备:取值范围[0,999] 国标设备:由数字组成,长度为20个字符,由客户自行在设备侧设置,可以在web界面获取 result Result object 结果信息 表9 Result 参数 参数类型 描述 code String 错误编码 msg String 错误信息
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 Access-Token 是 String 用户认证AccessToken:从获取用户北向接口认证AccessToken中获取 表3 请求Body参数 参数 是否必选 参数类型 描述 channels 是 Array of SetChannelRecordAlarmPlanReq objects 设置通道录像计划请求体 表4 SetChannelRecordAlarmPlanReq 参数 是否必选 参数类型 描述 device_id 是 String 设备ID: 好望设备:大小写字母、数字组成,长度范围[8,32],可在设备外壳或者设备web页面上获取 国标设备:由数字组成,长度为20个字符长度,由客户自行设置,其中第11-13位,必须是以下之一132(IPC)、111(DVR)、118(NVR),用来区分设备类型 channel_id 是 String 通道ID: 好望设备:取值范围[0,999] 国标设备:由数字组成,长度为20个字符,由客户自行在设备侧设置,可以在web界面获取 stream_type 否 String 码流类型(目前定为主码流,不用传,为后续需求留用) plans 是 Array of SetChannelRecordAlarmPlan objects 录像计划:列表长度范围[1,21] all_day 否 Boolean 是否全程录像:枚举类型,默认为false,如果为true,time_sections省略(不进行校验) 枚举值: true 是 false 否 time_sections 否 Array of TimeSection objects 通道录像计划时间段,取值范围[1,+∞)。如果all_day字段为空或为false,则字段必填 表5 SetChannelRecordAlarmPlan 参数 是否必选 参数类型 描述 alarm_type 是 String 告警类型:枚举类型 枚举值: motion_detection 移动侦测报警 io_event 外部IO输入报警 target_alarm 目标报警 mask_alarm 口罩报警 people_queue_alarm 排队长度报警 people_count_region_alarm 区域人数统计报警 people_count_line_alarm 过线人数统计报警 over_line_alarm 越线检测报警 region_invasion_alarm 区域入侵报警 region_in_alarm 区域进入报警 region_out_alarm 区域离开报警 fast_move_alarm 快速移动报警 linger_alarm 徘徊检测报警 thirdparty_intelligent 第三方告警 face_alarm 人脸告警 abandon_alarm 物品遗留告警 removed_alarm 物品移走告警 electric_bicycle_alarm 电瓶车检测告警 people_leave_station_alarm 人员离岗告警 lift_electric_alarm 电梯电瓶车告警_新 occlusion_alarm 遮挡告警 advance_time 是 Integer 预录时间,取值范围[1,59] after_time 是 Integer 延录时间,取值范围[1,59]。advance_time和after_time相加要不超过60s。 表6 TimeSection 参数 是否必选 参数类型 描述 day_of_week 是 Integer 日期:取值范围[1,7](对应周一~周日) start_time 是 String 录像开始时间:格式为HH:mm:ss,范围为[00:00:00~23:59:59] end_time 是 String 录像结束时间:格式为HH:mm:ss,范围为[00:00:00~23:59:59]
  • 消息结构体介绍 表1 message_type为vehicle_data时,data结构体如下: 字段名 类型 说明 device_id String 设备ID,正常情况下不为空,必传 channel_id String 通道ID,正常情况下不为空,必传 data_id String 数据ID:正常情况下不为空,必传。可用于查询智能图片数据,参考链接:智能图片下载 itgt_type Int 智能业务场景 枚举值: 6 机非人业务目标整体信息 7 机非人业务机动车信息 8 机非人业务非机动车信息 53 非机动车上目标检测 report_time String 上报时间,示例:2021-03-15T16:43:00+08:00 global_obj_id Int64 全局ID,设备传入的唯一标识 lane_id Int64 车道号 vehicle_direction Int 车辆运动方向 枚举值: 0 未知 1 向左 2 向右 3 向上 4 向下 plate_char String 车牌字符,当检测到机动车属性时传该值 plate_color Int 车牌颜色,当检测到机动车属性时传该值,见附录车牌颜色 vehicle_type Int 机非人类型,当检测到机非人属性时传该值,见附录机非人类型 vehicle_color Int 车辆颜色,当检测到机动车属性时传该值,见附录车辆颜色 car_pre_brand Int 品牌字符索引,当检测到机动车属性时传该值,见附录车款类型 car_sub_brand Int 子款符号索引,当检测到机动车属性时传该值 car_year_brand String 年款符号,当检测到机动车属性时传该值 rider_age_range Int 骑行人年龄范围 枚举值: 0 未知 1 少年 2 青年 3 老年 rider_gender Int 骑行人性别 枚举值: 0 未知 1 男性 2 女性 has_helmet Boolen 是否戴头盔 helmet_color Int 头盔颜色 motor_color Int 非机动车颜色 has_motor_sunshade Boolen 是否有遮阳伞 has_motor_carry Boolen 是否有携带物 has_license_plate Boolen 是否有车牌 rider_num Int 骑行人数 motor_type Int 非机动车类型 vehicle_url String 车辆特写图url target_all_pic_url String 目标整体抠图url panorama_url String 全景图片url vehicle_pos RectCor object 车辆检测框位置万分比 human_pos RectCor object 目标整体位置万分比 human_age Int 行人年龄 枚举值: 0 未知 1 少年 2 青年 3 老年 human_gender Int 行人性别 枚举值: 0 未知 1 男性 2 女性 human_upperstyle Int 上衣款式 0 未知 1 长袖 2 短袖 human_uppercolor Int 上衣颜色 human_lowstyle Int 下衣款式 human_lowercolor Int 下衣颜色 human_shape Int 体型 human_mouthmask Int 行人口罩 human_hair Int 行人头发 common Common object 通用数据定义 target Target object 目标:设备上传TLV时的设备的原始数据,该字段是设备上传的原始数据的解析,不同的业务场景传入的字段会不相同。 moto_type Int 非机动车类型 表2 RectCor 字段名 类型 说明 x_cor Int 上层业务检测框左上角坐标点x计算方式,x1 = x_cor *全景图像素宽度/ 10000 y_cor Int 上层业务检测框左上角坐标点y计算方式,y1 = y_cor *全景图像素高度/ 10000 width Int 上层业务检测框宽度 计算方式 widht1 = widht *全景图像素宽度/ 10000 height Int 上层业务检测框长度 计算方式 height1 = height *全景图像素高度/ 10000 表3 Common 字段名 类型 说明 channel_id Int64 通道ID channel_id_ex Int64 相机扩展通道ID pts Int64 时间戳 sdc_device_id String 主从机设备ID sdc_uuid String 摄像机视频源通道号 intelligence_type Int 智能类型 image_height Int 图片高度 image_width Int 图片宽度 meta_type_mask Int 元数据类型掩码 枚举值: 1 框数据 2 图数据 8 保活数据 16 告警数据 表4 Target 字段名 类型 说明 car_pre_brand String 品牌字符:中文字符,例如大众 car_pre_brand_index Int 品牌字符索引,当检测到机动车属性时传该值,见附录车款类型 car_sub_brand String 子款字符:中文字符,例如明锐 car_sub_brand_index Int 子款字符索引 car_year_brand String 年款字符:例如2011 cur_snap_index Int 当前抓拍序列号 global_object_id Int64 智能目标全局ID human_pic String 目标整体抠图:已转化为图片url human_pic_kps Int 目标整体抠图kps质量过滤标志位 human_pic_roi Rect object 目标整体抠图中的目标整体目标框:目标整体抠图中可能存在其它干扰,此坐标用于精确圈定目标整体范围 human_rect_position Rect object 目标整体位置 lane_id Int 车道号 panorama_pic String 全景图:已转化为图片url pic_snapshot_dst_offset Int64 夏令时偏移时间:单位秒/s pic_snapshot_time Int 抓拍时间 pic_snapshot_timems Int64 抓拍时间:单位毫秒/ms pic_snapshot_tzone Int64 抓拍时区:单位毫秒/ms 东区为+ 西区为-,支持夏令时 plate_char String 车牌字符,当检测到机动车属性时传该值 plate_color Int 车牌颜色,当检测到机动车属性时传该值,见附录车牌颜色 plate_pic String 车牌抠图:已转化为图片url plate_pos Rect object 车牌位置万分比 plate_pos_abs Rect object 车牌位置绝对坐标 plate_pos_com Rect object 车牌位置万分比 plate_type Int 车牌类型,参考附录车牌类型 target_type Int 智能业务场景 枚举值: 6 机非人业务目标整体信息 7 机非人业务机动车信息 8 机非人业务非机动车信息 53 非机动车上目标检测 trecord_type Int 告警类型,见附录告警类型 vehicle_color Int 车辆颜色,当检测到机动车属性时传该值,见附录车辆颜色 vehicle_direction Int 车辆运动方向 枚举值: 0 未知 1 向左 2 向右 3 向上 4 向下 vehicle_pic String 车辆图,已转化为图片url vehicle_pos Rect object 车身位置万分比 vehicle_pos_abs Rect object 车辆位置绝对坐标 vehicle_pos_com Rect object 车辆位置相对坐标万分比 vehicle_type Int 机非人类型,当检测到机非人属性时传该值,见附录机非人类型 vehicle_type_ext Int 机非人扩展类型,当检测到机非人属性时传该值,见附录机非人类型 ,例如机非人类型为轿车,扩展类型为两厢轿车 vhd_object_id Int64 机非人ID human_gender Int 行人性别 枚举值: 0 未知 1 男性 2 女性 human_umbrella Int 是否撑伞 枚举值: 0 未知 1 否 2 是 human_lower_color Int 下衣颜色 枚举值: 0 未知 1 黑 2 蓝 3 绿 4 白/灰 5 黄/橙/棕 6 红/粉/紫 human_direct Int 行进方向 human_carry Int 是否拎东西 枚举值: 0 未知 1 否 2 是 human_mouth_mask Int 是否戴口罩 枚举值: 0 未知 1 否 2 是 human_age Int 年龄人群 枚举值: 0 未知 1 少年 2 青年 3 老年 human_upper_texture Int 上衣纹理 枚举值: 0 未知 1 纯色 2 条纹 3 格子 human_view Int 朝向 枚举值: 0 未知 1 正面 2 背面 3 左倾 4 右倾 human_feature Feature Object 目标整体属性 human_luggage Int 是否有行李箱 human_backpack Int 是否有背包 human_lower_style Int 下衣款式 枚举值: 0 未知 1 长裤 2 短裤 3 裙子 human_upper_color Int 上衣颜色 human_hair Int 发型 枚举值: 0 未知 1 长 2 短 3 秃头 human_shape Int 体型 枚举值: 0 未知 1 标准 2 肥 3 瘦 human_speed Int 行进速度 human_upper_style Int 上衣款式 枚举值: 0 未知 1 长袖 2 短袖 human_hat Int 是否戴帽子 human_frontpack Int 是否有前面背包 human_satchel Int 是否有斜挎包 human_glass Int 是否戴眼镜 motor_color Int 非机动车颜色 motor_license_plate Int 是否有车牌 motor_motor_carry Int 是否有携带物品 motor_sunshade Int 是否有遮阳伞 motor_sunshade_color Int 遮阳伞颜色 motor_type Int 非机动车类型 riderman_age Int 骑行人年龄人群 riderman_feature RidermanFeature Object 骑行人属性 riderman_gender Int 骑行人性别 riderman_helmet Int 骑行人是否戴头盔 riderman_helmetcolor Int 骑行人头盔颜色 riderman_num Int 骑行人数量,具体人数 riderman_uppercolor Int 骑行人上衣颜色 riderman_upperstyle Int 骑行人上衣款式 vehicle_pos_abs Rect Object 车辆位置绝对坐标 face_id Int64 人脸号 face_pic_time Int 人脸抓拍时间 face_pic_tzone Int64 人脸抓拍时区:单位毫秒/ms 东区为+ 西区为-,支持夏令时 表5 Rect 字段名 类型 说明 x Int 上层业务检测框左上角坐标点x计算方式,x1 = x *全景图像素宽度/ 10000 y Int 上层业务检测框左上角坐标点y计算方式,y1 = y *全景图像素高度/ 10000 width Int 上层业务检测框宽度 计算方式 widht1 = widht *全景图像素宽度/ 10000 height Int 上层业务检测框长度 计算方式 height1 = height *全景图像素高度/ 10000 表6 Feature 字段名 类型 说明 age Int 年龄人群 backpack Int 是否有背包 carry Int 是否拎东西 front_pack Int 是否有前面背包 gender Int 行人性别 枚举值: 0 未知 1 男性 2 女性 glass Int 是否戴眼睛 hair Int 发型 hat Int 是否戴麦子 lower_color Int 上衣颜色 lower_style Int 上衣款式 luggage Int 是否有行李箱 mouth_mask Int 是否戴口罩 move_direct Int 行进方向 move_speed Int 行进速度 satchel Int 是否有斜挎包 shape Int 体型 umbrella Int 是否有雨伞 upper_color Int 下衣颜色 upper_style Int 下衣款式 upper_texture Int 上衣纹理 view Int 朝向 表7 RidermanFeature 字段名 类型 说明 age Int 年龄人群 gender Int 行人性别 枚举值: 0 未知 1 男性 2 女性 helmet Int 是否戴头盔 helmet_color Int 头盔颜色 upper_color Int 下衣颜色 upper_style Int 下衣款式 示例一、机非人业务目标整体信息 { "message_id": 1676253459558286045, "message_type": "vehicle_data", "data": { "device_id": "219123456CYP***", "channel_id": "0", "data_id": "167625345941400200060000rwnwv130", "report_time": "2023-02-13T09:57:37+08:00", "itgt_type": 6, "global_obj_id": 7198857782190185688, "lane_id": 1, "vehicle_type": 9, "target_all_pic_url": "https://www.example.com/v1/holo/tlv_219123456CYP***_0_20230213_tlv_167625345941400200040000rwnwv130.jpg/static", "panorama_url": "https://www.example.com/v1/holo/tlv_219123456CYP***_0_20230213_tlv_167625345941400200020000rwnwv130.jpg/static", "human_lowstyle": 1, "human_gender": 1, "human_uppercolor": 2, "human_hair": 2, "human_shape": 1, "human_age": 2, "human_mouthmask": 1, "human_lowercolor": 2, "human_upperstyle": 2, "human_pos": { "x_cor": 3218, "y_cor": 1601, "width": 1057, "height": 6046 }, "common": { "channel_id": 101, "channel_id_ex": 101, "meta_type_mask": 2, "pts": 167668079703, "sdc_device_id": "40619954-b309-46b1-7d1a-a3f443a58c87", "sdc_uuid": "224440c1-966e-57eb-fd7b-8ca03739be7e" }, "target": { "global_object_id": 7198857782190185688, "human_pic": "https://www.example.com/v1/holo/tlv_219123456CYP***_0_20230213_tlv_167625345941400200040000rwnwv130.jpg/static", "human_pic_roi": { "x": 2916, "y": 0, "width": 4229, "height": 10000 }, "human_gender": 1, "human_umbrella": 1, "human_lower_color": 2, "human_direct": 2, "human_carry": 1, "human_mouth_mask": 1, "human_age": 2, "human_upper_texture": 1, "human_view": 1, "human_feature": { "age": 2, "backpack": 1, "carry": 1, "front_pack": 1, "gender": 1, "glass": 65536, "hair": 2, "hat": 65536, "lower_color": 2, "lower_style": 1, "luggage": 1, "mouth_mask": 1, "move_direct": 2, "move_speed": 0, "satchel": 1, "shape": 1, "umbrella": 1, "upper_color": 2, "upper_style": 2, "upper_texture": 1, "view": 131072 }, "human_luggage": 1, "human_backpack": 1, "human_lower_style": 1, "human_upper_color": 2, "human_hair": 2, "human_shape": 1, "human_speed": 2, "human_upper_style": 2, "human_hat": 1, "human_frontpack": 1, "human_satchel": 1, "human_glass": 1, "human_rect_position": { "x": 3218, "y": 1601, "width": 1057, "height": 6046 }, "lane_id": 1, "panorama_pic": "https://www.example.com/v1/holo/tlv_219123456CYP***_0_20230213_tlv_167625345941400200020000rwnwv130.jpg/static", "pic_snapshot_dst_offset": 0, "pic_snapshot_time": 1676253453, "pic_snapshot_timems": 1676253453434, "pic_snapshot_tzone": 28800000, "target_type": 6, "trecord_type": 34, "vehicle_type": 9, "vehicle_type_ext": 9, "vhd_object_id": 40152 } }, "test": false } 示例二、机非人业务机动车信息 { "message_id": 1676252528838941764, "message_type": "vehicle_data", "data": { "device_id": "219123456CYP***", "channel_id": "0", "data_id": "167625252854900210110000rwnwv130", "report_time": "2023-02-13T09:42:06+08:00", "itgt_type": 7, "global_obj_id": 7198857782190185052, "lane_id": 2, "vehicle_direction": 4, "plate_char": "浙XXXXXX", "plate_color": 1, "vehicle_type": 1, "vehicle_color": 2, "car_pre_brand": 74, "car_sub_brand": 554, "car_year_brand": "2010", "vehicle_url": "https://www.example.com/v1/holo/tlv_219123456CYP***_0_20230213_tlv_167625252854900210010000rwnwv130.jpg/static", "panorama_url": "https://www.example.com/v1/holo/tlv_219123456CYP***_0_20230213_tlv_167625252854900210020000rwnwv130.jpg/static", "vehicle_pos": { "x_cor": 3218, "y_cor": 111, "width": 3085, "height": 3402 }, "common": { "channel_id": 101, "channel_id_ex": 101, "meta_type_mask": 2, "pts": 166735159705, "sdc_uuid": "224440c1-966e-57eb-fd7b-8ca03739be7e", "sdc_device_id": "40619954-b309-46b1-7d1a-a3f443a58c87" }, "target": { "car_pre_brand": "斯柯达", "car_pre_brand_index": 74, "car_sub_brand": "明锐", "car_sub_brand_index": 554, "car_year_brand": "2010", "cur_snap_index": 0, "global_object_id": 7198857782190185052, "lane_id": 2, "panorama_pic": "https://www.example.com/v1/holo/tlv_219123456CYP***_0_20230213_tlv_167625252854900210020000rwnwv130.jpg/static", "pic_snapshot_dst_offset": 0, "pic_snapshot_time": 1676252525, "pic_snapshot_timems": 1676252525274, "pic_snapshot_tzone": 28800000, "plate_char": "浙XXXXXX", "plate_color": 1, "plate_pic": "https://www.example.com/v1/holo/tlv_219123456CYP***_0_20230213_tlv_167625252854900210080000rwnwv130.jpg/static", "plate_pos": { "x": 5437, "y": 1958, "width": 601, "height": 666 }, "plate_pos_abs": { "x": 696, "y": 141, "width": 77, "height": 48 }, "plate_pos_com": { "x": 5437, "y": 1958, "width": 601, "height": 666 }, "plate_type": 1, "target_type": 7, "trecord_type": 34, "vehicle_color": 2, "vehicle_direction": 4, "vehicle_pic": "https://www.example.com/v1/holo/tlv_219123456CYP***_0_20230213_tlv_167625252854900210010000rwnwv130.jpg/static", "vehicle_pos": { "x": 3218, "y": 111, "width": 3085, "height": 3402 }, "vehicle_pos_abs": { "x": 412, "y": 8, "width": 395, "height": 245 }, "vehicle_pos_com": { "x": 3218, "y": 111, "width": 3085, "height": 3402 }, "vehicle_type": 1, "vehicle_type_ext": 17, "vhd_object_id": 39516 } }, "test": false } 示例三、机非人业务非机动车信息 { "message_id": 1676253298093565055, "message_type": "vehicle_data", "data": { "device_id": "219123456CYP***", "channel_id": "0", "data_id": "167625329805000220030000rwnwv130", "report_time": "2023-02-13T09:54:56+08:00", "itgt_type": 8, "moto_type": 1, "motor_color": 1, "rider_num": 1, "global_obj_id": 7198857782190185592, "lane_id": 2, "vehicle_type": 8, "vehicle_url": "https://www.example.com/v1/holo/tlv_219123456CYP***_0_20230213_tlv_167625329805000220010000rwnwv130.jpg/static", "panorama_url": "https://www.example.com/v1/holo/tlv_219123456CYP***_0_20230213_tlv_167625329805000220020000rwnwv130.jpg/static", "vehicle_pos": { "x_cor": 3484, "y_cor": 3805, "width": 1953, "height": 6180 }, "common": { "channel_id": 101, "channel_id_ex": 101, "image_height": 720, "image_width": 1280, "meta_type_mask": 2, "pts": 167506599705, "sdc_uuid": "224440c1-966e-57eb-fd7b-8ca03739be7e" }, "target": { "motor_color": 1, "motor_license_plate": 1, "motor_motor_carry": 1, "motor_sunshade": 1, "motor_sunshade_color": 0, "motor_type": 1, "riderman_age": 0, "riderman_feature": { "age": 0, "gender": 0, "helmet": 0, "helmet_color": 0, "upper_color": 0, "upper_style": 0 }, "riderman_gender": 0, "riderman_helmet": 0, "riderman_helmetcolor": 0, "riderman_num": 1, "riderman_uppercolor": 0, "riderman_upperstyle": 0, "global_object_id": 7198857782190185592, "lane_id": 2, "panorama_pic": "https://www.example.com/v1/holo/tlv_219123456CYP***_0_20230213_tlv_167625329805000220020000rwnwv130.jpg/static", "pic_snapshot_dst_offset": 0, "pic_snapshot_time": 1676253294, "pic_snapshot_timems": 1676253294194, "pic_snapshot_tzone": 28800000, "target_type": 8, "trecord_type": 34, "vehicle_pic": "https://www.example.com/v1/holo/tlv_219123456CYP***_0_20230213_tlv_167625329805000220010000rwnwv130.jpg/static", "vehicle_pos_abs": { "height": 345, "width": 140, "x": 146, "y": 192 }, "vehicle_pos": { "x": 3484, "y": 3805, "width": 1953, "height": 6180 }, "vehicle_type": 8, "vehicle_type_ext": 8, "vhd_object_id": 40056 } }, "test": false } 示例四、非机动车上目标检测 { "message_id": 1676253298093565055, "message_type": "vehicle_data", "data": { "device_id": "219123456CYP***", "channel_id": "0", "data_id": "167625329805000220030000rwnwv130", "report_time": "2023-02-13T09:54:56+08:00", "itgt_type": 8, "global_obj_id": 7198857782190185592, "human_lowercolor": 1, "human_lowstyle": 1, "human_mouthmask": 1, "human_pos": { "height": 2513, "width": 515, "x_cor": 6265, "y_cor": 1027 }, "human_shape": 1, "human_uppercolor": 4, "moto_type": 1, "motor_color": 1, "rider_num": 2, "lane_id": 2, "vehicle_type": 8, "vehicle_url": "https://www.example.com/v1/holo/tlv_219123456CYP***_0_20230213_tlv_167625329805000220010000rwnwv130.jpg/static", "panorama_url": "https://www.example.com/v1/holo/tlv_219123456CYP***_0_20230213_tlv_167625329805000220020000rwnwv130.jpg/static", "vehicle_pos": { "x_cor": 3484, "y_cor": 3805, "width": 1953, "height": 6180 }, "common": { "channel_id": 101, "channel_id_ex": 101, "image_height": 720, "image_width": 1280, "meta_type_mask": 2, "pts": 167506599705, "sdc_uuid": "224440c1-966e-57eb-fd7b-8ca03739be7e" }, "target": { "face_id": 349, "face_pic_time": 1681289694842, "face_pic_tzone": 28800000, "global_object_id": 7198857782190185592, "human_age": 0, "human_backpack": 1, "human_carry": 1, "human_direct": 2, "human_frontpack": 1, "human_gender": 0, "human_glass": 1, "human_hair": 0, "human_hat": 0, "human_lower_color": 1, "human_lower_style": 1, "human_luggage": 1, "human_mouth_mask": 1, "human_pic": "https://www.example.com/v1/holo/tlv_219123456CYP***_6_20230412_tlv_168129058721800230040000rdhfp020.jpg/static", "human_pic_kps": 1, "human_pic_roi": { "height": 10000, "width": 6125, "x": 2000, "y": 0 }, "human_rect_position": { "height": 2513, "width": 515, "x": 6265, "y": 1027 }, "human_satchel": 1, "human_shape": 1, "human_speed": 2, "human_umbrella": 1, "human_upper_color": 4, "human_upper_style": 0, "human_upper_texture": 1, "human_view": 0, "motor_color": 1, "motor_license_plate": 1, "motor_motor_carry": 1, "motor_sunshade": 1, "motor_sunshade_color": 0, "motor_type": 1, "lane_id": 2, "panorama_pic": "https://www.example.com/v1/holo/tlv_219123456CYP***_0_20230213_tlv_167625329805000220020000rwnwv130.jpg/static", "pic_snapshot_dst_offset": 0, "pic_snapshot_time": 1676253294, "pic_snapshot_timems": 1676253294194, "pic_snapshot_tzone": 28800000, "riderman_age": 0, "riderman_gender": 0, "riderman_helmet": 0, "riderman_helmetcolor": 0, "riderman_num": 2, "riderman_uppercolor": 4, "riderman_upperstyle": 0, "target_type": 8, "trecord_type": 34, "vehicle_pic": "https://www.example.com/v1/holo/tlv_219123456CYP***_0_20230213_tlv_167625329805000220010000rwnwv130.jpg/static", "vehicle_pos": { "x": 3484, "y": 3805, "width": 1953, "height": 6180 }, "vehicle_type": 8, "vehicle_type_ext": 8, "vhd_object_id": 40056 } }, "test": false }
  • 功能介绍 机非人业务:机动车/非机动车/行人相关的智能场景。 机非人业务消息体的message_type值为target_data。 目前行业视频管理服务会处理以下场景: itgt_type/target_type枚举值: 6 机非人业务目标整体信息(摄像机SDC/NVR800开启机非人模式,行人进入区域,会被自动抓拍,提取行人特征信息,如:年龄段、是否戴眼镜、长头发还是短头发、是否戴帽子、衣服款式和颜色等) 7 机非人业务机动车信息(摄像机SDC/NVR800开启机非人模式, 机动车进入区域,会被自动抓拍,提取机动车特征信息,如:机动车品牌、款型、车牌号、车牌颜色等) 8 机非人业务非机动车信息(摄像机SDC/NVR800开启机非人模式,非机动车进入区域,会被自动抓拍,提取非机动车特征信息,如:非机动车类型、颜色、骑行者的特征信息等) 53 非机动车上目标检测(特定混行摄像机SDC开启混行模式,非机动车进入区域,会被自动抓拍,提取非机动车及其骑行者特征信息,如:非机动车类型、颜色、骑行者的特征信息等。注意:与8不同的是,53有更多的关于骑行者的特征信息,如骑行者是否背包、是否有撑伞等)
  • Redis 6.0企业版主备实例架构设计 Redis 6.0企业版主备实例架构设计如图3所示。 图3 Redis 6.0企业版主备实例示意图 图说明如下: VPC 虚拟私有云。实例的内部所有服务器节点,都运行在相同VPC中。 VPC内访问,客户端需要与Redis 6.0企业版主备实例处于相同VPC,并且配置安全组访问规则。如何选择和配置Redis实例以及客户端的安全组。 客户应用 运行在ECS上的客户应用程序,即Redis的客户端。 Redis实例兼容开源协议,可直接使用开源客户端进行连接,关于多语言客户端连接示例,请参考用户指南的连接缓存实例。 DCS缓存实例 DCS实例。主备实例包含了Master和Replica两个节点。 Redis 6.0企业版主备实例使用哨兵模式(Sentinel)进行管理,Sentinel会一直监控主备节点是否正常运行,当主节点出现故障时,进行主备倒换。 Sentinel对用户不可见,仅在服务内部中使用。Sentinel的详细介绍可参考什么是哨兵。 Redis的访问端口默认为6379。
  • 主备实例特点 DCS的主备实例在单机实例基础上,增强服务高可用以及数据高可靠性。 主备实例具有以下特性: 持久化,确保数据高可靠 实例包含一个主节点和一个备节点,都默认开启数据持久化。 Redis 3.0主备实例的备节点对用户不可见,不支持客户端直接读写数据。 Redis 4.0、Redis 5.0和Redis 6.0基础版主备实例的备节点对用户可见,用户可以通过只读地址连接到备节点上读取数据。 数据同步 主备节点通过增量数据同步的方式保持缓存数据一致。 当网络发生异常或有节点故障时,主备实例会在故障恢复后进行一次全量同步,保持数据一致性。 故障后自动切换主节点,服务高可用 当主节点故障后,连接会有秒级中断、不可用,备节点在30秒内自动完成主备切换,切换完成后恢复正常访问,无需用户操作,保证业务平稳运行。 多种容灾策略 跨AZ部署(可用区):DCS支持将主备实例的主备副本部署在不同的AZ内,节点间电力与网络均物理隔离。您可以将应用程序也进行跨AZ部署,从而达到数据与应用全部高可用。 读写分离 Redis 4.0、Redis 5.0和Redis 6.0基础版主备实例支持客户端读写分离,分别提供可读写的连接地址(主节点)和只读地址(备节点),客户端连接时,可分别选择主节点或备节点。 主备实例实现客户端读写分离,需要在客户端做配置。如需使用读写分离功能,推荐使用读写分离实例。
  • Redis 3.0主备实例架构设计 DCS的Redis 3.0主备实例架构,如图1所示。 图1 Redis 3.0主备实例示意图 示意图说明: VPC 虚拟私有云。实例的内部所有服务器节点,都运行在相同VPC中。 VPC内访问,客户端需要与主备实例处于相同VPC,并且配置安全组访问规则。 Redis 3.0主备实例除了VPC内访问,还支持公网访问,客户端可以部署在外部网络,并通过实例绑定的弹性公网ip地址访问Redis主备实例。Redis 4.0和5.0主备及Redis 6.0主备实例暂不支持公网访问。 相关参考:公网连接Redis3.0实例,如何选择和配置Redis实例以及客户端的安全组。 客户应用 运行在ECS上的客户应用程序,即Redis的客户端。 Redis实例兼容开源协议,可直接使用开源客户端进行连接,关于多语言客户端连接示例,请参考用户指南的连接缓存实例。 DCS缓存实例 DCS实例。主备实例包含了Master和Replica两个节点。默认开启数据持久化功能,同时保持节点间数据同步。 DCS实时探测实例可用性,当主节点故障后,备节点升级为主节点,恢复业务。 Redis的访问端口默认为6379。
  • Redis 4.0/5.0/6.0基础版主备实例架构设计 Redis 4.0/5.0/6.0基础版主备实例的架构设计,如下图所示。 图2 Redis 4.0/5.0/6.0基础版主备实例示意图 图说明如下: Redis 4.0/5.0/6.0基础版主备实例,分别提供可读写的域名连接地址(用于连接主节点)和只读地址(用于连接备节点)。 连接地址和只读地址,可通过控制台的实例详情页面获取。 Redis 4.0/5.0/6.0基础版主备实例使用哨兵模式(Sentinel)进行管理,Sentinel会一直监控主备节点是否正常运行,当主节点出现故障时,进行主备倒换。 Sentinel对用户不可见,仅在服务内部中使用。Sentinel的详细介绍可参考什么是哨兵。 只读节点和读写节点规格一致,用户创建主备实例时,默认包含一个主节点和一个备节点。 Redis 4.0/5.0/6.0基础版实例支持定义端口,如果不自定义端口,则使用默认端口6379。图中以默认端口6379为例,如果已自定义端口,请根据实际情况替换。 Redis 4.0/5.0/6.0基础版主备实例在只读域名不带负载均衡,对于可靠性和时延敏感的应用场景,建议使用集群或读写分离类型的实例。 Redis 4.0/5.0/6.0基础版主备实例的只读域名在从节点发生故障场景下会出现请求失败的情况,对于可靠性和时延敏感的应用场景,建议使用读写分离类型的实例。
  • DCS权限 默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 DCS部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域(如华北-北京四)对应的项目(cn-north-4)中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问DCS时,需要先切换至授权区域。 权限根据授权精细程度分为角色和策略。 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于华为云各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对DCS服务,管理员能够控制IAM用户仅能对DCS实例进行指定的管理操作。权限策略以API接口为粒度进行权限拆分,DCS服务支持的API授权项请参见权限策略支持的授权项。 如表1所示,包括了DCS的所有系统权限。 表1 DCS系统策略 系统角色/策略名称 描述 类别 依赖关系 DCS FullAccess 分布式缓存服务所有权限,拥有该权限的用户可以操作所有分布式缓存服务的功能。 系统策略 购买包周期实例需要配置如下授权项: bss:order:update bss:order:pay 购买企业版实例需要配置如下授权项:iam:permissions:listRolesForAgencyOnProject iam:agencies:listAgenciesiam:roles:listRoles iam:permissions:grantRoleToAgencyOnProject iam:agencies:createAgency iam:agencies:deleteAgency DCS UserAccess 分布式缓存服务普通用户权限(无实例创建、修改、删除、扩容和缩容的权限)。 系统策略 无 DCS ReadOnlyAccess 分布式缓存服务的只读权限,拥有该权限的用户仅能查看分布式缓存服务数据。 系统策略 无 DCS Administrator 分布式缓存服务管理员权限,拥有该权限的用户可以操作所有分布式缓存服务的功能。 系统角色 依赖Server Administrator和Tenant Guest角色,在同项目中勾选依赖的角色。 DCS AgencyAccess 分布式缓存服务申请创建租户委托时需要授权的操作权限。 该权限为租户委托权限,用于租户在需要时委托DCS服务对租户资源做以下相关操作,与授权用户操作无关。 查询子网 查询子网列表 查询端口 查询端口列表 更新端口 创建端口 系统策略 无 由于DCS UserAccess策略和DCS FullAccess策略存在差异,如果您同时配置了这两个系统策略,由于DCS UserAccess策略存在Deny,根据Deny优先原则,您无法执行实例创建、修改、删除、扩容和缩容操作。 表2列出了DCS常用操作与系统策略的授权关系,您可以参照该表选择合适的系统策略。 表2 常用操作与系统策略的关系 操作 DCS FullAccess DCS UserAccess DCS ReadOnlyAccess DCS Administrator 修改实例配置参数 √ √ × √ 删除实例后台任务 √ √ × √ Web CLI √ √ × √ 修改实例运行状态 √ √ × √ 缓存实例扩容 √ × × √ 修改实例访问密码 √ √ × √ 修改缓存实例 √ × × √ 实例主备倒换 √ √ × √ 备份实例数据 √ √ × √ 分析实例的大key或者热key √ √ × √ 创建缓存实例 √ × × √ 删除实例数据备份文件 √ √ × √ 恢复实例数据 √ √ × √ 重置实例访问密码 √ √ × √ 迁移实例数据 √ √ × √ 下载备份实例数据 √ √ × √ 删除缓存实例 √ × × √ 查询实例配置参数 √ √ √ √ 查询实例数据恢复日志 √ √ √ √ 查询实例数据备份日志 √ √ √ √ 查询缓存实例信息 √ √ √ √ 查询实例后台任务 √ √ √ √ 查询实例列表 √ √ √ √ 操作慢查询 √ √ √ √
  • 其他限制 单个Redis命令处理时长限制为15秒左右,超过15秒未处理完,会导致客户的其它业务失败,因此内部会触发主从倒换。 2018年7月10日前创建的Redis集群实例需要升级才支持以下命令: SINTER、 SDIFF、SUNION、PFCOUNT、PFMERGE、SINTERSTORE、SUNIONSTORE、SDIFFSTORE、SMOVE、ZUNIONSTORE、ZINTERSTORE、EVAL、EVALSHA、BITOP、RENAME、RENAMENX、RPOPLPUSH、MSETNX、SCRIPT LOAD、SCRIPT KILL、SCRIPT EXISTS、SCRIPT FLUSH。
  • EVAL和EVALSHA相关命令使用限制 使用EVAL和EVALSHA命令时,命令参数中必须带有至少1个key。否则客户端会提示“ERR eval/evalsha numkeys must be bigger than zero in redis cluster mode”的错误。 使用EVAL和EVALSHA命令时,DCS Redis集群实例使用第一个key来计算slot,用户代码需要保证操作的key是在同一个slot,具体请参考Redis命令。 使用EVAL命令时: 建议使用前先了解Redis的lua脚本特性,具体可参考Lua脚本。 lua脚本的执行超时时间为5秒钟,建议不要在lua脚本中使用比较耗时的代码,比如长时间的sleep、大的循环等语句。 调用lua脚本时,建议不要使用随机函数去指定key,否则在主备节点上执行结果不一致,从而导致主备节点数据不一致。
  • Redis 4.0禁用的命令 以下列出了Redis 4.0实例禁用的命令。 表7 Redis 4.0单机和主备禁用命令 Generic (Key) Server MIGRATE SLAVEOF - SHUTDOWN - LASTSAVE - DEBUG相关类 - COMMAND - SAVE - BGSAVE - BGREWRITEAOF - SYNC - PSYNC 表8 Redis 4.0 Proxy集群实例禁用命令 Generic (Key) Server Sorted Set MIGRATE BGREWRITEAOF BZPOPMAX MOVE BGSAVE BZPOPMIN WAIT CLIENT相关命令 ZPOPMAX - DEBUG OBJECT ZPOPMIN - DEBUG SEGFAULT - - LASTSAVE - - PSYNC - - SAVE - - SHUTDOWN - - SLAVEOF - - LATENCY相关命令 - - MODULE相关命令 - - LOLWUT - - SWAPDB - - REPLICAOF - - SYNC - 表9 Redis 4.0 Cluster集群禁用命令 Generic (Key) Server Cluster MIGRATE SLAVEOF CLUSTER MEET - SHUTDOWN CLUSTER FLUSHSLOTS - LASTSAVE CLUSTER ADDSLOTS - DEBUG相关类 CLUSTER DELSLOTS - COMMAND CLUSTER SETSLOT - SAVE CLUSTER BUMPEPOCH - BGSAVE CLUSTER SAVECONFIG - BGREWRITEAOF CLUSTER FORGET - SYNC CLUSTER REPLICATE - PSYNC CLUSTER COUNT-FAILURE-REPORTS - - CLUSTER FAILOVER - - CLUSTER SET-CONFIG-EPOCH - - CLUSTER RESET 表10 Redis 4.0读写分离禁用命令 Generic Server Sorted Set MIGRATE BGREWRITEAOF BZPOPMAX WAIT BGSAVE BZPOPMIN - DEBUG OBJECT ZPOPMAX - DEBUG SEGFAULT ZPOPMIN - LASTSAVE - - LOLWUT - - MODULE LIST/LOAD/UNLOAD - - PSYNC - - REPLICAOF - - SAVE - - SHUTDOWN [NOSAVE|SAVE] - - SLAVEOF - - SWAPDB - - SYNC -
  • Redis 4.0支持的命令 表1和表2列举了华为云Redis 4.0单机/主备/Cluster集群实例支持的Redis命令。 表3和表4列举了华为云Redis 4.0 Proxy集群支持的Redis命令。 表5和表6列举了华为云Redis 4.0读写分离支持的Redis命令。 各个命令的具体详细语法请前往Redis官方网站(中文网站为:http://www.redis.cn/commands.html)查看,例如您想了解SCAN命令的使用,可在Redis官方网站中搜索框中输入“SCAN”查询详细介绍。 Redis高版本的命令,在低版本中不被兼容。判断DCS Redis是否支持某个命令,可通过在Redis-cli执行该命令,如果得到(error)ERR unknown command ‘xxx’的提示,则说明不支持该命令。 Redis 4.0 Cluster版本集群实例使用pipeline时,要确保管道中的命令都能在同一分片执行。 表1 Redis 4.0 单机/主备/Cluster集群支持的命令清单1 Generic (Key) String Hash List Set Sorted Set Server DEL APPEND HDEL BLPOP SADD ZADD FLUSHALL DUMP BITCOUNT HEXISTS BRPOP SCARD ZCARD FLUSHDB EXISTS BITOP HGET BRPOPLRUSH SDIFF ZCOUNT DBSIZE EXPIRE BITPOS HGETALL LINDEX SDIFFSTORE ZINCRBY TIME MOVE DECR HINCRBY LINSERT SINTER ZRANGE INFO PERSIST DECRBY HINCRBYFLOAT LLEN SINTERSTORE ZRANGEBYSCORE CLIENT KILL PTTL GET HKEYS LPOP SISMEMBER ZRANK CLIENT LIST RANDOMKEY GETRANGE HMGET LPUSHX SMEMBERS ZREMRANGEBYRANK CLIENT GETNAME RENAME GETSET HMSET LRANGE SMOVE ZREMRANGEBYCORE CLIENT SETNAME RENAMENX INCR HSET LREM SPOP ZREVRANGE CONFIG GET RESTORE INCRBY HSETNX LSET SRANDMEMBER ZREVRANGEBYSCORE MONITOR SORT INCRBYFLOAT HVALS LTRIM SREM ZREVRANK SLOWLOG TTL MGET HSCAN RPOP SUNION ZSCORE ROLE TYPE MSET HSTRLEN RPOPLPU SUNIONSTORE ZUNIONSTORE SWAPDB SCAN MSETNX HLEN RPOPLPUSH SSCAN ZINTERSTORE MEMORY OBJECT PSETEX - RPUSH - ZSCAN CONFIG PEXPIRE SET - RPUSHX - ZRANGEBYLEX - PEXPIREAT SETBIT - LPUSH - ZLEXCOUNT - KEYS SETEX - - - ZREMRANGEBYSCORE - - SETNX - - - ZREM - - SETRANGE - - - - - - STRLEN - - - - - - BITFIELD - - - - - 表2 Redis 4.0 单机/主备/Cluster集群支持的命令清单2 HyperLoglog Pub/Sub Transactions Connection Scripting Geo PFADD PSUBSCRIBE DISCARD AUTH EVAL GEOADD PFCOUNT PUBLISH EXEC ECHO EVALSHA GEOHASH PFMERGE PUBSUB MULTI PING SCRIPT EXISTS GEOPOS - PUNSUBSCRIBE UNWATCH QUIT SCRIPT FLUSH GEODIST - SUBSCRIBE WATCH SELECT(Cluster集群实例不支持) SCRIPT KILL GEORADIUS - UNSUBSCRIBE - - SCRIPT LOAD GEORADIUSBYMEMBER 表3 Redis 4.0 proxy集群支持的命令清单1 Generic (Key) String Hash List Set Sorted Set Server DEL APPEND HDEL BLPOP SADD ZADD FLUSHALL (不支持FLUSHALL SYNC) DUMP BITCOUNT HEXISTS BRPOP SCARD ZCARD FLUSHDB EXISTS BITOP HGET BRPOPLRUSH SDIFF ZCOUNT DBSIZE EXPIRE BITPOS HGETALL LINDEX SDIFFSTORE ZINCRBY TIME MOVE DECR HINCRBY LINSERT SINTER ZRANGE INFO PERSIST DECRBY HINCRBYFLOAT LLEN SINTERSTORE ZRANGEBYSCORE ROLE PTTL GET HKEYS LPOP SISMEMBER ZRANK MEMORY RENAME GETRANGE HMGET LPUSHX SMEMBERS ZREMRANGEBYRANK COMMAND RENAMENX GETSET HMSET LRANGE SMOVE ZREMRANGEBYCORE COMMAND COUNT RESTORE INCR HSET LREM SPOP ZREVRANGE COMMAND GETKEYS SORT INCRBY HSETNX LSET SRANDMEMBER ZREVRANGEBYSCORE COMMAND INFO TTL INCRBYFLOAT HVALS LTRIM SREM ZREVRANK CONFIG GET TYPE MGET HSCAN RPOP SUNION ZSCORE CONFIG RESETSTAT SCAN MSET HSTRLEN RPOPLPUSH SUNIONSTORE ZUNIONSTORE CONFIG REWRITE OBJECT MSETNX HLEN RPUSH SSCAN ZINTERSTORE CONFIG SET PEXPIRE PSETEX HKEYS RPUSHX - ZSCAN - PEXPIREAT SET - LPUSH - ZRANGEBYLEX - EXPIREAT SETBIT - - - ZLEXCOUNT - KEYS SETEX - - - ZREMRANGEBYSCORE - TOUCH SETNX - - - ZREM - UNLINK SETRANGE - - - ZREMRANGEBYLEX - RANDOMKEY STRLEN - - - ZREVRANGEBYLEX - - BITFIELD - - - - - - GETBIT - - - - - 表4 Redis 4.0 proxy集群支持的命令清单2 HyperLoglog Pub/Sub Transactions Connection Scripting Geo Cluster PFADD PSUBSCRIBE DISCARD AUTH EVAL GEOADD CLUSTER INFO PFCOUNT PUBLISH EXEC ECHO EVALSHA GEOHASH CLUSTER NODES PFMERGE PUBSUB MULTI PING SCRIPT EXISTS GEOPOS CLUSTER SLOTS - PUNSUBSCRIBE UNWATCH QUIT SCRIPT FLUSH GEODIST CLUSTER ADDSLOTS - SUBSCRIBE WATCH SELECT SCRIPT KILL GEORADIUS ASKING - UNSUBSCRIBE - CLIENT KILL SCRIPT LOAD GEORADIUSBYMEMBER READONLY - - - CLIENT LIST SCRIPT DEBUG YES|SYNC|NO GEOSEARCH READWRITE - - - CLIENT GETNAME - GEOSEARCHSTORE - - - - CLIENT SETNAME - - - 上表中的Cluster类命令,仅2022/9/1日及之后创建的proxy集群实例支持。 表5 Redis 4.0读写分离支持的命令清单1 Generic (Key) String Hash List Set Sorted Set Server DEL APPEND HDEL BLPOP SADD ZADD FLUSHALL (不支持FLUSHALL SYNC) DUMP BITCOUNT HEXISTS BRPOP SCARD ZCARD FLUSHDB EXISTS BITOP HGET BRPOPLRUSH SDIFF ZCOUNT DBSIZE EXPIRE BITPOS HGETALL LINDEX SDIFFSTORE ZINCRBY TIME MOVE DECR HINCRBY LINSERT SINTER ZRANGE INFO PERSIST DECRBY HINCRBYFLOAT LLEN SINTERSTORE ZRANGEBYSCORE MONITOR PTTL GET HKEYS LPOP SISMEMBER ZRANK SLOWLOG RANDOMKEY GETRANGE HMGET LPUSHX SMEMBERS ZREMRANGEBYRANK ROLE RENAME GETSET HMSET LRANGE SMOVE ZREMRANGEBYCORE SWAPDB RENAMENX INCR HSET LREM SPOP ZREVRANGE MEMORY RESTORE INCRBY HSETNX LSET SRANDMEMBER ZREVRANGEBYSCORE COMMAND SORT INCRBYFLOAT HVALS LTRIM SREM ZREVRANK COMMAND COUNT TTL MGET HSCAN RPOP SUNION ZSCORE COMMAND GETKEYS TYPE MSET HSTRLEN RPOPLPUSH SUNIONSTORE ZUNIONSTORE COMMAND INFO SCAN MSETNX HLEN RPUSH SSCAN ZINTERSTORE CONFIG GET OBJECT PSETEX - RPUSHX - ZSCAN CONFIG RESETSTAT PEXPIRE SET - LPUSH - ZRANGEBYLEX CONFIG REWRITE PEXPIREAT SETBIT - - - ZLEXCOUNT CONFIG SET EXPIREAT SETEX - - - ZREMRANGEBYSCORE - KEYS SETNX - - - ZREM - TOUCH SETRANGE - - - ZREMRANGEBYLEX - UNLINK STRLEN - - - ZREVRANGEBYLEX - - BITFIELD - - - - - - GETBIT - - - - - 表6 Redis 4.0读写分离支持的命令清单2 HyperLoglog Pub/Sub Transactions Connection Scripting Geo PFADD PSUBSCRIBE DISCARD AUTH EVAL GEOADD PFCOUNT PUBLISH EXEC ECHO EVALSHA GEOHASH PFMERGE PUBSUB MULTI PING SCRIPT EXISTS GEOPOS - PUNSUBSCRIBE UNWATCH QUIT SCRIPT FLUSH GEODIST - SUBSCRIBE WATCH SELECT SCRIPT KILL GEORADIUS - UNSUBSCRIBE - CLIENT KILL SCRIPT LOAD GEORADIUSBYMEMBER - - - CLIENT LIST SCRIPT DEBUG YES|SYNC|NO GEOSEARCH - - - CLIENT GETNAME - GEOSEARCHSTORE - - - CLIENT SETNAME - -
  • API概览 通过使用企业项目管理服务所提供的接口,您可以实现对企业项目版本信息的查询,也可以实现对企业项目的管理操作。 表1 接口说明 API 说明 查询API版本列表 查询企业项目的API版本列表。 查询API版本号详情 查询企业项目的API版本号详情。 查询企业项目列表 查询当前用户已授权的企业项目列表。 创建企业项目 用户可以创建企业项目,将云资源按企业项目管理。 查询企业项目详情 查询企业项目详细信息。 修改企业项目 修改企业项目,默认企业项目(default)无法修改。 启用企业项目 可以实现对已存在企业项目进行启用操作。 停用企业项目 可以实现对已存在企业项目进行停用操作,默认企业项目(default)无法停用。 查询企业项目配额 查询企业项目的配额信息。 查询企业项目绑定的资源列表 查询企业项目下绑定的资源详情。 迁移资源 迁移资源到目标企业项目。 查询企业项目支持的服务 查询企业项目支持的云服务。
  • Python 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 # coding: utf-8 from huaweicloudsdkcore.auth.credentials import GlobalCredentials from huaweicloudsdkeps.v1.region.eps_region import EpsRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkeps.v1 import * if __name__ == "__main__": # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak = os.getenv("CLOUD_SDK_AK") sk = os.getenv("CLOUD_SDK_SK") credentials = GlobalCredentials(ak, sk) \ client = EpsClient.new_builder() \ .with_credentials(credentials) \ .with_region(EpsRegion.value_of("cn-north-4")) \ .build() try: request = CreateEnterpriseProjectRequest() request.body = EnterpriseProject( type="prod", description="描述", name="enterprise_project1" ) response = client.create_enterprise_project(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg)
  • Go 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 package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/global" eps "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/eps/v1" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/eps/v1/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/eps/v1/region" ) func main() { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak := os.Getenv("CLOUD_SDK_AK") sk := os.Getenv("CLOUD_SDK_SK") auth := global.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). Build() client := eps.NewEpsClient( eps.EpsClientBuilder(). WithRegion(region.ValueOf("cn-north-4")). WithCredential(auth). Build()) request := &model.CreateEnterpriseProjectRequest{} typeEnterpriseProject:= "prod" descriptionEnterpriseProject:= "描述" request.Body = &model.EnterpriseProject{ Type: &typeEnterpriseProject, Description: &descriptionEnterpriseProject, Name: "enterprise_project1", } response, err := client.CreateEnterpriseProject(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } }
  • 状态码 状态码 描述 201 Created 400 Bad Request 401 Unauthorized 402 Payment Required 403 Forbidden 404 Not Found 405 Method Not Allowed 406 Not Acceptable 409 Conflict 500 Internal Server Error 501 Not Implemented 502 Bad Gateway 503 Service Unavailable 504 Gateway Timeout
  • 响应示例 状态码: 201 Created { "enterprise_project" : { "id" : "5aa119a8-d25b-45a7-8d1b-88e127885635", "name" : "enterprise_project1", "description" : "描述", "type" : "prod", "status" : 1, "created_at" : "2016-03-28T00:00:00Z", "updated_at" : "2016-03-28T00:00:00Z" } }
  • Java 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 package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.GlobalCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.eps.v1.region.EpsRegion; import com.huaweicloud.sdk.eps.v1.*; import com.huaweicloud.sdk.eps.v1.model.*; public class CreateEnterpriseProjectSolution { public static void main(String[] args) { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment String ak = System.getenv("CLOUD_SDK_AK"); String sk = System.getenv("CLOUD_SDK_SK"); ICredential auth = new GlobalCredentials() .withAk(ak) .withSk(sk); EpsClient client = EpsClient.newBuilder() .withCredential(auth) .withRegion(EpsRegion.valueOf("cn-north-4")) .build(); CreateEnterpriseProjectRequest request = new CreateEnterpriseProjectRequest(); EnterpriseProject body = new EnterpriseProject(); body.withType("prod"); body.withDescription("描述"); body.withName("enterprise_project1"); request.withBody(body); try { CreateEnterpriseProjectResponse response = client.createEnterpriseProject(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } }
  • 响应参数 状态码: 201 表3 响应Body参数 参数 参数类型 描述 enterprise_project EpDetail object 企业项目。 表4 EpDetail 参数 参数类型 描述 id String 企业项目ID name String 企业项目名称 description String 企业项目描述 status Integer 企业项目状态。1启用,2停用 created_at String 创建时间,格式为UTC格式。如:2018-05-18T06:49:06Z。 updated_at String 修改时间,格式为UTC格式。如:2018-05-28T02:21:36Z。 type String 项目类型。prod-商用项目;poc-测试项目 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表6 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 401 表7 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表8 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 402 表9 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表10 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 403 表11 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表12 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 404 表13 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表14 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 405 表15 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表16 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 406 表17 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表18 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 409 表19 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表20 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 500 表21 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表22 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 501 表23 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表24 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 502 表25 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表26 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 503 表27 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表28 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 504 表29 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表30 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息
  • 请求参数 表1 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。说明:由于EPS是全局服务,因此调用IAM服务获取用户Token接口时需要注意作用域即scope字段应该设置为domain。响应消息头中X-Subject-Token的值即为用户Token。 X-Security-Token 否 String 如果正在使用临时安全凭据,则此header是必需的,该值是临时安全凭据的安全令牌(会话令牌)。 最小长度:0 最大长度:2048 表2 请求Body参数 参数 是否必选 参数类型 描述 name 是 String 只能由中文字符、英文字母(a~zA~Z)、数字(0~9)、下划线(_)、中划线(-)组成,且长度为[1-255]个字符。名称不能为大小写混合的default,且在租户账号内唯一。 description 否 String 最大长度512个字符。 最大长度:512 type 否 String 企业项目类型 缺省值:prod
  • 状态码 状态码 描述 200 OK 400 Bad Request 401 Unauthorized 402 Payment Required 403 Forbidden 404 Not Found 405 Method Not Allowed 406 Not Acceptable 407 Proxy Authentication Required 408 Request Timeout 409 Conflict 500 Internal Server Error 501 Not Implemented 502 Bad Gateway 503 Service Unavailable 504 Gateway Timeout
  • 响应示例 状态码: 200 OK { "enterprise_projects" : [ { "id" : "6fbcf2f3-3164-4d32-9a3e-a8886dc38c24", "name" : "auto_test", "description" : "hello world!", "status" : 1, "type" : "prod", "created_at" : "2018-05-18T06:49:06Z", "updated_at" : "2018-05-28T02:21:36Z" } ], "total_count" : 1 }
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 enterprise_projects Array of EpDetail objects 企业项目列表 total_count Integer 企业项目总数 表4 EpDetail 参数 参数类型 描述 id String 企业项目ID name String 企业项目名称 description String 企业项目描述 status Integer 企业项目状态。1启用,2停用 created_at String 创建时间,格式为UTC格式。如:2018-05-18T06:49:06Z。 updated_at String 修改时间,格式为UTC格式。如:2018-05-28T02:21:36Z。 type String 项目类型。prod-商用项目;poc-测试项目 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表6 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 401 表7 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表8 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 402 表9 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表10 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 403 表11 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表12 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 404 表13 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表14 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 405 表15 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表16 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 406 表17 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表18 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 407 表19 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表20 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 408 表21 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表22 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 409 表23 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表24 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 500 表25 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表26 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 501 表27 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表28 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 502 表29 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表30 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 503 表31 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表32 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 504 表33 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表34 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。说明:由于EPS是全局服务,因此调用IAM服务获取用户Token接口时需要注意作用域即scope字段应该设置为domain。响应消息头中X-Subject-Token的值即为用户Token。 X-Security-Token 否 String 如果正在使用临时安全凭据,则此header是必需的,该值是临时安全凭据的安全令牌(会话令牌)。 最小长度:0 最大长度:2048
  • URI GET /v1.0/enterprise-projects 表1 Query参数 参数 是否必选 参数类型 描述 id 否 String 企业项目ID,0表示默认企业项目 name 否 String 企业项目名称,支持模糊搜索 status 否 Integer 企业项目状态。 1--启用,2--停用 limit 否 Integer 查询记录数默认为1000,limit最多为1000, 最小值为1 offset 否 Integer 索引位置,从offset指定的下一条数据开始查询,必须为数字,不能为负数,默认为0 sort_key 否 String 返回结果按该关键字排序(支持updated_at,name等关键字,默认为“created_at”) sort_dir 否 String 降序或升序,默认为“desc” 。desc表示降序 。asc 表示升序 type 否 String 查询项目类型
共100000条