华为云用户手册

  • 支持在线卸载云硬盘的操作系统 支持在线卸载云硬盘的操作系统包括如下两个部分: 第一部分请参见外部镜像文件的镜像格式和操作系统类型。 第二部分如表1所示。 表1 支持在线卸载云硬盘的操作系统 操作系统 版本 CentOS 7.3 64bit 7.2 64bit 6.8 64bit 6.7 64bit Debian 8.6.0 64bit 8.5.0 64bit Fedora 25 64bit 24 64bit SUSE SUSE Linux Enterprise Server 12 SP2 64bit SUSE Linux Enterprise Server 12 SP1 64bit SUSE Linux Enterprise Server 11 SP4 64bit SUSE Linux Enterprise Server 12 64bit OpenSUSE 42.2 64bit 42.1 64bit Oracle Linux Server release 7.3 64bit 7.2 64bit 6.8 64bit 6.7 64bit Ubuntu Server 16.04 64bit 14.04 64bit 14.04.4 64bit Windows(不支持在线卸载S CS I类型的云硬盘) Windows Server 2008 R2 Enterprise 64bit Windows Server 2012 R2 Standard 64bit Windows Server 2016 R2 Standard 64bit Redhat Linux Enterprise 7.3 64bit 6.8 64bit 对于其他操作系统的,请先关机然后再进行卸载磁盘操作,避免由于云硬盘设备与在线卸载不兼容而产生未知问题。
  • 约束与限制 磁盘需挂载在数据盘盘位,即挂载点为非“/dev/sda”或“/dev/vda”挂载点。 如果磁盘挂载在“/dev/sda”或“/dev/vda”挂载点上,则表示该磁盘作为边缘实例的系统盘使用,此时不允许在线卸载。 在线卸载云硬盘时,对于Windows边缘实例,请确认该边缘实例已安装UVP VMTools并且正常启用;对于Linux边缘实例,可以不安装UVP VMTools。 安装UVP VMTools操作请参考优化私有镜像。 对于Windows边缘实例,在线卸载云硬盘前,请确保没有程序正在对该云硬盘进行读写操作。否则,将造成数据丢失。 对于Windows边缘实例,不支持在线卸载SCSI类型的云硬盘。 对于Linux边缘实例,在线卸载云硬盘前,客户需要先登录边缘实例,执行umount命令,取消待卸载云硬盘与文件系统之间的关联,并确保没有程序正在对该云硬盘进行读写操作。否则,卸载云硬盘将失败。 磁盘未被锁定。 磁盘加锁时,表示被锁定,此时不能执行磁盘的卸载操作。
  • 数据查询 【规则】不要使用select *,只查询需要的字段,减少机器负载,提升查询性能。 OLAP分析场景,一张大宽表通常能有几百甚至上千列,选择其中少数的几列做维度列、指标列计算。在这种场景下,ClickHouse的数据也是按照列存储。如果使用select *,会加重系统的压力。 【规则】通过limit限制查询返回的数据量,节省计算资源、减少网络开销。 如果返回的数据量过大,客户端有可能出现内存溢出等服务异常。在前端使用ClickHouse的场景下,如果要查询的数据量比较大,建议每次可适当的进行分页查询返回数据,以减少查询数据量对网络带宽和计算资源的占用。 【规则】关联查询必须大表join小表。 对于ClickHouse来说,原则上需要把多表join模型提前加工为宽表模型,多个表以及维度表变化比较频繁情况下,不适合进行宽表加工处理,必须使用Join模型以实时查询到最新数据。两个表做join操作,建议大表join小表,必须使用关联条件。小表的数据量控制在百万~千万行级别,且需要在join前把小表数据通过条件进行有效过滤。 【建议】使用GLOBAL JOIN/IN替换普通的JOIN。 ClickHouse基于分布式表查询会转换成所有分片的本地表操作,再汇总结果。实际使用中,join和global join的执行逻辑差别很大,建议使用global join做分布式表查询。 【规则】合理使用数据表的分区字段和索引字段。 MergeTree引擎,数据是以分区目录形式进行组织存储的,在进行数据查询时,使用分区可以有效跳过无用的数据文件,减少数据的读取。 MergeTree引擎会根据索引字段进行数据排序,并且根据index_granularity的配置生成稀疏索引。根据索引字段查询,能快速过滤数据,减少数据的读取,大大提升查询性能。 【建议】明确数据查询的范围。 增加条件过滤和查询数据周期过滤,缩小数据查询范围。例如查询指定分区,通过指定分区字段会减少底层数据库扫描的文件数量,提升查询性能。例如:700个分区的千列大表,需要查询一个分区中有7000万数据,其他699个分区中无数据,虽然只有一个分区有数据,其他分区无数据,但是查询指定分区为百毫秒级性能,没有指定分区查询性能为1~2秒左右,性能相差20倍。 【建议】慎用final查询。 在查询语句的最后跟上final,通常是对于ReplacingMergeTree引擎,数据不能完全去重情况下,少数开发人员习惯使用final关键字进行实时合并去重操作(merge-on-read),保证查询数据无重复数据。可以通过argMax函数或其他方式规避此问题。 【建议】使用物化视图加速查询。 对于固定查询方式的场景,建议使用物化视图,提前做好数据聚合,相对于查询明细表,性能有数量级的提升。 【建议】物化视图创建时不会进行语法校验,只有发生实际数据插入与查询时才会出错。物化视图上线前,需做好充分验证。
  • 数据写入 【规则】外部模块保证数据导入的幂等性。 ClickHouse不支持数据写入的事务保证。通过外部导入数据模块控制数据的幂等性,比如某个批次的数据导入异常,则drop对应分区数据或清理掉导入的数据后,重新导入该分区或批次数据。 【规则】大批量少频次的写入数据。 ClickHouse每次插入数据时,都会生成一到多个part文件,如果data part过多,merge压力会变大,甚至出现各种异常情况影响数据插入。建议每个批次5k到100k行,根据写入字段数量调整写入行数,降低写入节点内存和CPU的压力,每秒不超过1次插入。 【建议】一次只插入一个分区内的数据。 如果数据属于不同的分区,则每次插入不同分区的数据会独立生成part文件,导致part总数量膨胀,建议一批插入的数据属于同一个分区。 【建议】慎用分布式表批量插入。 写分布式表时,数据会分发到集群的所有本地表,每个本地表插入的数据量是总插入量的1/N,batch size可能比较小,会导致data part过多,merge压力变大,甚至出现异常影响数据插入。 数据的一致性问题:数据先在分布式表写入节点的主机落盘,然后数据被异步地发送到本地表所在主机进行存储,中间没有一致性的校验,如果分布式表写入数据的主机出现异常,会存在数据丢失风险。 对于数据写分布式表和数据写本地表相比,分布式表数据写入性能会变慢,单批次分布式表写入节点的磁盘和网络IO会成为性能的瓶颈点。 分布式表转发给各个shard成功与否,插入数据的客户端是无法感知,转发失败的数据会不断重试转发消耗CPU。 只有在数据去重的场景下,可以使用分布式表插入,通过sharding key将要去重的数据转发到同一个shard,方便后续去重查询。 【建议】慎用delete、update操作。 标准SQL的更新、删除操作是同步的,即客户端等服务端返回执行结果在执行。而Clickhouse的update、delete是通过异步方式实现的,当执行update语句时,服务端立即响应,实际上此时数据还没变,而是排队等待,可能会出现操作覆盖的情况,也无法保证操作的原子性。如果业务场景有update、delete等操作,建议使用ReplacingMergeTree、CollapsingMergeTree、VersionedCollapsingMergeTree引擎。 【建议】谨慎执行optimize操作。 Optimize一般会对表做重写操作,建议在业务压力小时候进行操作,否则对IO/MEM/CPU资源有较大消耗,导致业务查询变慢或不可用。 【建议】降低对表的修改频次,多个字段修改时,建议使用单条ALTER TABLE命令修改。 默认场景下ClickHouse执行alter语句是异步执行,对同一张表频繁执行alter操作可能导致业务失败。ClickHouse每次修改列时都会进行元数据的操作,多次操作会增加集群的负担,尤其是zookeeper的负担,影响集群的稳定。可以使用一条语句进行多列的修改。
  • 建表规范 【规则】不要在system库中创建业务表。system数据库是ClickHouse默认的系统数据库,默认数据库中的系统表记录的是系统的配置、元数据等信息数据。业务在使用ClickHouse的时候,需要指定自己业务的数据库进行连接和使用,业务相关的表创建在自己业务库中,不要将业务表创建在系统数据库中,避免对系统数据库造成不必要的影响。 【规则】数据库和表的命名尽量不要使用SQL保留字,请注意大小写敏感。如果必须使用一些保留关键字,请使用双引号或者反引号进行转义。 【规则】不允许使用字符类型存放时间或日期类数据,尤其是日期字段进行运算或比较的时候。 【规则】不允许使用字符类型存放数值类型的数据,尤其是数值字段进行运算或者比较的时候。 【建议】不建议表使用Nullable列,可以考虑使用字符串“NA”。 Nullable类型的列在做查询条件判断时,会进一步做判空等处理,防止造成额外的计算开销。根据现网的历史经验,Nullable类型的字符串查询性能比String慢20%至30%左右,从性能方面考虑,非必要不使用Nullable类型。
  • 基础版和专业版区别 当前华为HiLens提供基础版和专业版两种控制台,两者区别如表1所示。 表1 基础版和专业版区别 区别项 基础版控制台 专业版控制台 设备管理 支持注册的设备:HiLens Kit、Atlas 500。 支持注册的设备:SDC-M系列、SDC-X系列、Android、Windows、RK系列(轻量)、Atlas 500、Bozz EC02、Atlas 800、IVS1800、IVS3800、通用ARM设备、通用x86设备。 轻量级集群 不支持 支持创建集群并支持对集群创建负载均衡。 产品管理 支持海思35xx系列芯片摄像头产品的厂商管理产品、分发技能至产品设备。 不支持。 技能市场 支持HiLens技能交易。 支持HiLens AI应用交易。 工具/插件 支持华为RPA-WeAutomate工具在线体验和购买使用。 支持下载设备对应的工具和插件,如ModelBox SDK等,并将其添加到设备中。 AI应用框架 支持基于HiLens Framework(已停止演进)开发的AI技能并作为相应技能的管理平台。 支持基于ModelBox框架开发的AI应用并作为相应的管理平台。 技能开发 支持基础版控制台使用模板新建技能。 支持在开发环境HiLens Studio开发技能。 支持 ModelArts Pro 开发可训练技能。 提供ModelBox SDK进行AI应用开发。 支持使用镜像或RPM格式软件包来新建技能,并预置参数。 技能部署 支持将订购的技能部署到设备上运行。 支持将开发的技能部署到设备上运行。 支持将订购的技能或自定义开发的技能部署到设备上运行。 支持部署技能到集群上。 支持将容器镜像或软件包格式技能部署。 支持ModelBox技能通过添加作业来配置技能的输入、输出及运行参数等。 模型管理 支持导入和管理模型。 支持将部分TensorFlow和Caffe模型转换成“.om”模型。 不支持。 日志管理 支持日志存储到OBS服务,并在数据管理页面支持下载。 支持将日志存储至 云日志 服务(Log Tank Service,简称LTS)。
  • 基础版HiLens计费项 基础版华为HiLens根据用户选择使用的资源不同进行收费。基础版HiLens控制台计费项请参见表1。 表1 基础版HiLens控制台计费项说明 计费项 说明 计费模式 HiLens Kit 用户使用华为HiLens前,需要购买HiLens Kit设备。该设备是一种多模态AI开发套件,支持通过端云协同实现图像、视频、语音等多种数据分析与推理计算,可广泛用于智能监控、智慧家庭、AI教育、智慧工业、智慧门店等应用场景。详细介绍请参见HiLens Kit简介。 当前HiLens Kit仅支持一次性购买。 一次性购买 HiLens端边云协同平台服务 当您注册的设备超过1台时,需购买HiLens端边云协同平台服务,在设备管理页面对指定设备进行权限激活后,该设备方能安装您自行开发的“基础技能”类型的技能,包括在控制台新建的技能、在HiLens Studio开发的技能以及使用可训练技能模板开发的技能。 当前仅支持包年/包月套餐包计费模式,详情请见HiLens端云边协同平台服务计费模式。 技能 在基础版华为HiLens的技能市场购买商用技能时,会收取费用。 当前仅支持包周期计费模式。计费模式请见商用技能计费模式。 HiLens端云边协同平台服务计费模式 HiLens端边云协同平台服务支持包年/包月套餐包计费模式。 适用于注册多个设备场景。当您注册的设备超过1台时,需购买HiLens端边云协同平台服务,在设备管理页面对指定设备进行权限激活后,该设备方能安装您自行开发的“基础技能”类型的技能。 如果您安装的技能来自技能市场,其安装权限不受限制,无需另外购买HiLens端边云协同平台服务,也无需激活权限。 商用技能计费模式 在华为HiLens技能市场购买商用技能时,会收取费用,仅支持包周期(包年包月)计费模式。 商用技能一般为X元/技能/路/年,不同的技能价格不一样,详细价格请以实际购买时的费用为准。
  • 专业版HiLens计费项 专业版HiLens控制台计费项请参见表2。 表2 专业版HiLens控制台计费项说明 计费项 说明 计费模式 HiLens端云协同AI运行服务 专业版HiLens提供HiLens端云协同AI运行服务,注册设备后,需要购买HiLens端云协同AI运行服务,并在设备管理页面对设备进行权限激活,该设备方能部署技能。 当前仅支持包年/包月套餐包计费模式,详情请见HiLens端云边协同AI运行服务计费模式。 技能 在专业版华为HiLens的技能市场购买商用技能时,会收取费用。 当前仅支持包周期计费模式。计费模式请见商用技能计费模式。 HiLens端云边协同AI运行服务计费模式 HiLens端边云协同平台服务支持包年/包月套餐包计费模式。 专业版HiLens提供HiLens端云协同AI运行服务。注册设备后,需购买HiLens端云协同AI运行服务,并在设备管理页面对设备进行权限激活,该设备方能部署技能。 商用技能计费模式 在华为HiLens技能市场购买商用技能时,会收取费用,仅支持包周期(包年包月)计费模式。 商用技能一般为X元/技能/路/年,不同的技能价格不一样,详细价格请以实际购买时的费用为准。
  • 技能(Skill) 技能(Skill)是运行在端侧摄像头的人工智能应用,一般由模型和逻辑代码组成。其中,逻辑代码是技能的框架,负责控制技能的运行,包括数据读入、模型导入、模型推理、结果输出等;模型是人工智能算法经由大数据训练而成,负责技能运行中关键场景的推理。 按应用场景划分,技能可应用于:智能园区、智慧家庭、智能车载、智能商超和其他等场景。 按不同的设备划分,技能分为2种,一种是适用于Ascend芯片的技能,另一种是适用于海思35XX系列芯片的技能。
  • 开发者场景(如AI教育) HiLens基础版 开发者通过ModelArts训练模型,通过HiLens进行模型转换和AI应用开发后,将其部署到昇腾310设备上,包括Atlas 200 HiLens Kit和Atlas 500。 方案描述:开发者可基于华为ModelArts AI开发平台 或线下服务器训练算法模型,再将模型导入HiLens平台进行技能开发,技能开发包括模型转换、创建技能、业务逻辑代码编写:模型转换包括TensorFlow模型转“.om”模型和Caffe模型转“.om”模型;基于HiLens提供的HiLens Framework框架编写逻辑代码,HiLens Framework通过封装底层接口、实现常用的管理功能,让开发者可以方便的开发AI应用,发展AI生态。详细指导和API介绍可参见华为HiLens开发指南。 方案价值: 一站式全流程开发:基于华为ModelArts AI开发平台训练算法,通过HiLens平台做技能开发并部署到昇腾310设备推理。 算力性价比高: HiLens Kit/Atlas 500内置昇腾310,并有丰富接口。 配套AI开发框架HiLens Framework:提供技能推理平台、视频管理、外部接口管理等能力,让开发者只聚焦算法本身调优。 在线更新技能:训练后可远程下载发布,实时更新技能。 自动数据采集:可实现自动数据采集并上传到云端进行训练。 HiLens专业版 HiLens专业版支持部署普通镜像格式的AI应用,也支持部署基于ModelBox开发的容器镜像和rpm格式的AI应用软件包。 方案描述: 开发者通过ModelArts或者线下进行数据处理和训练模型,得到模型; 根据设备的芯片类型自行选用模型转换工具进行模型转换; 基于ModelBox框架和规范进行AI应用开发,得到AI应用; 通过HiLens平台将AI应用部署到支持的设备上运行并进行在线管理。 方案价值: 屏蔽软硬件差异:适配多种异构硬件、操作系统、AI推理框架 端边云部署能力:AI应用一次开发,端边云部署多处运行 功能单元灵活编排能力:提供功能单元库,支持可视化编排与API开发形式,开发集成快速高效 资源智能精细化调度能力:保证AI应用极致推理性能 模型与数据安全保障能力:保证算法模型与业务数据安全,保障商用安全 性能和运维监控能力:开发、调优和运行情况一目了然
  • 轻量级边缘AI应用场景(如工地) 工地环境恶劣,网络环境差,经常有工人不戴安全帽作业、物料乱放等情况,希望能在恶劣环境中不间断快速智能识别危险情况,实现快速转型,同时不希望增加更换设备的物料成本和人力成本。 方案描述:用户在云侧HiLens平台技能市场选择合适的技能部署到智能小站(Atlas 500)上,将工地闸机入口和工地内多路摄像头视频流接入智能小站集中分析处理,智能小站内置芯片Hi3559A和昇腾310,能同时分析8~16路视频,不同的是智能小站更适合室外场景,对环境耐性更优。分析处理的结果输出到智慧工地业务管理平台,考虑到网络环境不稳定情况,在智能小站中增加了本地图片缓存的功能,同时用户可以通过HiLens平台随时进行技能更新、卸载和设备管理等操作,实现传统工地快速转型而不用更换设备。 方案价值: 端云协同:云端统一管理,端侧可以重复利用,一次联网部署技能,不间断离线推理,快速响应、延迟小、对网络环境依赖低。 高性能:一个边缘设备可覆盖一个区域。 节约成本:减少数据上云,降低更换设备成本。 极简构架:平台进行AI应用封装,简化部署,加速应用对接。 技能按需部署:按场景灵活部署,闸机、工地采用不同技能,提升整体识别率,技能可实时部署、更新、卸载等管理。 支持第三方自研算法:支持算法开发者自行开发、迭代更新算法,并根据场景在线调整算法参数。
  • 端云协同AI应用场景(如车载) 场景关键诉求:因司机分神疲劳驾驶造成的一定的安全风险及交通事故率,希望在司机行驶过程中,对司机进行分神和疲劳驾驶智能检测,并进行实时告警。但如果将视频全量上传云侧,需要带宽成本高,且会占用大量存储资源,网络不稳定时也将导致无法检测。另外,希望能灵活增加和管理AI能力。 方案描述:出行设备在出厂时预装HiLens端侧管理模块HiLens Agent,或者在HiLens已支持的设备上,在设备厂商的后台系统通过OTA将HiLens Agent下发。设备上具备HiLens Agent后,车联网业务系统通过网络与出行设备通讯,通过集成HiLens管理面北向接口,便能在业务系统将设备注册到华为HiLens平台,在线安装或更新所需的AI算法和配置算法参数,并进行设备和AI算法的管理和状态监控。在出行方案中的疲劳检测算法的基础检测在设备侧完成,初步判断为疲劳检测后,将就近几秒的视频流上传到云侧,调用云上的疲劳检测算法,再次进行二次精确识别,判断为疲劳检测后则输出结果到车联网业务系统进行业务处理。 方案价值: 端云协同:一次联网部署技能,端侧实时检测,云端二次精准识别,不间断离线推理,快速响应、延迟小、对网络环境依赖低;平台提供统一管理接口。 节约上云成本:减少数据上云宽带和存储成本; 可利旧,降低硬件成本:对于存量设备,可通过设备厂商OTA下发固件,便能将设备纳管到华为云平台和部署AI算法,节省更换设备成本。 算法按需灵活部署:支持按业务需要灵活增加、减少和更新算法。 算法精准优化:专门针对车载场景及设备,对算法进行针对性裁剪和优化。 支持第三方算法部署:针对已适配的设备类型,支持第三方将基于ModelBox开发AI应用部署到出行设备中。
  • 云侧平台(基础版与专业版共有功能) AI应用开发 提供统一技能开发框架,封装基础组件,简化开发流程,提供统一的API接口,支持多种深度学习开发框架。 提供模型训练、开发、调试、部署、管理一站式服务,无缝对接用户设备。 在云侧模型管理中导入ModelArts训练出的模型,也可导入用户线下开发的自定义模型。 技能开发完成后可发布到AI Gallery或直接部署到端侧设备。 对接AI开发框架ModelBox,提供 开发者工具 与插件,高效开发AI应用。 技能市场 用户可自行挑选并订购所需技能,一键安装到端侧即可运行各种AI技能。 开发者可自定义开发技能并发布到AI Gallery分享给他人部署。 设备管理 设备注册后可在设备管理处进行管理,包括查看、注销设备,以及一键升级设备的固件版本等。 支持对设备下所安装的技能进行管理,包括查看、部署(安装)、卸载、启动和停止技能。 根据不同业务使用不同设备类型的资源限制,提供不同的端侧管理固件(HiLens Agent)版本,更符合业务场景需求。 专业版支持创建轻量级集群,提供负载均衡能力,实现资源利用及调度最优化。 运维管理 支持云上远程查询及下载端侧设备及技能日志,云上大容量存储,高上行接入带宽,支持数据追加写,数据全生命周期管理,便于事后回溯。 专业版支持消息队列机制,在设备离线时可进行操作并进入事件队列,在设备上线时可自动执行事件。 专业版在大型设备端侧管理固件中提供本地管理接口,支持用户在线部署技能后,在本地通过接口进行基础设备和技能管理。
  • 端侧设备 端侧目前支持如下设备: 表1 华为HiLens支持设备 序号 设备类型(中文) 设备类型(英文) CPU架构 设备分类(运行服务) 支持控制台 1 HiLens Kit HiLens Kit aarch64 小型设备 基础版控制台 2 Atlas 500 Atlas 500 aarch64 小型设备 基础版控制台、专业版控制台 3 Bozz EC02 Bozz EC02 aarch64 小型设备 专业版控制台 4 Atlas 800 Atlas 800 aarch64 大型设备 专业版控制台 5 IVS3800 IVS3800 aarch64/x86_64 大型设备 专业版控制台 6 Windows Windows x86_64 轻量设备 专业版控制台 7 SDC-M系列 SDC-M Series / 轻量设备 专业版控制台 8 SDC-X系列 SDC-X Series / 轻量设备 专业版控制台 9 通用ARM设备 General ARM Device aarch64/aarch32 大型设备 专业版控制台 10 通用x86设备 General x86 Device x86_64 大型设备 专业版控制台 11 RK系列(轻量) RK Series(Lite) aarch64 轻量设备 专业版控制台
  • 基础版HiLens 基础版华为HiLens是一个端云协同的多模态AI开发应用平台,云侧提供开发框架HiLens Framework、开发环境HiLens Studio、管理平台和多模态AI技能,供用户在云侧选购或开发技能,用户可以安装技能到端侧设备HiLens Kit和Atlas 500,使设备具备AI能力。 图1 基础版HiLens架构 基础版HiLens管理控制台 提供模型管理、技能开发等功能,供用户在云侧管理模型和技能,一键安装技能到端侧设备。 开发框架HiLens Framework 封装了视频分析算法的基础组件,如图像处理、推理、日志等,开发者只需少量代码即可开发自己的Skill。 开发环境HiLens Studio 提供给开发者的一种多语言类 集成开发环境 ,包括代码编辑器、编译器、调试器等,开发者可以在HiLens Studio中编写和调试技能代码。 多模态AI技能 技能市场预置丰富的AI技能,支持部署算法到端侧设备,覆盖商超、家庭、园区等多种商用场景。
  • 专业版HiLens 专业版HiLens控制台对接高性能的开发与推理框架ModelBox,提供云上管理平台、丰富的技能市场和开发者工具与插件,支持纳管多种设备类型,帮助用户将AI能力在线部署到端侧设备,并提供统一管理接口,实现企业级AI业务快速集成与落地。 图2 专业版HiLens架构 专业版HiLens管理控制台 提供开发工具和插件、技能开发、轻量级集群等功能,支持用户部署AI技能到多种异构的端侧设备上并进行统一管理。 AI开发框架ModelBox(开源) 提供了一套统一的端边云AI应用开发和运行时框架,帮助开发者快速开发音视频、NLP等AI应用,并将AI应用部署到云、边缘、端侧设备。
  • 应用场景 API网关的后端服务有3类部署形态: 后端服务部署在虚拟私有云(以下简称VPC)中,仅支持私有地址访问。 可在API网关创建VPC通道,利用VPC通道,打通API网关与虚拟私有云的网络路由。 后端服务部署在公网环境中,即可以直接通过公网地址访问。 后端服务部署在本地数据中心,且不能通过公网地址直接访问。 如果您使用专享版API网关,可为本地数据中心搭建一条与API网关(所绑定的华为云VPC)之间的专线。 本节针对后端服务部署在本地数据中心的场景,介绍使用API网关开放API的实践步骤。
  • 连通云专线与API网关 创建VPC。如果已有VPC,可跳过此步骤。 具体操作请参考《虚拟私有云 VPC》。 专享版API网关需要绑定1个VPC,将本地数据中心与VPC之间建立云专线后,API网关即可访问本地数据中心的服务。 需要为API网关规划1个子网段。 一条云专线只能打通本地数据中心到1个VPC的网络,您在云上的资源,建议都绑定到同一VPC中,避免不同VPC都需要使用云专线访问本地数据中心带来的成本增加。 图2 创建VPC示例参考 创建专享版API网关。 具体请参考购买专享版API网关章节。 购买云专线。 购买一条连接本地数据中心到华为云API网关(所绑定的虚拟私有云)的云专线,请按以下操作顺序执行: 购买物理连接接入 即购买一条连接本地数据中心与华为云的运营商线路。建议您选择“一站式接入”,华为云负责施工工程。 如果已有数据中心到华为云的物理连接,可直接使用。 创建虚拟网关 虚拟网关用于关联专享版API网关绑定的VPC。 在选择VPC网段时,需要添加专享版API网关所使用的网段,表示允许专线可访问的VPC子网。可在专享版API网关控制台查询网段详情。 创建虚拟接口 虚拟接口将物理连接与虚拟网关(配置了VPC和网段)关联绑定,打通物理与专享版API网关所在VPC的网络。 注意远端网关与远端子网要分别配置您本地数据中心的开放API接口访问的网关和子网。例如您本地数据中心的API调用地址为http://192.168.0.25:80/{URI},则远端网关和远端子网要配置192.168.0.25所在的子网段与网关。 配置本地路由 如果本地数据中心的子网不在以下三个大子网段内,暂时不支持配置本地路由:10.0.0.0/8-24、172.16.0.0/12-24、192.168.0.0/16-24。 验证网络连通。 再创建一台按需的ECS,选择与专享版API网关相同的VPC、子网与安全组。只要本地数据中心能连通ECS,则与专享版API网关也能连通。 连通云专线与API网关后,然后使用专享版API网关开放API。
  • 操作流程 创建函数 创建自定义的前端函数,使用函数服务开发自定义认证。 创建自定义认证 创建自定义认证,类型选择“前端”,函数地址选择上一步创建的函数。 创建API 安全配置中的安全认证选择APP认证,并勾选“支持双重认证”,选择上一步创建的自定义认证。 创建凭据 使用APP认证的API,需要在API网关中创建一个凭据,生成凭据ID和密钥对(Key、Secret)。 绑定API 将创建的凭据绑定API后,才可以使用APP认证调用API。 验证 调用API,验证双重认证是否设置成功。
  • 创建ECS 进入云服务器控制台。 单击“购买弹性云服务器”。 基础配置后,单击“下一步:网络配置”。 表9 基础配置 参数 配置说明 计费模式 选择“按需计费”。 区域 选择弹性云服务器所属区域,且与VPC2同一区域。 可用区 选择弹性云服务器所属可用区。 CPU架构 默认“x86计算”。 规格 根据业务规划,选择规格。 镜像 根据业务规划,选择镜像。 虚拟私有云 选择已创建的虚拟私有云“VPC2”。 主网卡 选择已创建的虚拟私有云的子网。 安全组 选择专享版实例中已创建的安全组。 弹性公网IP 选择“暂不购买”。 云服务器名称 填写弹性云服务器名称。 登录凭证 登录云服务器凭证,此处默认“密码”。 用户名 默认“root”。 密码 填写登录云服务器的密码。 确认密码 保证密码正确性。 企业项目 此处选择“default”。 同意协议声明后,单击“立即购买”。
  • 创建实例 进入API网关控制台。 在左侧导航栏选择“实例管理”。 单击“购买实例”。 表3 实例信息 参数 配置说明 计费模式 选择实例的计费模式,此处选择“按需计费”。 区域 选择实例所在的区域,且与VPC1同区域。 可用区 选择实例所在的可用区,此处选择“可用区1”。 实例名称 填写实例的名称,根据规划自定义。 实例规格 选择实例的容量规格,实例创建后规格不可修改,此处选择“专业版”。 可维护时间窗 选择技术支持对实例进行维护的时间段,建议选择业务量较少的时间段,保持默认设置“22:00:00---02:00:00”。 企业项目 选择实例所属的企业项目,保持默认设置“default”。 网络 选择已创建的虚拟私有云“VPC1”和子网。 安全组 单击“管理安全组”,创建安全组,企业项目选择“default”后,即可创建。 描述 填写实例的描述信息。 单击“立即购买”。 规格确认无误后,勾选用户协议和隐私政策的阅读并同意声明。开始创建实例,界面显示创建进度。
  • 编写自定义认证函数 在 函数工作流 的控制台编写函数,自定义认证的代码编写指南参见创建用于前端自定义认证的函数。 根据下表参数说明,在函数工作流页面创建一个函数。 表1 函数信息配置 参数 配置说明 选择创建方式 默认“创建空白函数”。 函数类型 默认“事件函数”。 区域 与API网关相同区域。 项目 华为云的区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的资源(计算资源、存储资源和网络资源),以默认项目为单位进行授权,用户可以访问您账号中该区域的所有资源。此处默认为已选择的区域。 函数名称 根据规划自定义名称。 企业项目 企业项目是项目的升级版,针对企业不同项目间资源的分组和管理,是逻辑隔离。此处默认“default”。 委托名称 用户委托函数工作流去访问其他的云服务。此处选择“未使用任何委托”。 运行时 选择Python 3.6。 函数创建完成后,进入函数详情。在“代码”页签,将以下代码复制到index.py中(如果您使用的是专享版网关,并且实例支持authorizer_context_support_num_bool特性,那么context中的value的类型可以为boolean类型或number类型)。 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 # -*- coding:utf-8 -*- import json def handler(event, context): #以下表示认证信息匹配正确,则返回用户名, if event["headers"]["authorization"]=='Basic dXN****cmQ=': return { 'statusCode': 200, 'body': json.dumps({ "status":"allow", "context":{ "user_name":"user1" } }) } else: return { 'statusCode': 200, 'body': json.dumps({ "status":"deny", "context":{ "code": "1001", "message":"incorrect username or password", "authorizer_success": "false" } }) }
  • 设置错误响应 调用API如果输入错误的认证信息,则返回结果如下: 1 {"error_msg":"Incorrect authentication information: frontend authorizer","error_code":"APIG.0305","request_id":"36e42b3019077c2b720b6fc847733ce9"} 为了让API响应结果为函数中返回的context中的字段(如果您使用的是专享版网关,并且实例支持authorizer_context_support_num_bool特性,那么context中的value的类型可以为boolean类型或number类型),需要修改网关响应模板。在API所在分组中,“分组信息”页签下的“网关响应”区域,编辑自定义认证失败的响应详情,将响应状态码改为401,将消息模板改为(引用变量为boolean类型或number类型时,变量不需要加双引号): 1 {"code":"$context.authorizer.frontend.code","message":"$context.authorizer.frontend.message", "authorizer_success": "$context.authorizer.frontend.authorizer_success"} 修改之后,调用API传入错误的认证信息,返回状态码为401,返回结果如下: 1 {"code":"1001","message":"incorrect username or password","authorizer_success": "false"}
  • 操作流程 编写自定义认证函数 创建一个函数作为用户自己的认证服务。 创建自定义认证 在APIG中创建一个自定义认证,将函数服务接入APIG。 创建自定义认证的API 创建一个自定义认证方式的API。 设置错误响应 为了让API响应结果为函数中返回的context中的字段,需要修改网关响应。 映射后端参数 添加系统参数,将函数返回的context信息传到后端。 验证 调用API,观察是否成功返回函数的context信息。
  • 计费示例 假设您在2023/03/10 8:45:30部署专业版实例(假设实例版本单价为12.88元/小时/实例,公网带宽单价为0.063元/小时/实例),然后在9:30:00将其全部删除,则计费周期分为如下两个时间段: 8:00:00~9:00:00时间段,在8:45:30~9:00:00间产生费用,该计费周期内的计费时长为870秒。则参考计费项中的计费公式,该计费时间段内的费用为:870÷3600x12.88x1+870÷3600x0.063x1=3.13(元)。 9:00:00~10:00:00时间段,在9:00:00~9:30:00间产生费用,该计费周期内的计费时长为1800秒。则参考计费项中的计费公式,该计费时间段的费用为:1800÷3600x12.88x1+1800÷3600x0.063x1=6.47(元)。
  • 适用计费项 表1 按需计费适用计费项 计费项 说明 版本(实例规格) API网关提供的实例版本有:基础版、专业版、企业版、铂金版等,您可以根据实际业务需要按需使用。实例版本说明,请参考产品规格。如果您当前使用的实例版本不能满足需要,API网关支持升级产品版本,例如从“基础版”升级到“专业版”或者铂金版,并且对现有业务没有影响。 实例版本单价,请参考价格详情中的按需计费价格。 公网带宽 使用的公网入口和公网出口带宽大小。 购买时长 使用实例或公网带宽的时间长度,按小时计费,精确到秒。 购买个数 实例的个数。 假设您计划使用1个专业版实例,开启公网出口,公网带宽大小为5Mbit/s,使用时长1小时,在价格计算器页面底部,您将看到所需的配置费用。 图1 按需计费配置费用示例 配置费用包括版本、公网带宽、实例数以及使用时长。
  • 计费周期 按需计费时,实例按秒计费,每一个小时整点结算一次费用(以GMT+08:00时间为准),结算完毕后进入新的计费周期。计费的起点以部署在API网关上实例启动运行的时间点为准,终点以实例删除的时间为准。 例如,您在2023/03/10 8:45:30部署了专业版实例,然后在9:30:00将其全部删除,则计费周期分为如下两个时间段: 8:00:00~9:00:00时间段,在8:45:30~9:00:00间产生费用,该计费周期内的计费时长为870秒。 9:00:00~10:00:00时间段,在9:00:00~9:30:00间产生费用,该计费周期内的计费时长为1800秒。
  • 升级实例版本后对计费的影响 如果您当前使用的实例版本不能满足需要,API网关支持升级产品版本,例如从“基础版”升级到“专业版”或者铂金版,并且对现有业务没有影响。 如果您在一个小时内升级了实例版本,将会产生多条计费信息。每条计费信息的开始时间和结束时间对应不同配置在该小时内的生效时间。 例如2023/03/10 9:00:00,您部署运行了专业版实例(假设实例版本单价为12.88元/小时/实例,公网带宽单价为0.063元/小时/实例)。并在9:30:00升级实例版本到企业版(假设实例版本单价为19.36元/小时/实例,公网带宽单价为0.063元/小时/实例),那么在9:00:00 ~ 10:00:00间会产生两条计费信息: 第一条对应9:00:00 ~ 9:30:00,按照专业版计费。则参考计费项中的计费公式,该计费时间段内的费用为:1800÷3600x12.88x1+1800÷3600x0.063x1=6.47(元)。 第二条对应9:30:00 ~ 10:00:00,按照企业版计费。则参考计费项中的计费公式,该计费时间段内的费用为:1800÷3600x19.36x1+1800÷3600x0.063x1=9.71(元)。
  • 配额限制 如果您需要修改默认限制值,请参考如何申请扩大配额。专享版更多参数配置,请参见配置参数。 新增或修改的APIG资源存在数据同步延迟,需要5-10秒才生效。 在高并发情况下会出现略超最大配额数限制的情况,不影响资源的正常使用。 表3 专享版配额管理明细 限制项 默认限制 能否修改 实例数量 每个用户最多创建5个实例。 √ API分组数量 每个实例最多创建1500个API分组。 √ API数量 每个实例: 基础版:250 专业版:800 企业版:2000 铂金版:8000 √ API数量 每个分组最多创建1000个API。 x 后端策略数量 每个实例最多创建5个后端策略。 √ 凭据数量 每个实例最多创建50个凭据。凭据配额包括用户自行创建的应用。 √ 流控策略数量 每个实例最多创建300个流控策略。 用户流量限制不超过API流量限制。 应用(凭据)流量限制不超过用户流量限制。 源IP流量限制不超过API流量限制。 √ 环境数量 每个实例最多创建10个环境。 √ 签名密钥数量 每个实例最多创建200个签名密钥。 √ 访问控制策略数量 每个实例最多可以创建100个访问控制策略。 √ VPC通道(负载通道)数量 每个实例最多创建200个VPC通道。 √ 变量数量 每个分组在任意一个环境中,最多创建50个变量。 √ 独立 域名 数量 每个分组最多可以绑定5个独立域名。 √ 云服务器数量 每个VPC通道最多添加10个云服务器。 √ 参数数量 每个API最多创建50个参数。 √ 发布历史数量 同一个API在每个环境中最多记录10条最新的发布历史。 √ 每个API的访问频率 不超过6000次/秒。 √ 特殊应用(凭据) 每个流控策略最多可创建30个特殊应用。 √ 特殊租户 每个流控策略最多可创建30个特殊租户。 √ 子域名(调试域名)访问次数 每个子域名每天最多可以访问1000次。 x 调用请求包的大小 API每次最大可以调用12M的请求包。 √ TLS协议 支持TLS1.1和TLS1.2,推荐使用TLS1.2。 √ 自定义认证数量 每个实例最多创建50个自定义认证。 x 插件数量 每个实例最多创建500个插件策略。 √ HTTP协议 使用HTTP协议时,URL+Header的大小上限为32K。 x 表4 共享版配额管理明细 限制项 默认限制 能否修改 API分组数量 每个用户最多创建50个API分组。 √ API数量 每个用户最多创建200个API。 √ 后端策略数量 每个用户最多创建5个后端策略。 √ 应用数量 每个用户最多创建50个应用。应用配额包括用户自行创建的应用和API云商店购买API生成的应用。 √ 流控策略数量 每个用户最多创建30个流控策略。 用户流量限制不超过API流量限制。 应用流量限制不超过用户流量限制。 源IP流量限制不超过API流量限制。 √ 环境数量 每个用户最多创建10个环境。 √ 签名密钥数量 每个用户最多创建30个签名密钥。 √ 访问控制策略数量 每个用户最多可以创建100个访问控制策略。 √ VPC通道数量 每个用户最多创建30个VPC通道。 √ 变量数量 每个分组在任意一个环境中,最多创建50个变量。 √ 独立域名数量 每个分组最多可以绑定5个独立域名。 √ 云服务器数量 每个VPC通道最多添加200个云服务器。 √ 参数数量 每个API最多创建50个参数。 √ 发布历史数量 同一个API在每个环境中最多记录10条最新的发布历史。 √ 每个API的访问频率 不超过200次/秒。 √ 特殊应用 每个流控策略最多可创建30个特殊应用。 √ 特殊租户 每个流控策略最多可创建30个特殊租户。 √ 子域名访问次数 每个子域名每天最多可以访问1000次。 x 调用请求包的大小 API每次最大可以调用12M的请求包。 x 自定义认证数量 每个用户最多创建20个自定义认证。 √
  • API 表2 API约束与限制 限制项 约束与限制 API分组 一个API只能属于一个API分组。 SSL证书 仅支持添加pem编码格式的SSL证书。 添加的SSL证书仅支持RSA、ECDSA加密算法。 域名 调试域名默认只能在与实例相同VPC内的服务器上解析和访问,如果调试域名要支持公网解析与访问,请在实例上绑定公网入口弹性IP。 调试域名不能用于生产业务,且仅限应用程序调试使用。 同一实例下的不同分组不能绑定相同的独立域名。 独立域名绑定端口时,同一域名不支持绑定相同端口。 同一域名不同端口,无论哪个端口绑定/修改/解绑SSL证书、开启/关闭客户端认证,所有端口都会同步生效。 如果您通过负载通道访问后端服务,那么独立域名绑定的端口需与负载通道中后端服务器的访问端口保持一致。 独立域名绑定端口后,如果您通过IP地址访问非DEFAULT分组下的,那么需要在请求消息中添加Header参数“host”,host值必须带有对应的访问协议的端口(默认的80/443端口,host值可以不带)。 如果您通过IP地址访问API,则无法使用域名证书完成SSL认证,除非配置了IP证书。因此,不推荐使用IP地址访问API,否则无法保证链路安全。 启用http to https自动重定向时,由于浏览器限制,非GET或非HEAD方法的重定向可能导致数据丢失,因此,API请求方法限定为GET或HEAD。仅当API的请求协议选择“HTTPS”或“HTTP&HTTPS”,且独立域名已绑定SSL证书时重定向生效。 API策略 同一个环境中,一个API只能被一个同类型(流控策略、响应缓存策略、第三方认证策略等类型)策略绑定,但一个同类型策略可以绑定多个API。 策略和API本身相互独立,只有为API绑定策略后,策略才对API生效。为API绑定策略时需指定发布环境,策略只对指定环境上的API生效。 策略的绑定、解绑、更新会实时生效,不需要重新发布API。 API的下线操作不影响策略的绑定关系,再次发布后仍然会带有下线前绑定的策略。 如果策略与API有绑定关系,则策略无法执行删除操作。 凭据 每个凭据最多绑定1000个API。 每个凭据最多可创建5个AppCode。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全