华为云用户手册

  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 send_details Array of AIMMsgSendDetail objects 查询发送明细结果集。 page_info Page object 分页信息。 表4 AIMMsgSendDetail 参数 参数类型 描述 msg_id String 发送明细的唯一标识ID。 task_id String 任务ID。 task_name String 任务名称。 tpl_id String 智能信息模板ID。 tpl_name String 智能信息模板名称。 cust_flag String 创建解析任务时填写用户唯一标识,手机号码或者任何的唯一标识,唯一标识不超过64个字符。发送智能信息时则必须填客户的手机号码。此处为手机号。样例为:130****0001。 send_account String 发送的目标手机号。 send_status String 发送状态。 success:发送成功 fail:发送失败 sending:发送中 send_time String 发送时间。 receive_time String 接收时间。 result_code String 发送错误码。 表5 Page 参数 参数类型 描述 offset Integer 偏移量,表示从此偏移量开始查询,offset大于等于0。 limit Integer 每页显示的条目数量。 total Integer 总条数。 状态码: 400 表6 响应Body参数 参数 参数类型 描述 error_code String 结果状态码。 error_msg String 结果详情。 error_message Object 结果详情。 说明: 该字段在以后可能会废弃,建议使用error_msg字段对接。 状态码: 500 表7 响应Body参数 参数 参数类型 描述 error_code String 结果状态码。 error_msg String 结果详情。 error_message Object 结果详情。 说明: 该字段在以后可能会废弃,建议使用error_msg字段对接。
  • URI GET /v1/aim/send-details 表1 Query参数 参数 是否必选 参数类型 描述 task_id 否 String 任务ID。 最小长度:0 最大长度:36 tpl_id 否 String 智能信息模板ID。 最小长度:0 最大长度:9 sms_sign 否 String 签名。 最小长度:0 最大长度:18 cust_flag 否 String 创建解析任务时填写用户唯一标识。 说明: 手机号码或者任何的唯一标识,唯一标识不超过64个字符。发送智能信息时则必须填客户的手机号码。此处为手机号。样例为:130****0001。 最小长度:0 最大长度:64 begin_time 否 String 发送开始时间。格式为:2019-10-12T07:20:50Z。 说明: 需同时传入end_time才能生效,单独传begin_time不会作为过滤条件。 仅支持查询最近1年内的发送明细。 最小长度:0 最大长度:30 end_time 否 String 发送结束时间。格式为:2019-10-12T07:20:50Z。 说明: 需同时传入begin_time才能生效,单独传end_time不会作为过滤条件。 最小长度:0 最大长度:30 offset 是 Integer 偏移量,表示从此偏移量开始查询,offset大于等于0。 说明: 为提高查询效率,offset+limit须小于等于10000,超出范围查询为空。 最小值:0 最大值:1000000 limit 是 Integer 每页显示的条目数量。 最小值:1 最大值:100
  • 请求示例 一站式创建智能信息服务号。 https://koomessage.myhuaweicloud.cn/v1/aim-sa/unify/pubs { "pub_request_body" : { "logo_img" : "651029053e15443eb5e26e1f4495cccc", "pub_name" : "服务号名称", "pub_abstract" : "服务号摘要", "pub_remark" : "服务号备注", "auto_get_port" : 0, "signs_for_auto_get_port" : [ ], "industry" : 1, "authorization_files" : [ "0315f966f362400d9b2f369aef98cccc" ] }, "portal_request_body" : { "background_img" : "6d5eb6dc1c1a4fa6a240671e0845cccc", "summary" : "主页简介", "tels" : [ { "tel" : "131****0000", "usage" : "官网电话用途" } ], "fastapps" : [ { "name" : "主页快应用", "logo_img" : "651029053e15443eb5e26e1f4495cccc", "description" : "快应用简介", "deeplink" : "hap://app/fastapp1", "depend_engine_version" : "1040" } ], "hw_pubs" : null }, "menu_request_body" : { "menu" : { "menu_items" : [ { "name" : "打开商城", "action_type" : "OPEN_URL", "content" : "https://www.example.com/", "ext_msg" : { "web_title" : "百度百度", "open_in_browser" : 1 }, "sub_menu_items" : [ ] }, { "action_type" : "OPEN_SUBMENU", "name" : "联系我们", "content" : null, "ext_msg" : { }, "sub_menu_items" : [ { "action_type" : "OPEN_URL", "name" : "百度一下", "sub_menu_items" : [ ], "content" : "https://www.example.com/", "ext_msg" : { "web_title" : "url标题", "open_in_browser" : 1 } } ] } ] } } }
  • 响应示例 状态码: 200 返回信息。 { "data" : { "data" : { "pub_id" : "5467ec75eb974f508cee2cee10a7cccc", "menu_id" : "b1323ef35b8f4ee3a6767fa5b6cbcccc", "portal_id" : "71233b4208194db991e0ec091f23cccc", "log_id" : "14458", "pub_name" : "服务号名称" } } }
  • 响应参数 状态码: 200 表11 响应Body参数 参数 参数类型 描述 data PubCreateResponse object 创建服务号的返回值。 表12 PubCreateResponse 参数 参数类型 描述 data data object 响应实体类。 表13 data 参数 参数类型 描述 log_id String 服务号申请记录ID。 pub_id String 服务号ID。 menu_id String 菜单ID。 portal_id String 主页ID。 pub_name String 服务号名称。 状态码: 400 表14 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 结果详情。 状态码: 500 表15 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 结果详情。
  • 请求参数 表1 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 最小长度:0 最大长度:2000 表2 请求Body参数 参数 是否必选 参数类型 描述 pub_request_body 是 PubCreateRequestBody object 创建服务号的请求体。 portal_request_body 是 PortalRequestBody object 创建主页的请求体。 menu_request_body 是 MenuRequestBody object 创建菜单的请求体。 表3 PubCreateRequestBody 参数 是否必选 参数类型 描述 logo_img 是 String 服务号LOGO图片ID。 说明: 通过上传智能信息服务号图片资源接口上传LOGO图片后获得的图片resource_id。图片要求大于等于240*240且比例相同。 最小长度:32 最大长度:32 pub_name 是 String 服务号名称。 说明: 同一个企业下可以相同,不同企业下不能重复。 最小长度:1 最大长度:15 pub_abstract 是 String 服务号简介。 最小长度:1 最大长度:75 pub_remark 否 String 服务号备注。 说明: 同一个企业下,服务号名称相同时该项必须不同。 最小长度:1 最大长度:15 auto_get_port 否 Integer 是否授权系统自动收集端口。 0:否 1:是 最小值:0 最大值:1 缺省值:0 signs_for_auto_get_port 否 Array of strings 自动收集端口使用的签名列表。 说明: auto_get_port为1时,该字段为必填,每个签名长度为2-18个字符,每个服务号签名不可以重复。 最小长度:2 最大长度:18 数组长度:0 - 5 industry 否 Integer 从事行业,默认取服务号所属商家的行业分类。 1:金融理财 2:社交通讯 3:影音娱乐 4:旅游出行 5:购物 6:本地生活 7:运动健康 8:教育培训 9:新闻阅读 10:运营商 11:其他 最小值:1 最大值:11 authorization_files 是 Array of strings 授权证明图片ID,最多支持6张。 说明: 参数值为上传智能信息服务号图片资源API返回的resource_id。 数组长度:0 - 6 表4 PortalRequestBody 参数 是否必选 参数类型 描述 background_img 是 String 主页背景图片资源ID。 说明: 分辨率大于等于1440*810,支持jpg、jpeg、bmp、png。参数值为上传智能信息服务号图片资源API返回的resource_id。 最小长度:32 最大长度:32 summary 是 String 简介。 最小长度:1 最大长度:75 tels 否 Array of TelModel objects 热线号列表。 数组长度:0 - 5 fastapps 否 Array of CreatePubFastappModel objects 快应用列表。 数组长度:0 - 10 hw_pubs 否 Array of strings 华为服务号列表。 说明: 预留,暂未使用。 最小长度:1 最大长度:50 数组长度:0 - 10 表5 TelModel 参数 是否必选 参数类型 描述 tel 是 String 电话号码(只能包含数字和“-”,且开头和结尾必须为数字)。 最小长度:1 最大长度:20 usage 是 String 号码用途。 说明: 号码用途长度范围为1-30个字符,中文占2个字符,英文占1个字符。 表6 CreatePubFastappModel 参数 是否必选 参数类型 描述 name 是 String 快应用名。 说明: 长度范围为1-30个字符,中文占2个字符,英文占1个字符。 logo_img 是 String 快应用LOGO图片资源ID。 说明: 图片格式为jpg、bmp、jpeg,分辨率大于等于192*192,大小不超过4M。参数值为上传智能信息服务号图片资源API返回的resource_id。 最小长度:32 最大长度:32 description 否 String 快应用描述。 说明: 长度范围为1-38个字符,中文占2个字符,英文占1个字符。 deeplink 是 String 快应用跳转链接。 最小长度:1 最大长度:1000 depend_engine_version 是 String 快应用依赖引擎版本。 说明: 长度范围为1-50个字符,中文占2个字符,英文占1个字符。 表7 MenuRequestBody 参数 是否必选 参数类型 描述 menu 是 MenusMode object 菜单对象。 表8 MenusMode 参数 是否必选 参数类型 描述 menu_items 是 Array of MenuItem objects 各子菜单项配置。 数组长度:0 - 3 表9 MenuItem 参数 是否必选 参数类型 描述 name 是 String 子菜单名称。 一级菜单名长度和菜单数量有关,具体约束为: 当菜单数量为1个时,菜单名长度范围在1-24个字符。 当菜单数量为2个时,菜单名长度范围在1-12个字符。 当菜单数量为3个时,菜单名长度范围在1-8个字符。 二级菜单名长度范围恒为1-16个字符。 说明: 以上字符区分中英文,一个中文占2个字符,字母和数字占1个字符,且同时生效的一组菜单内名称不能重复。 action_type 是 String 菜单动作类型。 OPEN_SUBMENU:打开子菜单 OPEN_URL:打开URL CALLING:拨打电话 OPEN_APP:打开APP OPEN_QUICK:打开快应用 最小长度:0 最大长度:30 content 否 String 对应值类型。对应不同action_type值,content含义如下: action_type=OPEN_SUBMENU:不填 action_type=OPEN_URL:参数数值为跳转URL action_type=CALLING:参数数值为电话号码 action_type=OPEN_APP:参数数值为APP的跳转deeplink action_type=OPEN_QUICK:参数数值为快应用跳转的deeplink 最小长度:0 最大长度:1000 ext_msg 否 ExtMsg object 额外需要携带的信息。 action_type=OPEN_SUBMENU时,不填 action_type=CALLING时,不填 action_type=OPEN_URL时,必填 action_type=OPEN_APP时,必填 action_type=OPEN_QUICK时,必填 sub_menu_items 否 Array of MenuItem objects 子菜单配置项。 说明: 仅当action_type=OPEN_SUBMENU时生效,且该项内不允许再配置子菜单。 数组长度:0 - 5 表10 ExtMsg 参数 是否必选 参数类型 描述 open_in_browser 否 String 打开方式。 0:webView打开 1:浏览器打开 说明: action_type=OPEN_URL必填,其他不填。 web_title 否 String 标题,必填,长度范围为1-20个字符。 说明: action_type=OPEN_URL必填,其他不填。 package_name 否 String app包名,长度范围为1-50个字符。 说明: action_type=OPEN_APP必填,其他不填。 app_id 否 String 商家应用的appid,长度范围为0-60个字符。 说明: action_type=OPEN_APP必填,其他不填。 browser_floor_url 否 String 兜底url,长度范围为0-1000个字符,支持http/https。 说明: action_type=OPEN_APP选填,其他不填。 depend_engine_ver 否 String 依赖的快应用引擎版本号,长度范围为1-50个字符。 说明: action_type=OPEN_QUICK必填,其他不填。 third_service_name 否 String 第三方服务名,长度范围为1-50个字符。 说明: action_type=OPEN_QUICK或OPEN_APP必填,其他不填。
  • 响应参数 状态码: 200 表7 响应Body参数 参数 参数类型 描述 data UpdateMenuRsp object 修改智能信息服务号菜单响应体。 表8 UpdateMenuRsp 参数 参数类型 描述 menu_id String 菜单ID。 log_id String 操作记录ID。 状态码: 400 表9 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 结果详情。 状态码: 500 表10 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 结果详情。
  • 请求示例 根据菜单ID修改智能信息服务号菜单。设置修改原因为"业务调整",修改或添加菜单。 https://koomessage.myhuaweicloud.cn/v1/aim-sa/menus/34cffce987e64757bb9b711895714692 { "change_reason" : "业务调整", "menu" : { "menu_items" : [ { "action_type" : "OPEN_APP", "name" : "通过申请", "content" : "hap://app/xxxx.deeplink.xxxxx", "ext_msg" : { "package_name" : "baoming", "app_id" : "", "browser_floor_url" : "https://www.example.com/" } }, { "action_type" : "OPEN_URL", "name" : "打开链接", "content" : "https://www.example.com/", "ext_msg" : { "web_title" : "搜索", "open_in_browser" : "1" } }, { "action_type" : "OPEN_SUBMENU", "name" : "通过菜单", "ext_msg" : { }, "sub_menu_items" : [ { "action_type" : "OPEN_URL", "name" : "搜索一下", "sub_menu_items" : [ ], "content" : "https://www.example.com/", "ext_msg" : { "web_title" : "url标题", "open_in_browser" : "1" } }, { "action_type" : "CALLING", "name" : "电一下", "sub_menu_items" : [ ], "content" : "131****0000" }, { "action_type" : "OPEN_APP", "name" : "手机软件", "sub_menu_items" : [ ], "content" : "hap://app/xxxx.deeplink.xxxxx", "ext_msg" : { "package_name" : "开心消消乐", "app_id" : "appid", "browser_floor_url" : "https://www.example.com/" } }, { "action_type" : "OPEN_QUICK", "name" : "快应用", "sub_menu_items" : [ ], "content" : "hap://app/11111111111", "ext_msg" : { "depend_engine_ver" : "快应用引擎", "third_service_name" : "服务名" } }, { "action_type" : "OPEN_QUICK", "name" : "快应用", "sub_menu_items" : [ ], "content" : "hap://app/dfs/dfdf", "ext_msg" : { "depend_engine_ver" : "v1.1.0", "third_service_name" : "测试" } } ] } ] } }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 表3 请求Body参数 参数 是否必选 参数类型 描述 menu 是 Menus object 菜单配置信息。 change_reason 是 String 修改原因。 最小长度:1 最大长度:1000 表4 Menus 参数 是否必选 参数类型 描述 menu_items 是 Array of MenuItem objects 各子菜单项配置。 数组长度:0 - 3 表5 MenuItem 参数 是否必选 参数类型 描述 name 是 String 子菜单名称。 一级菜单名长度和菜单数量有关,具体约束为: 当菜单数量为1个时,菜单名长度范围在1-24个字符。 当菜单数量为2个时,菜单名长度范围在1-12个字符。 当菜单数量为3个时,菜单名长度范围在1-8个字符。 二级菜单名长度范围恒为1-16个字符。 说明: 以上字符区分中英文,一个中文占2个字符,字母和数字占1个字符,且同时生效的一组菜单内名称不能重复。 action_type 是 String 菜单动作类型。 OPEN_SUBMENU:打开子菜单 OPEN_URL:打开URL CALLING:拨打电话 OPEN_APP:打开APP OPEN_QUICK:打开快应用 最小长度:0 最大长度:30 content 否 String 对应值类型。对应不同action_type值,content含义如下: action_type=OPEN_SUBMENU:不填 action_type=OPEN_URL:参数数值为跳转URL action_type=CALLING:参数数值为电话号码 action_type=OPEN_APP:参数数值为APP的跳转deeplink action_type=OPEN_QUICK:参数数值为快应用跳转的deeplink 最小长度:0 最大长度:1000 ext_msg 否 ExtMsg object 额外需要携带的信息。 action_type=OPEN_SUBMENU时,不填 action_type=CALLING时,不填 action_type=OPEN_URL时,必填 action_type=OPEN_APP时,必填 action_type=OPEN_QUICK时,必填 sub_menu_items 否 Array of MenuItem objects 子菜单配置项。 说明: 仅当action_type=OPEN_SUBMENU时生效,且该项内不允许再配置子菜单。 数组长度:0 - 5 表6 ExtMsg 参数 是否必选 参数类型 描述 open_in_browser 否 String 打开方式。 0:webView打开 1:浏览器打开 说明: action_type=OPEN_URL必填,其他不填。 web_title 否 String 标题,必填,长度范围为1-20个字符。 说明: action_type=OPEN_URL必填,其他不填。 package_name 否 String app包名,长度范围为1-50个字符。 说明: action_type=OPEN_APP必填,其他不填。 app_id 否 String 商家应用的appid,长度范围为0-60个字符。 说明: action_type=OPEN_APP必填,其他不填。 browser_floor_url 否 String 兜底url,长度范围为0-1000个字符,支持http/https。 说明: action_type=OPEN_APP选填,其他不填。 depend_engine_ver 否 String 依赖的快应用引擎版本号,长度范围为1-50个字符。 说明: action_type=OPEN_QUICK必填,其他不填。 third_service_name 否 String 第三方服务名,长度范围为1-50个字符。 说明: action_type=OPEN_QUICK或OPEN_APP必填,其他不填。
  • URI GET /v1/aim/send-tasks 表1 Query参数 参数 是否必选 参数类型 描述 task_id 否 String 智能信息发送任务ID。 task_name 否 String 智能信息发送任务名称。 最小长度:0 最大长度:20 tpl_id 否 String 智能信息模板ID。 最小长度:0 最大长度:9 tpl_name 否 String 智能信息模板名称。 最小长度:0 最大长度:100 begin_time 否 String 智能信息发送任务创建开始时间。样例:2019-10-12T07:20:50.522Z。 说明: 需同时传入end_time才能生效,单独传begin_time不会作为过滤条件。缺省:查询最近7天(168小时)数据。 仅支持查询最近1年内创建的智能信息发送任务。 end_time 否 String 智能信息发送任务创建结束时间。样例:2019-10-12T07:20:50.522Z。 说明: 需同时传入begin_time才能生效,单独传end_time不会作为过滤条件。缺省:查询最近7天(168小时)数据。 task_status 否 String 智能信息发送任务状态。 Success:创建成功 Fail:创建失败 offset 否 Integer 偏移量,表示从此偏移量开始查询,offset大于等于0。 说明: 为提高查询效率,offset+limit须小于等于10000,超出范围查询为空。 最小值:0 最大值:1000000 缺省值:0 limit 否 Integer 每页显示的条目数量。 最小值:1 最大值:100 缺省值:20
  • 响应示例 状态码: 200 返回信息。 { "aim_send_tasks" : [ { "task_id" : "7cc198c3-91d3-425b-9226-54c27cd7cccc", "task_name" : "智能信息发送-动态参数", "task_state" : "Success", "submission_count" : 2, "send_count" : 2, "resolve_count" : 1, "support_resolve_count" : -1, "sms_channel" : { "sms_sign" : "华为云KooMessage" }, "creation_time" : "2022-07-19T14:57:20.00Z", "failed_short_chains" : null, "success_number" : 1 } ], "page_info" : { "offset" : 0, "limit" : 2, "total" : 1 } }
  • 请求消息体 该部分可选。请求消息体通常以结构化格式(如JSON或XML)发出,与请求消息头中Content-Type对应,传递除请求消息头之外的内容。若请求消息体中的参数支持中文,则中文字符必须为UTF-8编码。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根据具体接口而定。 对于查询手机号码智能信息解析能力接口,您可以从接口的请求部分看到所需的请求参数及参数说明。将消息体加入后的请求如下所示,加粗的斜体字段需要根据实际值填写,其中mobiles为手机号码列表,tpl_id为智能信息模板ID。 POST https://koomessage.myhuaweicloud.com/v1/aim/mobile-capabilities/check Content-Type: application/json { "mobiles": [ "***********", "***********", ], "tpl_id": "600042245" } 到这里为止这个请求需要的内容就具备齐全了,您可以使用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 表示用于传输请求的协议,当前KooMessage所有API均采用HTTPS协议。 Endpoint 指定承载REST服务端点的服务器域名或IP,不同服务不同区域的Endpoint不同,当前KooMessage只在“华北-北京四”部署,Endpoint为“koomessage.myhuaweicloud.com”。 resource-path 资源路径,也即API访问路径。从具体API的URI模块获取,例如“查询手机号码智能信息解析能力”API的resource-path为“/v1/aim/mobile-capabilities/check”。 query-string 查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个“?”,形式为“参数名=参数取值”,例如“?limit=10”,表示查询不超过10条数据。 例如您需要获取KooMessage在“华北-北京四”区域的Token,则需使用“华北-北京四”区域的Endpoint(koomessage.myhuaweicloud.com),并在查询手机号码智能信息解析能力的URI部分找到resource-path(/v1/aim/mobile-capabilities/check),拼接起来如下所示。 https://koomessage.myhuaweicloud.com/v1/aim/mobile-capabilities/check 图1 URI示意图 为查看方便,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,而Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 详细的公共请求消息头字段请参见表3。 表3 公共请求消息头 名称 描述 是否必选 示例 Content-Type 消息体的类型(格式),当前只支持application/json。 是 application/json Accept 接收消息体的类型(格式),当前只支持application/json。 否 application/json X-Auth-Token 用户Token。 用户Token也就是调用获取用户Token接口的响应值,该接口是唯一不需要认证的接口。 请求响应成功后在响应消息头(Headers)中包含的“X-Subject-Token”的值即为Token值。 是 使用Token认证时该字段必选。 注:以下仅为Token示例片段 MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ
  • 请求方法 HTTP请求方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。 表2 HTTP方法 方法 说明 GET 请求服务器返回指定资源。 PUT 请求服务器更新指定资源。 POST 请求服务器新增资源或执行non-CRUD操作。 DELETE 请求服务器删除指定资源。 在查询手机号码智能信息解析能力的URI部分,您可以看到其请求方法为“POST”,则其请求为: POST https://koomessage.myhuaweicloud.com/v1/aim/mobile-capabilities/check
  • 监控指标 表1 云连接支持的监控指标 指标ID 指标名称 指标含义 取值范围 测量对象 监控周期 network_incoming_bits_rate 网络流入带宽 云连接域间入站数据的比特率。 单位:比特/秒 ≥ 0 bits/s 域间带宽 5分钟 network_outgoing_bits_rate 网络流出带宽 云连接域间出站数据的比特率。 单位:比特/秒 ≥ 0 bits/s 域间带宽 5分钟 network_incoming_bytes 网络流入流量 云连接域间入站数据的字节数。 单位:字节 ≥ 0 bytes 域间带宽 5分钟 network_outgoing_bytes 网络流出流量 云连接域间出站数据的字节数。 单位:字节 ≥ 0 bytes 域间带宽 5分钟 network_incoming_packets_rate 网络流入包速率 云连接域间入站数据包速率。 单位:包/秒 ≥ 0 packets/s 域间带宽 5分钟 network_outgoing_packets_rate 网络流出包速率 云连接域间出站数据包速率。 单位:包/秒 ≥ 0 packets/s 域间带宽 5分钟 network_incoming_packets 网络流入包量 云连接域间入站数据包数。 单位:包 ≥ 0 packets 域间带宽 5分钟 network_outgoing_packets 网络流出包量 云连接域间出站数据包数。 单位:包 ≥ 0 packets 域间带宽 5分钟 network_bandwidth_usage 网络带宽使用率 云连接域间带宽数据使用率。 单位:百分比 0-100% 域间带宽 5分钟 部分区域已支持1分钟的监控周期,请以控制台实际为准。
  • 约束限制 华为云CloudShell是一款用于管理与运维云资源的网页版Shell工具,通过CloudShell可以完成登录弹性云服务器、连接集群等操作。 用户在使用CloudShell时,同时打开的实例数量和会话数量有如下限制: 表1 约束限制 场景 实例数量 会话数量 连接云服务器 4 10个/实例 连接CCE集群/容器 15 不涉及 命令行工具 1 不涉及 当前不支持iOS系统。 父主题: CloudShell相关操作
  • 操作步骤 登录AOM 1.0控制台。 在“AOM 2.0新特性”弹框中单击“我要迁移”。 图1 新特性弹框 在“迁移注意事项”弹框中单击“开始迁移”。 图2 迁移注意事项弹框 开始迁移,弹框显示“迁移中”。 图3 迁移中 迁移完成,单击“迁移完成”弹框中的“开始使用 AOM 2.0”,进入AOM 2.0控制台。 图4 迁移完成 迁移完成后,单击过“迁移完成”弹框中的“开始使用AOM 2.0”,再次进入AOM 1.0控制台会自动跳转到AOM 2.0控制台。如果需要回到AOM 1.0控制台,可以在AOM 2.0控制台左侧导航栏中单击“返回旧版”。
  • 处理方法 读取文件报错,您可以使用Moxing将数据拷贝至容器中,再直接访问容器中的数据。请参见步骤1。 您也可以根据不同的文件类型,进行读取。请参见读取“json”文件、读取“npy”文件、使用cv2库读取文件和在MXNet环境下使用torch包。 读取文件报错,您可以使用Moxing将数据拷贝至容器中,再直接访问容器中的数据。具体方式如下: import moxing as mox mox.file.make_dirs('/cache/data_url') mox.file.copy_parallel('obs://bucket-name/data_url', '/cache/data_url') 读取“json”文件,请您在代码中尝试如下方法: json.loads(mox.file.read(json_path, binary=True)) 使用“numpy.load”读取“npy”文件,请您在代码中尝试如下方法: 使用MoXing API读取OBS中的文件 np.load(mox.file.read(_SAMPLE_PATHS['rgb'], binary=True)) 使用MoXing的file模块对OBS文件进行读写 with mox.file.File(_SAMPLE_PATHS['rgb'], 'rb') as f: np.load(f) 使用cv2库读取文件,请您尝试如下方法: cv2.imdecode(np.fromstring(mox.file.read(img_path), np.uint8), 1) 在MXNet环境下使用torch包,请您尝试如下方法先进行导包: import os os.sysytem('pip install torch') import torch
  • 问题现象 创建训练作业如何读取“json”和“npy”文件。 训练作业如何使用cv2库读取文件。 如何在MXNet环境下使用torch包。 训练作业读取文件,出现如下报错: NotFoundError (see above for traceback): Unsucessful TensorSliceReader constructor: Failed to find any matching files for xxx://xxx
  • 原因分析及处理办法 日志打印如下内容,表示自定义镜像的CPU架构与资源池节点的CPU架构不一致。 standard_init_linux.go:215: exec user process caused "exec format error" libcontainer: container start initialization failed: standard_init_linux.go:215: exec user process caused "exec format error" 常见场景为使用自定义镜像创建作业时选择的资源类型和规格错误。例如,自定义镜像是ARM CPU架构,应选用NPU规格的资源,却使用了X86 CPU/X86 GPU规格的资源。
  • 处理步骤 查询训练作业的日志和监控信息,是否存在明确的OOM报错信息。 是,训练作业的日志里存在OOM报错,执行2。 否,训练作业的日志里没有OOM报错,但是存在监控指标异常,执行3。 排查训练代码是否存在不断占用资源的代码,使得资源未被合理使用。 是,优化代码,等待作业运行正常。 否,提高训练作业使用的资源规格或者联系技术支持。 重启训练作业,使用CloudShell登录训练容器监控内存指标,确认是否有突发性的内存增加现象。 是,排查内存突发增加的时间点附近的训练作业日志,优化对应的代码逻辑,减少内存申请。 否,提高训练作业使用的资源规格或者联系技术支持。
  • 响应消息 响应参数如表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 媒体类型。
  • 响应示例 { "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" } }
  • 功能介绍 返回指定版本的信息。 为了支持功能不断扩展,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。
  • 响应示例 { "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映像服务中有一个替代表示。
  • 使用Python SDK 您可以前往开发体验馆Codelabs / Namespace生命周期代码示例(Python)下载相关代码,并在线调试。 首先需要先生成kubeconfig配置文件,参考cci-iam-authenticator使用参考,使用子命令generate-kubeconfig生成kubeconfig配置文件。 这里的示例代码采用了定期刷新token的方式来防止token过期(缓存值token有效期为24小时),您可以增加获取失败重试的操作,以提升可用性。 定期刷新token的方式不适用于该账号权限发生变更的情形,如果账号权限发生变更(如主账号变更子账号权限,导致子账号权限发生变更),变更前获取的token会失效,需要重新获取 # -*- coding: utf-8 -*- import logging import time import threading from kubernetes import client, config NAMESPACE = "test-k8s-client-namespace" logging.basicConfig( level=logging.INFO, datefmt="%Y-%m-%d %H:%M:%S", format="%(asctime)s %(levelname)s %(message)s", ) def create_namespace(): flavor = "general-computing" pool_size = "10" namespace = client.V1Namespace( metadata=client.V1ObjectMeta( name=NAMESPACE, annotations={ "namespace.kubernetes.io/flavor": flavor, "network.cci.io/warm-pool-size": pool_size, }, labels={ "rbac.authorization.cci.io/enable-k8s-rbac": "false", } ) ) logging.info("start to create namespace %s", NAMESPACE) client.CoreV1Api().create_namespace(namespace) logging.info("namespace created") def create_network(): name = "test-k8s-client-namespace-cn-north-7-default-network" project_id = "{project_id}" domain_id = "{domain_id}" security_group_id = "{security_group_id}" available_zone = "{available_zone}" vpc_id = "{vpc_id}" cidr = "{cidr}" network_id = "{network_id}" subnet_id = "{subnet_id}" body = { "apiVersion": "networking.cci.io/v1beta1", "kind": "Network", "metadata": { "annotations": { "network.alpha.kubernetes.io/default-security-group": security_group_id, "network.alpha.kubernetes.io/domain-id": domain_id, "network.alpha.kubernetes.io/project-id": project_id, }, "name": name, }, "spec": { "availableZone": available_zone, "cidr": cidr, "attachedVPC": vpc_id, "networkID": network_id, "networkType": "underlay_neutron", "subnetID": subnet_id, } } api = client.CustomObjectsApi() logging.info("start to create network") api.create_namespaced_custom_object( group="networking.cci.io", version="v1beta1", namespace=NAMESPACE, plural="networks", body=body, ) logging.info("network created") def create_deployment(): app = "test-k8s-client-deployment" image = "library/nginx:stable-alpine-perl" body = client.V1Deployment( api_version="apps/v1", kind="Deployment", metadata=client.V1ObjectMeta(name=app), spec=client.V1DeploymentSpec( replicas=2, selector={"matchLabels": {"app": app}}, template=client.V1PodTemplateSpec( metadata=client.V1ObjectMeta(labels={"app": app}), spec=client.V1PodSpec( containers=[ client.V1Container( name="container-0", image=image, resources=client.V1ResourceRequirements( requests={"cpu": "500m", "memory": "1024Mi"}, limits={"cpu": "500m", "memory": "1024Mi"}, ), ) ], image_pull_secrets=[ client.V1LocalObjectReference(name="imagepull-secret")], priority=0), ), ) ) logging.info("start to create deployment %s/%s", NAMESPACE, app) client.AppsV1Api().create_namespaced_deployment(NAMESPACE, body) logging.info("deployment created") def get_deployment(): app = "test-k8s-client-deployment" resp = client.AppsV1Api().read_namespaced_deployment(app, NAMESPACE) logging.info("deployment detail: %s", resp) def delete_deployment(): app = "test-k8s-client-deployment" logging.info("start to delete deployment") client.AppsV1Api().delete_namespaced_deployment(app, NAMESPACE) logging.info("deployment deleted") def delete_namespace(): logging.info("start to delete namespace: %s", NAMESPACE) client.CoreV1Api().delete_namespace(NAMESPACE) def main(): # Configs can be set in Configuration class directly or using helper # utility. If no argument provided, the config will be loaded from # default location. path = '{path to kubeconfig}' config.load_kube_config(path) # 因为token有效期为24小时,所以这里设置了一个每12小时获取新的token的定时任务 # 注意:如果账号权限发生变更(如主账号变更子账号权限,导致子账号权限发生变更),变更前获取的token会失效,需要重新获取。 # 另外,您可以增加获取失败重试的操作,以提升可用性 def _refresh(): while True: time.sleep(12 * 3600) try: config.load_kube_config(path) except Exception as e: print("load_kube_config error: %s" % e) t = threading.Thread(target=_refresh) t.daemon = True t.start() create_namespace() create_network() # wait for namespace and network to be active logging.info("waiting for namespace and network to be active") time.sleep(30) create_deployment() get_deployment() delete_deployment() delete_namespace() if __name__ == '__main__': main()
  • 通过标签labels设置弹性策略 您成功安装virtual-kubelet插件后,在工作负载中添加virtual-kubelet.io/burst-to-cci这个标签即可设置弹性到CCI。 apiVersion: apps/v1 kind: Deployment metadata: name: test namespace: default labels: virtual-kubelet.io/burst-to-cci: 'auto' # 弹性到CCI spec: replicas: 2 selector: matchLabels: app: test template: metadata: labels: app: test spec: containers: - image: 'nginx:perl' name: container-0 resources: requests: cpu: 250m memory: 512Mi limits: cpu: 250m memory: 512Mi volumeMounts: [] imagePullSecrets: - name: default-secret 创建弹性至CCI的负载时需要在工作负载或Pod的labels中添加如下字段: virtual-kubelet.io/burst-to-cci: "auto" 其中,value值支持以下选项: auto:根据用户集群内调度器实际打分结果自动决定是否弹性至CCI,其中在TaintToleration算法上会优先选择调度到CCE节点。 localPrefer:集群资源不足时,将Pod部署到CCI。 enforce:强制调度至CCI。 off:不调度至CCI。
  • 使用profile管理线下IDC和云上分配数量 使用profile配置管理集群内pod,通过labelSelector类方式关联profile和pod,并配置关联pod的分配策略,实现pod在线下IDC和云上的分配或数量限制。 约束与限制 客户可通过Profile配置管理集群内pod策略,仍兼容原有pod的label内burst-to-cci的配置方式,优先级比profile高。 localPrefer不可同时配置local、cci。 auto和localPrefer策略允许关联未被profile关联过的pod,enforce策略不允许关联未被profile关联过的pod。 目前profile在配置localPrefer策略下,为避免全局性问题,在极限场景下限制local数量的配置可能会失效。 在deployment滚动升级场景下,推荐配置尽可能小的maxSurge值(如直接配置为0),避免出现升级时限制maxNum的区域调度量少于预期的现象。 pod只能关联一个profile,即关联度最大的profile。若pod创建后,对其label进行修改导致与原profile不匹配,pod会重新选择关联度最大的profile进行关联。关联度最大的profile确定方法: 根据profile中obejectLables计算labelSelector内matchLabels的数量及matchExpression的数量之和,和最大的profile即为pod关联度最大的profile; 若出现和相同的profile,选择profile的name字母序最小的profile为pod关联度最大的profile。 不支持使用log-agent插件采集profile管理的负载日志。 使用方式 配置local maxNum和scaleDownPriority apiVersion: scheduling.cci.io/v1 kind: ScheduleProfile metadata: name: test-cci-profile namespace: default spec: objectLabels: matchLabels: app: nginx strategy: localPrefer location: local: maxNum: 20 # 当前暂不支持local/cci同时配置maxNum scaleDownPriority: 10 cci: {} status: phase: initialized restrict: local: 20 # restrict内随着location内配置进行填写,即不会同时出现 local/cci used: local: 20 cci: 0 配置cci maxNum和scaleDownPriority apiVersion: scheduling.cci.io/v1 kind: ScheduleProfile metadata: name: test-cci-profile namespace: default spec: objectLabels: matchLabels: app: nginx strategy: localPrefer location: local: {} cci: maxNum: 20 # 当前暂不支持local/cci同时配置maxNum scaleDownPriority: 10 status: phase: initialized restrict: cci: 20 # restrict内随着location内配置进行填写,即不会同时出现 local/cci used: local: 0 cci: 20
共100000条