华为云用户手册

  • 备案成功后注意事项 备案成功后需注意以下事项: 按照《非经营性互联网信息服务备案管理办法》,在您的网站首页底部中间位置,放置您的备案号并链接至工信部备案管理系统“https://beian.miit.gov.cn/ ”。 请您务必保证网站内容与备案内容一致,内容不一致将面临整改、关停风险。 按照《中华人民共和国计算机信息系统安全保护条例》等相关法律法规,网站开通之日起30日内到公司实际经营地或个人常住地公安机关履行公安备案手续,详情请参见公安备案。 如您的网站在备案成功后打开仍然显示阻断页面,是由于备案信息在系统间同步存在延迟,备案通过一个工作日后网页会自动开放,请知晓。 依据《非经营性互联网信息服务备案管理办法》第二十三条规定,如备案信息不真实,将关闭网站并注销备案。备案成功后,若您的备案中存在不准确的信息项(如单位证件信息、负责人信息),请您在10个工作日内通过华为云备案系统进行变更备案,变更不准确的备案信息,感谢您的配合。 为保证网站的正常访问,备案成功后,您还需要配置网站解析,将域名解析至对应备案接入商的服务器。如果您是在华为云做网站备案,网站解析操作如下: 在华为云注册域名的用户,单击这里配置网站解析。 在第三方注册域名的用户,单击这里配置网站解析。 父主题: 备案成功后
  • 修订记录 发布日期 修订记录 2021-10-30 第二十四次正式发布。 修改 诵读《网站备案信息真实性承诺书》视频要求,修改视频大小限制为40MB。 2021-10-12 第二十三次正式发布。 新增 如何查看E CS 的弹性公网IP地址? 2021-08-31 第二十二次正式发布。 新增 党建证明FAQ(网站党建备案信息确认函) 修改 只有域名能否备案 为什么要进行视频核验 2021-08-04 第二十一次正式发布。 修改 没有购买云产品能否备案 只有域名能否备案 什么是“用于备案的资源” 怎样选择“云服务类型” 2021-07-26 第二十次正式发布。 新增 已经购买了华为云服务器,但备案时选择不了? 修改 找不到备案入口,无法进行备案 怎样了解备案进度 2021-06-18 第十九次正式发布。 新增 互联网信息服务备案承诺书 修改 我需要在华为云备案吗 2021-05-31 第十八次正式发布。 新增 江苏省ICP备案真实性核验工作新要求 修改 个人备案与单位备案FAQ,增加相关名词的超链接。 多域名如何提交备案 如何获取及使用“备案授权码”,修改获取备案授权码的操作。 2021-04-09 第十七次正式发布。 新增 提示“注册商不存在该域名注册人信息”或“域名不存在” 我需要在华为云备案吗 公安备案FAQ 修改 ICP备案后,还需要做什么,补充标明备案号的常见问题 系统填写,梳理并整合备案信息填写相关的常见问题 备案短信核验FAQ,“短信核验信息输入错误,怎么办”补充说明。 2021-01-29 第十六次正式发布。 新增 公安备案FAQ 修改 空壳主体 如何联系华为云备案团队,更新备案热线电话 删除 湖北省管局年度审核工作 2020-12-31 第十五次正式发布。 新增 域名实名认证后多久可以备案 .xx可以用于备案吗 找不到备案入口,无法进行备案 怎样选择“云服务类型” ICP备案后,还需要做什么 修改 一台服务器是否可以多次办理备案 “验证备案类型”注意事项 怎样选择“服务类型” 为什么提示“备案授权码无效” 注销备案FAQ,补充描述 备案短信核验FAQ,新增“收到验证码,不知道怎么验证?” 2020-10-14 第十四次正式发布。 新增 认领备案FAQ 如何联系华为云备案团队 修改 帐号与实名认证FAQ,添加说明:待实名认证成功满3个工作日后再提交备案申请。 IAM 用户如何申请备案权限,补充约束与限制。 域名证书,补充域名证书下载的详细操作。 怎样了解备案进度 备案证书在哪里获取 删除 忘记原备案登录帐号密码怎么办 导入信息提示“您的当前帐号存在正在进行的订单,请在原备案系统中将备案流程走完后,在通过当前系统进行备案” 2020-09-17 第十三次正式发布。 修改 备案必须安装华为云APP吗 服务器在华为云,域名不在华为云,是否可以备案 IAM用户如何申请备案权限 一台服务器是否可以多次办理备案 必须在APP端完成真实性核验吗,增加“必须在APP端完成真实性核验吗”。 真实性核验必须是法定代表人吗,增加相关链接。 域名核验新规-注册信息比对不一致 如何获取“接入商资质材料”,补充常用邮箱。 2020-08-21 第十二次正式发布。 修改 备案短信核验FAQ 短信验证不通过 更新工信部备案管理系统链接。 删除 备案密码 备案密码错误 2020-08-11 第十一次正式发布。 新增 如何获取“等保证明” 修改 打开华为云APP网站备案,界面白屏 电子版证件资料要求 短信验证不通过 2020-07-07 第十次正式发布。 新增 帐号与实名认证FAQ “备案联系方式”填写要求 ICP备案号FAQ 修改 为什么网站无法访问?,新增原因四。 个人备案与单位备案FAQ 多域名如何提交备案 变更主体信息和新增网站能否同时进行 如何获取“接入商资质材料” 备案成功后注意事项 2020-05-30 第九次正式发布。 修改 什么是“用于备案的资源”,补充说明。 真实性核验不通过,为什么 域名所有者实名认证截图 必须在APP端完成真实性核验吗 “撤销备案”与“放弃备案” 如何获取及使用“备案授权码” 2020-05-11 第八次正式发布。 新增 空壳网站 空壳主体 修改 主体负责人填写的不是法定代表人 2020-05-06 第七次正式发布。 修改 网站信息超出许可范围 短信平台号码是什么,修改联通用户短信平台号码。 删除 公安备案 经营性ICP许可证办理指导 2020-04-24 第六次正式发布。 新增 注销备案FAQ 备案短信核验FAQ,整合短信验证码相关的常见问题。 分公司或子公司网站是否可以备案到总公司备案中 修改 二级域名是否需要备案 2020-04-16 第五次正式发布。 新增 如何获取“接入商资质材料” 必须在APP端完成真实性核验吗 为什么网站无法访问? 真实性核验必须是法定代表人吗 服务器在华为云,域名不在华为云,是否可以备案 打开华为云APP网站备案,界面白屏 修改 “撤销备案”与“放弃备案” 2020-04-14 第四次正式发布。 新增 个人备案与单位备案FAQ 修改 没有购买云产品能否备案 只有域名能否备案 真实性核验不通过,为什么 湖北省管局年度审核工作,调整年审时间至6月底。 调整常见问题分类,新增分类公安备案和经营性备案、备案成功后 删除 什么是备案密码 2020-03-19 第三次正式发布。 新增 提示“小程序未安装”怎么办 备案必须安装华为云APP吗 如何选择备案填写信息中的“地域” 首次备案提交了,审核期间还能新增备案吗 提示“用于备案的资源已达最大使用次数”怎么办 中文域名是否支持备案 2020-03-02 第二次正式发布。 新增 可以不做域名备案吗 备案支持API方式吗 为什么提示“备案授权码无效” 什么是“用于备案的资源” 域名所有者实名认证截图 怎样获取备案幕布 真实性核验不通过,为什么 2020-01-22 第一次正式发布。
  • 真实性核验不通过,为什么 使用华为云APP做真实性核验一直不通过,可能是以下原因,如表1所示。 表1 真实性核验不通过处理措施 核验不通过的原因 解决方法 动作不规范,偏头和转头混淆。 需要重新核验。 解决方法:网站负责人需着装整齐拍摄,背景为纯白色没有任何杂物(白墙),两肩露出上方留白进行清晰拍摄。 拍摄地光线黑暗。 可能原因:拍摄身份证照片时光线不足,导致身份证头像不清晰,无法正确识别。 解决方法:在光线充足的地方重新拍摄证件扫描件上传,并在真实性核验时确保光线充足。 人脸图像质量或格式问题。 可能原因:在拍摄身份证照片时,证件有效区域太小,多余背景过多。 解决方法:建议将证件照片的多余背景裁剪掉,或者重新拍摄证件扫描件并上传,重新核验。 未检测到人脸或检测到多张人脸。 可能原因:拍摄的身份证照片头像位置反光或有阴影,导致身份证头像不清晰,无法正确识别。 解决方法:重新拍摄证件扫描件并上传,重新核验。 人脸与身份证信息不符。 请确保是本人操作。 使用IOS11.1版本苹果手机上传的证件,系统显示不出来,导致核验失败。 建议更换手机重试,或者切换IOS其他版本使用。 手机版本比较低,APP目前只兼容Android 4.2以上版本。 建议更换手机重试。 认证信息不一致,即填写的网站负责人证件号码或姓名与身份证不一致。 请检查填写的信息。 非上述原因 建议更换手机重试。 父主题: 上传资料与真实性核验
  • 收到未解析华为云服务器或未解析备案填写IP如何处理? 网站备案信息应与实际相符,您的域名需解析至备案信息填写的IP。 若备案信息IP已不再使用,请您提交变更网站,将IP变更为实际解析IP。 若备案信息IP继续使用,请将域名解析至备案信息IP。 若您有使用建站、WAF、CDN等产品,请您拨打950808转5或提交工单向我们反馈。 变更备案具体操作步骤请参考:使用APP变更备案或使用PC变更备案。 父主题: 备案成功后
  • 换一台新的华为云服务器需要变更备案吗 变更备案主要取决于您的网站是否涉及经营性备案,或者更换的服务器后备案网站的IP地址是否有变化,如网站IP无变化,不需要变更备案。如网站IP发生变化,则建议进行变更备案,更新IP信息。 并且,通信管理局会定期核查备案接入信息的一致性,若排查到实际解析的华为云IP不是当时备案时的IP,会要求整改备案信息,需要您提交变更备案进行修改,变更备案期间不影响网站的正常访问。 变更备案具体操作步骤请参考:使用APP变更备案或使用PC变更备案。 父主题: 备案基础
  • 网站名称基本要求 非国家级单位网站名称不得以“中国”、“中央”、“国家”、“中华”、“人大”、“人民”、“反腐”、 “纪检”、“监察”、“信访”、“维权”、“投诉”等字头命名。若网站名称涉及以上等内容,请提交主办单位有效证件(复印件即可)及说明材料(网站所属单位说明,备案的网站网址,网站负责人联系电话,须盖公章),以证明单位为国家级单位,网站名称可以“中国”、“中央”、“国家”、“中华”、“人大”、“人民”等字头命名。 网站名称不能是纯数字、纯英文、不能包含特殊符号或敏感词汇(反腐、赌博等)。 个人网站名称不能以域名、姓名命名,不能包含公司、组织等类型的字眼。 网站名称需能体现网站内容,不可超出主体权限范围。 网站名称要求三个字以上(含三个字)。
  • 个人网站名称要求 个人名义主办的网站类型主要有:工作经验分享(技术、学术研究等)、摄影作品分享、个人生活感悟记录等,尽量贴近网站内容,但不可超出个人权限范围。 网站名称处请填写网站开办后准备使用的名称,不能包含个人姓名、地名,不能是纯数字或字母组成,不能包含特殊符号,也不宜使用简称(至少在4个汉字以上),更不宜使用XXX工作室类似的格式命名网站(网站名称中包含xxx企业、集团、有限公司、资讯、生产中心、科技、贸易、协会、俱乐部、合作社、工作室等字样),对应备案主体均不能填写个人信息。 若包含新闻、出版、教育、医疗保健、药品和医疗器械、电子公告服务(社区、论坛)、博客、文化、广播电影电视节目等字样请联系相关主管部门,确定是否需办理前置或专项审批手续。 表1 管局要求说明 省份 禁止使用行业类以及经营性词汇 北京市 合伙、评论、中心、售后、学院、社团、博客、论坛、社区、返现、团购 广东省 媒体、股票、证券、彩票、体彩、刮刮乐、导航、论坛、社区、交流 、商城、交易、返现、批发、利润、商务 浙江省 工作室、官网、行业、电商、企业、工坊、中心、产业、农业、养殖、股票、证券、彩票、体彩、刮刮乐、博客、论坛、在线、社区 河南省 合伙、框架、大众、维修、设计、沙龙、艺术、评论、工作室、官网、服务、转让、品牌、排行榜、行业、宣传、电商、报价、企业、管理、工坊、传播、中心、交流、咨询、投资、售后、学院、贸易、旗舰、产业、农业、传媒、管理、系统、媒体、股票、证券、彩票、体彩、刮刮乐、工作室、热线、社团、导航、论坛、在线、社区、交流、营销、商城、交易、折扣、定做、定制、购、返现、购物、贸易、导购、淘宝、网淘、阿里、诚信通、旺铺、网购、批发、市场、利润、团购、易购、商务 辽宁省 合伙、大众、维修、沙龙、工作室、互联、官网、品牌、行业、宣传、电商、企业、管理、工坊、传播、咨询、投资、贸易、产业、养殖、传媒、媒体、股票、证券、彩票、体彩、咨询、网络、网址、平台、论坛、站长网、商城、交易、折扣、购、购物、返现、易购、淘宝、网淘、网购、旺铺、团购 湖北省 官网、行业、电商、企业、学院、论坛、商城、团购 宁夏回族自治区 网、技术、信息、工作室、资讯、网站、网络、网址、爱好者、作品展示、工作室、平台、主页、热线、社团、导航、博客、论坛、在线、社区、交流、网站、营销、商城、交易、折扣、定做、定制、购、返现、购物、贸易、导购、淘宝、网淘、阿里、诚信通、旺铺、网购、批发、市场、利润、团购、易购、商务 河北省 工作室、官网、企业、中心、学院、彩票、体彩、刮刮乐、工作室、社团、论坛、社区、商城、淘宝、团购 贵州省 评论、信息、互联、官网、排行榜、行业、宣传、电商、售后、学院、传媒、媒体、股票、证券、彩票、体彩、刮刮乐、资讯、网址、平台、主页、热线、导航、博客、论坛、在线、社区、交流、营销、商城、交易、折扣、购、返现、购物、导购、淘宝、网淘、旺铺、网购、批发、团购、易购 湖南省 官网、电商、报价、企业、售后、学院、产业、媒体、博客、论坛、营销、商城、交易、折扣、定做、定制、购、返现、购物、贸易、导购、淘宝、网淘、阿里、诚信通、旺铺、网购、批发、市场、利润、团购、易购、商务 内蒙古自治区 学院、股票、证券、彩票、体彩、刮刮乐、导航、博客、论坛、在线、营销、商城、交易、折扣、购、返现、购物、导购、淘宝、网淘、网购、利润、团购、易购
  • 域名核验新规-注册信息比对不一致 2018年1月1日工信部启用域名核验新规,具体规则请参见域名核验规则。 如果未能通过备案域名核验,可能存在如下一项或多项情形,如表1所示。 表1 未能通过备案域名核验解决方法 可能原因 解决方法 您注册的域名对应的顶级域名可能未通过国家批复。 系统根据工信部公示的域名信息进行一致性校验。 请登录工信部域名行业管理信息公示,确认您注册的域名后缀是否在“域名.信息”网站上可查询。 您的 域名注册服务 机构可能未经国家批复。 请联系您的域名注册服务机构进行核实。 您的域名已经超过域名注册有效期。 请联系您的域名注册服务机构进行核实,并续费。 您的域名未完成域名实名信息认证。 请完成域名实名认证,且实名认证信息与备案主办单位或备案主体信息一致,可联系您的域名注册服务机构协助。 您的域名已完成域名实名信息认证,但尚未入库工信部(域名实名信息上报及入库一般需约3个工作日左右)。 建议在完成域名实名认证3个工作日后,或与域名注册服务机构确认后,再提交备案申请。 您的备案主体信息或备案主办单位信息与域名实名信息不符。 请修改域名信息或备案主体信息。 父主题: 管局退回
  • 经营性ICP许可证办理 《互联网信息服务管理办法》(第292号)指出,互联网信息服务分:经营性、非经营性;国家对经营性互联网信息服务实行许可制度;对非经营性互联网信息服务实行备案制度。未取得许可或者未履行备案手续的,不得从事互联网信息服务。 即所有提供互联网信息服务都需办理ICP备案,如涉及经营性,应在获取ICP备案号后按主管部门要求申请经营性ICP许可证。 经营性ICP许可证需要用户自行到归属管局部门进行办理,具体办理要求请登录当地管局官网或联系管局(建议提前了解流程及办理条件)。若您的网站已在华为云完成ICP备案,申请许可证如需接入商资质材料,华为云可为您协助提供。 父主题: 公安备案和经营性备案
  • 为什么会收到“取消接入”或“注销通知” 为贯彻落实工信部和各通信管理局关于网站备案信息真实性核查工作要求,根据《互联网信息服务管理办法》、《非经营性互联网信息服务备案管理办法》等相关法律法规的规定,即日起,华为云将对全国各个省份已备案的网站信息开展真实性专项核查工作。若您未及时对本次专项核查工作中的网站备案问题进行整改,华为云将根据相应的法律法规停止您的网站接入,届时您的网站将无法对外访问。 父主题: 备案成功后
  • 个人备案与单位备案的区别 表1 个人备案与单位备案的区别 - 域名 备案提交所需身份证件 网站内容 个人备案 个人持有的域名。 域名注册信息是个人信息,需提交个人身份信息认证,如个人身份证。 备案申请需提供:个人身份证件,如身份证彩色扫描件 网站只能展示个人相关的信息。不能展示经营性内容,否则会被注销备案号。如: 不能涉及产品、价格、商品等内容。 不能涉及团购类、经营类、游戏类等内容。 不能出现任何的企业信息,包括公司、组织、机构等描述。 其他法律法规不允许展现的内容。 单位备案 单位持有的域名。 域名注册信息是单位信息,需提交营业执照、组织机构代码证等证件进行认证。 备案申请需提供:公司营业执照、组织机构代码证、法定代表人身份证件等 网站名称和网站内容应与主办单位名称、性质、经营范围相符,不能超出其范围。 如果网站内容涉及经营性内容,需办理ICP许可证。 个人备案和单位备案所需资料要求,请参见准备备案材料。
  • 网站备案使用前必读 可以不做备案吗? 不可以,根据《互联网信息服务管理办法》等相关规定,使用中国大陆节点服务器开办的网站,必须先办理网站备案,备案成功并获取通信管理局下发的ICP备案号后才能开通访问。 网站在国外,需要备案吗? 不需要,根据中国的相关法规,只有在中国大陆运营的网站才需要进行备案。如果您的域名解析到的服务器IP地址在中国香港、中国台湾、中国澳门、或其它非中国的国家和地区,则不需要备案。 我只有域名,不买服务器,可以备案吗? 不可以,域名无法单独备案。只有购买了华为云备案服务器,华为云才能成为您的接入商,免费为您提供备案服务。 我的服务器在华为云,域名是其他云厂商的,可以在华为云备案吗? 可以,根据规定您需要在您选择的服务器提供商处进行网站备案,即如果您的服务器是在华为云购买,则需要在华为云进行备案。 我在“其他云”已经备案过,现在转到华为云,为什么网站不能访问? 如果您已在其他接入商处完成备案并获取备案号,需要将域名解析至华为云购买的中国大陆服务器,网站才可以被访问。具体操作请登录华为云备案管理系统,办理“新增接入”备案。 我的业务是通过IP访问的,需要备案吗? 需要,只要使用中国大陆节点的服务器就需要备案。如果您使用的是华为云服务器,请在华为云备案系统提交备案申请;如果使用的是其他服务器提供商的服务器,请在其他服务器提供商处提交备案申请。
  • 修订记录 发布日期 修订记录 2023-05-12 第六次正式发布。 新增 网站备案使用前必读 2021-07-26 第五次正式发布。 修改 快速完成网站备案,修改“提交初审”的描述,新增表2。 2021-05-31 第四次正式发布。 优化快速完成网站备案,补充各操作的常见问题。 2020-08-21 第三次正式发布。 修改 快速完成网站备案,短信核验修改为必选操作。 更新工信部备案管理系统链接。 2020-07-07 第二次正式发布。 新增 部署网站的端到端流程与相关介绍。 2020-02-21 第一次正式发布。
  • 将订阅模型部署为服务 针对我的订阅模型,支持将模型一键部署为服务。 在“我的订阅”列表中,单击模型名称左侧的小三角,展开模型的详情和模型版本。 在“版本列表”中,单击“部署”,选择对应的服务类型。 图4 部署 若您选择部署的是商用模型,则选择服务类型后会弹出“修改配额”窗口,根据需要选择配额后单击“确定”即可跳转至“部署”页面。 由于商用模型支持同时购买多种配额模式的资产,所以仅部署商用模型时需要进行配额选择。免费模型仅一种配额模式无需选择。 图5 修改配额 若您选择部署的非商业模型,系统自动跳转至“部署”页面。 在部署页面中,无需再选择模型及其版本,参考部署模型的操作指导完成其他参数填写,即可部署为您需要的服务。
  • 推理代码 在模型代码推理文件customize_service.py中,需要添加一个子类,该子类继承对应模型类型的父类,各模型类型的父类名称和导入语句如请参考表1。 from PIL import Imageimport logfrom model_service.pytorch_model_service import PTServingBaseServiceimport torch.nn.functional as Fimport torch.nn as nnimport torchimport jsonimport numpy as nplogger = log.getLogger(__name__)import torchvision.transforms as transforms# 定义模型预处理infer_transformation = transforms.Compose([ transforms.Resize((28,28)), # 需要处理成pytorch tensor transforms.ToTensor()])import osclass PTVisionService(PTServingBaseService): def __init__(self, model_name, model_path): # 调用父类构造方法 super(PTVisionService, self).__init__(model_name, model_path) # 调用自定义函数加载模型 self.model = Mnist(model_path) # 加载标签 self.label = [0,1,2,3,4,5,6,7,8,9] # 亦可通过文件标签文件加载 # model目录下放置label.json文件,此处读取 dir_path = os.path.dirname(os.path.realpath(self.model_path)) with open(os.path.join(dir_path, 'label.json')) as f: self.label = json.load(f) def _preprocess(self, data): preprocessed_data = {} for k, v in data.items(): input_batch = [] for file_name, file_content in v.items(): with Image.open(file_content) as image1: # 灰度处理 image1 = image1.convert("L") if torch.cuda.is_available(): input_batch.append(infer_transformation(image1).cuda()) else: input_batch.append(infer_transformation(image1)) input_batch_var = torch.autograd.Variable(torch.stack(input_batch, dim=0), volatile=True) print(input_batch_var.shape) preprocessed_data[k] = input_batch_var return preprocessed_data def _postprocess(self, data): results = [] for k, v in data.items(): result = torch.argmax(v[0]) result = {k: self.label[result]} results.append(result) return results def _inference(self, data): result = {} for k, v in data.items(): result[k] = self.model(v) return resultclass Net(nn.Module): def __init__(self): super(Net, self).__init__() self.hidden1 = nn.Linear(784, 5120, bias=False) self.output = nn.Linear(5120, 10, bias=False) def forward(self, x): x = x.view(x.size()[0], -1) x = F.relu((self.hidden1(x))) x = F.dropout(x, 0.2) x = self.output(x) return F.log_softmax(x)def Mnist(model_path, **kwargs): # 生成网络 model = Net() # 加载模型 if torch.cuda.is_available(): device = torch.device('cuda') model.load_state_dict(torch.load(model_path, map_location="cuda:0")) else: device = torch.device('cpu') model.load_state_dict(torch.load(model_path, map_location=device)) # CPU或者GPU映射 model.to(device) # 声明为推理模式 model.eval() return model
  • 训练并保存模型 from __future__ import absolute_import, division, print_function, unicode_literalsimport tensorflow as tfmnist = tf.keras.datasets.mnist(x_train, y_train), (x_test, y_test) = mnist.load_data()x_train, x_test = x_train / 255.0, x_test / 255.0model = tf.keras.models.Sequential([ tf.keras.layers.Flatten(input_shape=(28, 28)), tf.keras.layers.Dense(128, activation='relu'), tf.keras.layers.Dense(256, activation='relu'), tf.keras.layers.Dropout(0.2), # 对输出层命名output,在模型推理时通过该命名取结果 tf.keras.layers.Dense(10, activation='softmax', name="output")])model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])model.fit(x_train, y_train, epochs=10)tf.keras.models.save_model(model, "./mnist")
  • 推理代码 在模型代码推理文件customize_service.py中,需要添加一个子类,该子类继承对应模型类型的父类,各模型类型的父类名称和导入语句如请参考表1。 import loggingimport threadingimport numpy as npimport tensorflow as tffrom PIL import Imagefrom model_service.tfserving_model_service import TfServingBaseServicelogger = logging.getLogger()logger.setLevel(logging.INFO)class MnistService(TfServingBaseService): def __init__(self, model_name, model_path): self.model_name = model_name self.model_path = model_path self.model = None self.predict = None # label文件可以在这里加载,在后处理函数里使用 # label.txt放在obs和模型包的目录 # with open(os.path.join(self.model_path, 'label.txt')) as f: # self.label = json.load(f) # 非阻塞方式加载saved_model模型,防止阻塞超时 thread = threading.Thread(target=self.load_model) thread.start() def load_model(self): # load saved_model 格式的模型 self.model = tf.saved_model.load(self.model_path) signature_defs = self.model.signatures.keys() signature = [] # only one signature allowed for signature_def in signature_defs: signature.append(signature_def) if len(signature) == 1: model_signature = signature[0] else: logging.warning("signatures more than one, use serving_default signature from %s", signature) model_signature = tf.saved_model.DEFAULT_SERVING_SIGNATURE_DEF_KEY self.predict = self.model.signatures[model_signature] def _preprocess(self, data): images = [] for k, v in data.items(): for file_name, file_content in v.items(): image1 = Image.open(file_content) image1 = np.array(image1, dtype=np.float32) image1.resize((28, 28, 1)) images.append(image1) images = tf.convert_to_tensor(images, dtype=tf.dtypes.float32) preprocessed_data = images return preprocessed_data def _inference(self, data): return self.predict(data) def _postprocess(self, data): return { "result": int(data["output"].numpy()[0].argmax()) }
  • 训练模型 from __future__ import print_functionimport argparseimport torchimport torch.nn as nnimport torch.nn.functional as Fimport torch.optim as optimfrom torchvision import datasets, transforms# 定义网络结构class Net(nn.Module): def __init__(self): super(Net, self).__init__() # 输入第二维需要为784 self.hidden1 = nn.Linear(784, 5120, bias=False) self.output = nn.Linear(5120, 10, bias=False) def forward(self, x): x = x.view(x.size()[0], -1) x = F.relu((self.hidden1(x))) x = F.dropout(x, 0.2) x = self.output(x) return F.log_softmax(x)def train(model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) loss = F.cross_entropy(output, target) loss.backward() optimizer.step() if batch_idx % 10 == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item()))def test( model, device, test_loader): model.eval() test_loss = 0 correct = 0 with torch.no_grad(): for data, target in test_loader: data, target = data.to(device), target.to(device) output = model(data) test_loss += F.nll_loss(output, target, reduction='sum').item() # sum up batch loss pred = output.argmax(dim=1, keepdim=True) # get the index of the max log-probability correct += pred.eq(target.view_as(pred)).sum().item() test_loss /= len(test_loader.dataset) print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( test_loss, correct, len(test_loader.dataset), 100. * correct / len(test_loader.dataset)))device = torch.device("cpu")batch_size=64kwargs={}train_loader = torch.utils.data.DataLoader( datasets.MNIST('.', train=True, download=True, transform=transforms.Compose([ transforms.ToTensor() ])), batch_size=batch_size, shuffle=True, **kwargs)test_loader = torch.utils.data.DataLoader( datasets.MNIST('.', train=False, transform=transforms.Compose([ transforms.ToTensor() ])), batch_size=1000, shuffle=True, **kwargs)model = Net().to(device)optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.5)optimizer = optim.Adam(model.parameters())for epoch in range(1, 2 + 1): train(model, device, train_loader, optimizer, epoch) test(model, device, test_loader)
  • 操作步骤 查看项目下构建任务列表。 接口信息 URI:GET /v3/{project_id}/jobs API文档详情请参见:查看项目下用户的构建任务列表 API Explorer 在线调试请参见: 查看项目下用户的构建任务列表 请求示例 GET https://cloudbuild-ext.cn-north-1.myhuaweicloud.com/v3/8391ec48637849f384dd3db5c8d61.../jobs?page_index=0&page_size=2 响应示例 { "total": 35, "jobs": [{ "id": "d62d64d7782545c696ffaacc9ac9c69a", "job_name": "cloudbuild-制作镜像并推送到SWR仓库", "job_creator": "b7066bfb50194e36b472a61f088bbf72", "user_name": "L0_codeci", "last_build_time": 1598438571000, "health_score": 100, "source_code": "codeci", "last_build_status": "blue", "is_finished": true, "disabled": false, "favorite": true, "is_modify": true, "is_delete": true, "is_execute": true, "is_copy": true, "is_forbidden": true, "is_view": true }, { "id": "4485de11a8e74ffdb9c9f85bafb85f83", "job_name": "cloudbuild-使用SWR公共镜像", "job_creator": "b7066bfb50194e36b472a61f088bbf72", "user_name": "L0_codeci", "last_build_time": 1598438567000, "health_score": 100, "source_code": "codeci", "last_build_status": "blue", "is_finished": true, "disabled": false, "favorite": true, "is_modify": true, "is_delete": true, "is_execute": true, "is_copy": true, "is_forbidden": true, "is_view": true }]}
  • AK/SK认证 AK/SK签名认证方式仅支持消息体大小12M以内,12M以上的请求请使用Token认证。 AK/SK认证就是使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而通过身份认证。 AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。 SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。 使用AK/SK认证时,您可以基于签名算法使用AK/SK对请求进行签名,也可以使用专门的签名SDK对请求进行签名。详细的签名方法和SDK使用方法请参见API签名指南。
  • 操作步骤 执行构建任务。 接口信息 URI:POST /v3/jobs/build API文档详情请参见:执行构建任务 API Explorer在线调试请参见: 执行构建任务 请求示例 POST https://cloudbuild-ext.cn-north-1.myhuaweicloud.com/v3/jobs/build 请求体示例 { "job_id": "3341eaf0de6844669f07baa1ddfc9..."} 响应示例 { "octopus_job_name": "j_WfRE6eOY", "actual_build_number": "55", "daily_build_number": "20200825.1"} 查看任务是否为运行状态。 接口信息 URI:GET /v3/jobs/{job_id}/status API文档详情请参见:查看任务运行状态 API Explorer在线调试请参见: 查看任务运行状态 请求示例 GET https://cloudbuild-ext.cn-north-1.myhuaweicloud.com/v3/jobs/3341eaf0de6844669f07bdfc9.../status 响应示例 { "result": false}
  • Token认证 Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存起来,避免频繁调用。 Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。Token认证就是在调用API的时候将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 后,再调用其他接口时,您需要在请求消息头中添加“X-Auth-Token”,其值即为Token。例如Token值为“ABCDEFJ....”,则调用接口时将“X-Auth-Token: ABCDEFJ....”加到请求消息头即可,如下所示。 GET https://iam.cn-north-1.myhuaweicloud.com/v3/auth/projectsContent-Type: application/jsonX-Auth-Token: ABCDEFJ....
  • 终端节点 终端节点即调用API的请求地址,不同服务不同区域的终端节点不同,编译构建的终端节点如表1所示,请您根据业务需要选择对应区域的终端节点。 表1 CodeArts编译构建的终端节点 区域名称 区域 终端节点(Endpoint) CN North-Beijing1 cn-north-1 cloudbuild-ext.cn-north-1.myhuaweicloud.com CN North-Beijing4 cn-north-4 cloudbuild-ext.cn-north-4.myhuaweicloud.com CN South-Guangzhou cn-south-1 cloudbuild-ext.cn-south-1.myhuaweicloud.com CN East-Shanghai2 cn-east-2 cloudbuild-ext.cn-east-2.myhuaweicloud.com CN Northeast-Dalian cn-northeast-1 cloudbuild-ext.cn-northeast-1.myhuaweicloud.com 父主题: 使用前必读
  • 概述 编译构建服务(CodeArts Build)为开发者提供配置简单的混合语言构建平台,实现编译构建云端化,支撑企业实现持续交付,缩短交付周期,提升交付效率。支持编译构建任务一键创建、配置和执行,实现获取代码、构建、打包等活动自动化,实时监控构建状态,让您更加快速、高效地进行云端编译构建。 您可以使用本文档提供的API对编译构建任务进行相关操作,如执行、查询任务等,支持的全部操作请参见API概览。 在调用API之前,请确保已经充分了解编译构建相关概念,详细信息请参见产品介绍。 父主题: 使用前必读
  • 状态码 状态码如表1所示。 表1 状态码 状态码 编码 错误码说明 100 Continue 继续请求。 这个临时响应用来通知客户端,它的部分请求已经被服务器接收,且仍未被拒绝。 101 Switching Protocols 切换协议。只能切换到更高级的协议。 例如,切换到HTTP的新版本协议。 201 Created 创建类的请求完全成功。 202 Accepted 已经接受请求,但未处理完成。 203 Non-Authoritative Information 非授权信息,请求成功。 204 NoContent 请求完全成功,同时HTTP响应不包含响应体。 在响应OPTIONS方法的HTTP请求时返回此状态码。 205 Reset Content 重置内容,服务器处理成功。 206 Partial Content 服务器成功处理了部分GET请求。 300 Multiple Choices 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择。 301 Moved Permanently 永久移动,请求的资源已被永久的移动到新的URI,返回信息会包括新的URI。 302 Found 资源被临时移动。 303 See Other 查看其它地址。 使用GET和POST请求查看。 304 Not Modified 所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。 305 Use Proxy 所请求的资源必须通过代理访问。 306 Unused 已经被废弃的HTTP状态码。 400 BadRequest 非法请求。 建议直接修改该请求,不要重试该请求。 401 Unauthorized 在客户端提供认证信息后,返回该状态码,表明服务端指出客户端所提供的认证信息不正确或非法。 402 Payment Required 保留请求。 403 Forbidden 请求被拒绝访问。 返回该状态码,表明请求能够到达服务端,且服务端能够理解用户请求,但是拒绝做更多的事情,因为该请求被设置为拒绝访问,建议直接修改该请求,不要重试该请求。 404 NotFound 所请求的资源不存在。 建议直接修改该请求,不要重试该请求。 405 MethodNotAllowed 请求中带有该资源不支持的方法。 建议直接修改该请求,不要重试该请求。 406 Not Acceptable 服务器无法根据客户端请求的内容特性完成请求。 407 Proxy Authentication Required 请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权。 408 Request Time-out 服务器等候请求时发生超时。 客户端可以随时再次提交该请求而无需进行任何更改。 409 Conflict 服务器在完成请求时发生冲突。 返回该状态码,表明客户端尝试创建的资源已经存在,或者由于冲突请求的更新操作不能被完成。 410 Gone 客户端请求的资源已经不存在。 返回该状态码,表明请求的资源已被永久删除。 411 Length Required 服务器无法处理客户端发送的不带Content-Length的请求信息。 412 Precondition Failed 未满足前提条件,服务器未满足请求者在请求中设置的其中一个前提条件。 413 Request Entity Too Large 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息。 414 Request-URI Too Large 请求的URI过长(URI通常为网址),服务器无法处理。 415 Unsupported Media Type 服务器无法处理请求附带的媒体格式。 416 Requested range not satisfiable 客户端请求的范围无效。 417 Expectation Failed 服务器无法满足Expect的请求头信息。 422 UnprocessableEntity 请求格式正确,但是由于含有语义错误,无法响应。 429 TooManyRequests 表明请求超出了客户端访问频率的限制或者服务端接收到多于它能处理的请求。建议客户端读取相应的Retry-After首部,然后等待该首部指出的时间后再重试。 500 InternalServerError 表明服务端能被请求访问到,但是不能理解用户的请求。 501 Not Implemented 服务器不支持请求的功能,无法完成请求。 502 Bad Gateway 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求。 503 ServiceUnavailable 被请求的服务无效。 建议直接修改该请求,不要重试该请求。 504 ServerTimeout 请求在给定的时间内无法完成。客户端仅在为请求指定超时(Timeout)参数时会得到该响应。 505 HTTP Version not supported 服务器不支持请求的HTTP协议的版本,无法完成处理。 父主题: 附录
  • 错误码说明 当您调用API时,如果遇到“APIGW”开头的错误码,请参见API网关错误码进行处理。 更多服务错误码请参见API错误中心。 状态码 错误码 错误信息 描述 处理措施 500 CB.00060100 网络繁忙,请稍后重试。 网络繁忙,请稍后重试。 稍后重试。 500 CB.00060101 服务内部异常。 服务内部异常。 服务内部异常。 400 CB.00060200 参数不合法。 参数不合法。 请检查并确认参数值是否合法。 400 CB.00060201 任务ID参数不合法。 任务ID参数不合法。 输入合法任务ID。 400 CB.00060202 业务ID参数不合法。 业务ID参数不合法。 业务ID仅支持小写字母、数字组合。请确认参数是否合法。 400 CB.00060203 文件名称不合法。 文件名称不合法。 文件名称不允许为空,且长度不大于500。 500 CB.00060211 请求过于频繁,请稍后再试。 请求过于频繁,请稍后再试。 稍后重试。 400 CB.00060212 上传文件不能为空。 上传文件不能为空。 确认是否有选择文件上传。 400 CB.00060213 上传文件个数不能超过x个。 上传文件个数不能超过x个。 减少单次上传的文件个数。 404 CB.00060214 找不到您访问的url。 访问的url不合法。 确认请求的URL路径是否正确。
  • 优势对比 单机实例:支持创建只读实例、错误日志、慢日志查询管理。相较于主备实例,单机实例少了一个数据库节点,可大幅节省用户成本,售价低至主备实例的一半。由于单机实例只有一个数据库节点,当该数据库节点出现故障时,恢复时间较长,因此,如果是对数据库可用性要求较高的敏感性业务,不建议使用单机实例。 主备实例:主备实例的备数据库节点仅用于故障转移和恢复场景,不对外提供服务。由于使用备数据库节点会带来额外性能开销,从性能角度来看,单机实例的性能与主备实例相同,甚至单机实例的性能可能会高于主备实例。 集群版实例:采用微软AlwaysOn高可用架构,支持1主1备5只读集群模式,拥有更高可用性、可靠性、可拓展能力。
  • 读写分离 RDS for SQL Server2019企业版和2017企业版支持只读实例。 RDS for MySQL数据库的主实例和只读实例都具有独立的连接地址,每个云数据库RDS for MySQL单机实例、主备实例最多支持创建5个只读实例,创建方法请参见创建只读实例。 为了实现读取能力的弹性扩展,分担数据库压力,您可以在某个区域中创建一个或多个只读实例,利用只读实例满足大量的数据库读取需求,以此增加应用的吞吐量。 父主题: 典型应用
  • 产品类型简介 目前,云数据库RDS的实例分为如下几个类型: 单机实例 主备实例 集群版实例 不同系列支持的引擎类型和实例规格不同,请以实际界面为准。 表1 实例类型简介 实例类型 简介 使用说明 适用场景 单机实例 采用单个数据库节点部署架构。与主流的主备实例相比,它只包含一个节点,但具有高性价比。 单机版出现故障后,无法保障及时恢复。 个人学习。 微型网站。 中小企业的开发测试环境。 主备实例 采用一主一备的经典高可用架构,支持跨AZ高可用,选择主可用区和备可用区不在同一个可用区(AZ)。主实例和备实例共用一个IP地址。 备机提高了实例的可靠性,创建主机的过程中,会同步创建备机,备机创建成功后,用户不可见。 当主节点故障后,会发生主备切换,时长大概为5-10s,期间数据库客户端会发生短暂中断。若存在复制延时,主备切换时间会长一点,数据库客户端需要支持重新连接。 大中型企业的生产数据库。 覆盖互联网、物联网、零售电商、物流、游戏等行业的应用。 集群版实例 采用微软AlwaysOn高可用架构,支持1主1备5只读集群模式,拥有更高可用性,可靠性,可拓展能力。 仅限RDS for SQL Server使用。 金融行业。 互联网行业。 酒店行业。 在线教育。 父主题: 产品系列
  • 数据库实例类型 数据库实例是云数据库RDS的最小管理单元。一个实例代表了一个独立运行的云数据库RDS。您可以在一个实例中创建和管理多个数据库,并且可以使用与独立访问数据库实例相同的工具和应用进行访问。使用管理控制台或基于HTTPS请求的API(Application programming interface)可以方便地创建或者修改数据库实例。云数据库RDS服务对运行实例数量没有限制,但每个数据库实例都有唯一的标识符。 实例可进行如下分类: 表1 实例类型 实例类型 简介 使用说明 单机实例 采用单个数据库节点部署架构。与主流的主备实例相比,它只包含一个节点,但具有高性价比。 单机版出现故障后,无法保障及时恢复。 主备实例 采用一主一备的经典高可用架构,主备实例的每个节点的规格保持一致。 RDS支持跨AZ高可用。选择主可用区和备可用区不在同一个可用区(AZ)。 备机提高了实例的可靠性,创建主机的过程中,会同步创建备机,备机创建成功后,用户不可见。 当主节点故障后,会自动发生主备切换,数据库客户端会发生短暂中断,数据库客户端需要支持重新连接。 关于主备之间的同步方式: RDS for MySQL默认是半同步。 RDS for PostgreSQL默认是异步。 RDS for SQL Server主备实例之间默认是同步:2017企业版和2019企业版是AlwaysOn同步机制,其他版本是Mirror同步机制。 RDS for SQL Server主实例和只读实例之间默认是异步。 只读实例 采用单个物理节点架构或高可用架构。 只读实例分为单机版只读实例和高可用只读实例: 单机版只读实例:推荐开启数据库代理功能,并购买冗余的单机版只读实例。当单个只读故障后,数据库代理可以将流量分担到其它只读节点。 高可用只读实例:当只读实例所在物理机故障后,备用只读实例自动顶替。购买只读实例时,注意表库名的大小写敏感要与主实例保持一致。 当只读实例与主数据库之间复制异常后,单机版和高可用版只读都需要较长时间重建和恢复(取决于数据量)。 集群版实例 采用微软AlwaysOn高可用架构,支持1主1备5只读集群模式,拥有更高可用性,可靠性,可拓展能力。 仅限RDS for SQL Server使用。 RDS for SQL Server 2019企业版和2017企业版支持只读实例。 用户可以在云数据库RDS系统中自助创建及管理各种数据库引擎的实例。 不同实例类型之间的区别和功能对比请参考产品类型简介和产品功能对比。 父主题: 实例说明
共100000条