华为云用户手册

  • 操作场景 不同VPC之间网络不通,您可以通过对等连接连通同一个区域下的VPC。本章节指导用户创建相同账户下的VPC对等连接,即连通的两个VPC位于同一个账户下。 本文档以在账户A下,创建VPC-A和VPC-B之间的对等连接为例,实现业务服务器E CS -A01和数据库服务器RDS-B01之间的通信。 创建步骤如下: 步骤一:创建VPC对等连接 步骤二:添加VPC对等连接路由 步骤三:验证网络互通情况 图1 相同账户下的对等连接组网示例 当前VPC对等连接暂不收取您的任何费用。
  • 约束与限制 当您修改安全组规则前,请您务必了解该操作可能带来的影响,避免误操作造成网络中断或者引入不必要的网络安全问题。 安全组规则遵循白名单原理,当在规则中没有明确定义允许或拒绝某条流量时,安全组一律拒绝该流量流入或者流出实例。 在入方向中,表1中的入方向规则,确保安全组内实例的内网网络互通,不建议您修改该安全组规则。 在出方向中,表1中的出方向规则,允许所有流量从安全组内实例流出。如果您修改了该规则,可能导致安全组内的实例无法访问外部,请您谨慎操作。 表1 安全组规则说明 方向 策略 类型 协议端口 源地址/目的地址 入方向 允许 IPv4 全部 源地址:当前安全组 入方向 允许 IPv6 全部 源地址:当前安全组 出方向 允许 IPv4 全部 目的地址:0.0.0.0/0 出方向 允许 IPv6 全部 目的地址:::/0
  • 使用须知 配置安全组规则前,您需要规划好安全组内实例的访问策略,常见安全组规则配置案例请参见安全组配置示例。 安全组的规则数量有限制,请您尽量保持安全组内规则的简洁,详细约束请参见安全组的限制。 在安全组规则中放开某个端口后,您还需要确保实例内对应的端口也已经放通,安全组规则才会对实例生效,具体请参见检查安全组规则是否生效。 通常情况下,同一个安全组内的实例默认网络互通。当同一个安全组内实例网络不通时,可能情况如下: 当实例属于同一个VPC时,请您检查入方向规则中,是否删除了同一个安全组内实例互通对应的规则,规则详情如表1所示。 表1 安全组内实例互通规则 方向 优先级 策略 类型 协议端口 源地址/目的地址 入方向 1 允许 IPv4 全部 源地址:当前安全组(Sg-A) 入方向 1 允许 IPv6 全部 源地址:当前安全组(Sg-A) 不同VPC的网络不通,所以当实例属于同一个安全组,但属于不同VPC时,网络不通。 您可以通过VPC对等连接连通不同区域的VPC。
  • 修订记录 发布日期 修改说明 2024-03-15 第七十次正式发布。文档内容更新为: 在共享VPC简介~停止VPC子网共享章节,增加共享VPC内容。 在创建虚拟私有云和子网和为虚拟私有云创建新的子网等章节,增加标签策略说明。 在导入和导出安全组规则章节,增加安全组规则导入约束与限制说明。 2023-11-16 第六十九次正式发布。文档内容更新为: 在将子网关联至网络ACL和将子网和网络ACL解除关联章节,增加通过子网列表页面,关联或者解除关联网络ACL的说明。 在创建IP地址组和在IP地址组内添加IP地址条目章节,增加IP地址条目描述说明。 新增导出IP地址组详情、在IP地址组内修改IP地址条目和在IP地址组内批量导入IP地址条目章节,增加IP地址组操作说明。 在创建IP地址组、在IP地址组内添加IP地址条目以及在IP地址组内修改IP地址条目章节,增加“最大条目数”参数。 2023-09-19 第六十八次正式发布。文档内容更新为: 在删除IP地址组章节,增加同步删除关联资源的说明。 在删除弹性网卡和删除辅助弹性网卡章节,增加删除网卡的说明。 在在安全组中一键放通常见端口章节,新增一键放通常见端口要内容。 在创建相同账户下的对等连接、创建不同账户下的对等连接、修改对等连接路由、查看对等连接路由、删除对等连接路由章节,修改对等连接添加路由内容。 2023-08-31 第六十七次正式发布。文档内容更新为: 在流量镜像简介~删除镜像会话章节,增加流量镜像功能。 在安全组和安全组规则和安全组配置示例章节,增加安全组规则介绍、配置示例等内容。 2023-07-07 第六十六次正式发布。文档内容更新为: 在添加安全组规则和快速添加多条安全组规则章节,源地址和目的地址增加支持添加多个IP地址说明。 在创建安全组章节,增加安全组模板说明,支持快速添加安全组规则模板。 2023-06-08 第六十五次正式发布。文档内容更新为: 在安全组和安全组规则章节,增加安全组规则示例说明。 在创建安全组章节,添加安全组规则模板说明。 在添加安全组规则、快速添加多条安全组规则和导入和导出安全组规则章节,修改源地址和目的地址参数说明。 在创建网络ACL章节,增加支持企业项目相关内容。 在创建IP地址组章节,增加支持企业项目相关内容。 在添加弹性公网IP到共享带宽章节,增加EIP跨带宽迁移能力的说明。 2023-04-26 第六十四次正式发布。文档内容更新为: 在创建相同账户下的对等连接和创建不同账户下的对等连接章节,更新界面截图和参数。 在IP地址组简介~删除IP地址组章节,增加IP地址组新功能相关内容。 2023-02-25 第六十三次正式发布。文档内容更新为: 在对等连接使用示例章节,增加对等连接示例组网。 增加获取对等连接的对端项目ID章节。 增加修改对等连接路由章节。 2023-01-31 第六十二次正式发布。文档内容更新为: 在创建虚拟私有云和子网、为虚拟私有云创建新的子网和修改子网信息章节,增加“ 域名 ”参数。 在创建IP地址组章节,修改IP地址组格式说明。 2022-12-23 第六十一次正式发布。文档内容更新为: 新增查看并删除子网内的云服务资源章节。 新增查看子网内IP地址的用途章节。 修改删除虚拟私有云和删除子网章节。 2022-11-15 第六十次正式发布。文档内容更新为: 在共享流量包简介章节,添加到价格计算器详情页的链接作为价格参考。 新增为虚拟IP解绑实例和为虚拟IP解绑弹性公网IP章节。 在删除虚拟IP地址章节,增加约束与限制。 在删除安全组章节,增加安全组不收费说明。 2022-11-01 第五十九次正式发布。文档内容更新为: 在安全组和安全组规则章节,修改安全组关联实例数量。 2022-08-19 第五十八次正式发布。文档内容更新为: 根据界面“子网”“路由表”“对等连接”“弹性网卡”入口变化刷新文档。 2022-07-26 第五十七次正式发布。 新增EIP不支持跨区域使用限制、带宽加油包支持的区域、普通可用区和边缘可用区的EIP资源使用限制,更新章节: 弹性公网IP简介。 为弹性云服务器申请和绑定弹性公网IP。 共享带宽简介。 添加弹性公网IP到共享带宽。 带宽加油包简介。 2022-07-14 第五十六次正式发布。文档内容更新为: 在为弹性云服务器申请和绑定弹性公网IP章节,优选BGP相关描述优化更新。 流日志功能正式商用。 2022-06-15 第五十五次正式发布。文档内容更新为: 将虚拟私有云文档中的二层连接网关内容下线,关于二层连接网关的最新文档请参见企业交换机。 2022-06-10 第五十四次正式发布。文档内容更新为: 在路由表和路由中,增加路由下一跳为 云防火墙 的说明。 虚拟私有云提供新版控制台,主要修改以下章节: 创建虚拟私有云和子网 为虚拟私有云创建新的子网 创建弹性网卡 创建辅助弹性网卡 创建相同账户下的对等连接 申请虚拟IP地址 在创建相同账户下的对等连接和创建不同账户下的对等连接章节,修改对等连接路由添加指导。 2022-05-15 第五十三次正式发布。文档内容更新为: 在路由表和路由中,增加不同类型路由支持默认路由表和自定义路由表的说明。 在复制路由中,增加不同类型路由是否支持复制的约束与限制。 2021-12-28 第五十二次正式发布。文档内容更新为: 在管理IPv4/IPv6双栈网络中,增加IPv6网络的应用场景。 增加查看虚拟私有云拓扑图章节。 2021-11-01 第五十一次正式发布。文档内容更新为: 新增“优选BGP线路”, 在为弹性云服务器申请和绑定弹性公网IP中,修改参数“线路”的描述。 在申请共享带宽、添加弹性公网IP到共享带宽中,增加参数“线路”以及相关约束与限制说明。 2021-10-18 第五十次正式发布。文档内容更新为: 新增“辅助弹性网卡”章节。 2021-05-20 第四十九次正式发布。文档内容更新为: 常见问题新增“为什么VPC已删除,还存在持续计费情况?”。 2021-03-05 第四十八次正式发布。文档内容更新为: 产品介绍新增“网络服务概述”。 常见问题新增“配置了IPv6双栈,为什么无法访问IPv6网站?”。 2020-12-17 第四十七次正式发布。文档内容更新为: 在“约束与限制”章节,增加各功能限制说明。 对等连接补充图示。 2020-11-03 第四十六次正式发布。文档内容更新为: 调整“虚拟私有云和子网章节”结构。 新增“为虚拟私有云添加扩展网段”和“删除虚拟私有云扩展网段”章节。 在“网络ACL”章节,新增“拒绝某IP地址的访问”。 删除常见问题:弹性云服务器关机再开机后,其绑定的弹性公网IP是否会改变? 2020-10-23 第四十五次正式发布。文档内容更新为: 新增“弹性网卡”章节。 优化“安全组”章节。 2020-09-07 第四十四次正式发布。文档内容更新为: 常见问题新增“为什么配置的安全组规则不生效?”。 常见问题删除“VPC对等连接出现问题时,如何排查?”。 常见问题修改“为什么对等连接创建完成后不能互通?”。 常见问题修改“弹性云服务器的网卡绑定虚拟IP地址后,该虚拟IP地址无法ping通时,如何排查?”。 2020-07-23 第四十三次正式发布。文档内容更新为: 新增“IP地址组”章节,同时在安全组对应章节新增“IP地址组”字段。 2020-06-09 第四十二次正式发布。文档内容更新为: 常见问题新增:“配置双网卡后ping不通?”。 2020-05-20 第四十一次正式发布。文档内容更新为: 常见问题新增:“外网能访问服务器,但是服务器无法访问外网时,如何排查?”。 常见问题新增:“哪些设备可以与华为云二层连接网关做对接?” 常见问题新增:“二层连接配置完成后状态一直显示未连接?”。 常见问题新增:“二层连接状态显示已连接,但云上与云下的主机网络仍不通?”。 修改常见问题“子网被相关资源占用时,会导致无法删除子网,如何排查相关资源?”。 新增“克隆安全组”章节。 2020-04-15 第四十次正式发布。文档内容更新为: 常见问题新增“弹性公网IP是否支持跨区域绑定?”。 常见问题新增“如何查询弹性公网IP归属地?”。 常见问题新增“弹性公网IP是否支持转移给其他账号?”。 常见问题新增“购买弹性公网IP时,是否可以指定IP地址?”。 常见问题新增“购买弹性公网IP后,弹性公网IP是否会变化?”。 常见问题新增“怎样切换内网DNS?”。 2020-03-30 第三十九次正式发布。文档内容更新为: 新增“二层连接网关(公测)”章节。 在“安全组简介”及“网络ACL简介”章节补充基本信息。 修改常见问题“变更安全组规则和网络ACL规则时,是否对原有流量实时生效?”。 产品介绍新增“计费说明”章节。 常见问题新增“计费类”。 2020-03-20 第三十八次正式发布。文档内容更新为: 常见问题新增“用户在弹性云服务器内手工配置的IPv6地址为什么无法通信?” 常见问题删除“安全组中多个安全组规则冲突时,安全组规则优先级哪个更高?” 2020-02-18 第三十七次正式发布。文档内容更新为: 常见问题新增“弹性公网IP如何计费?”。 优化常见问题“一个弹性公网IP可以给几个弹性云服务器使用?”。 2020-02-10 第三十六次正式发布。文档内容更新为: 修改“权限管理”章节,VPC系统权限名称变更。 2020-01-20 第三十五次正式发布。文档内容更新为: 修改“权限管理”章节内容。 2019-12-23 第三十四次正式发布。文档内容更新为: 根据界面“子网”“路由表”入口及功能变化刷新文档。 在常见问题新增“弹性云服务器是否支持切换虚拟私有云?”。 2019-12-03 第三十三次正式发布。文档内容更新为: 优化“产品介绍”描述与图示。 根据 统一身份认证 服务界面,刷新“权限管理”章节。 2019-11-20 第三十二次正式发布。文档内容更新为: 在常见问题新增“弹性公网IP的分配策略是什么?”章节。 在常见问题新增“静态BGP与全动态BGP有何区别?”章节。 在常见问题新增“什么是增强型95计费?”章节。 2019-10-30 第三十一次正式发布。文档内容更新为: 新增附录章节“NAT64 TOA插件配置”。 2019-10-15 第三十次正式发布。文档内容更新为: 新增“VPC流日志(公测)”章节。 根据安全组添加规则界面,刷新文档截图。 在常见问题新增“为什么网络ACL添加了拒绝特定IP地址访问的规则,但仍可以访问?”章节。 2019-10-09 第二十九次正式发布。文档内容更新为: 在常见问题新增“弹性公网IP是否支持变更绑定的弹性云服务器?”章节。 在常见问题新增“弹性云服务器关机再开机后,其绑定的弹性公网IP是否会改变?”章节。 2019-09-26 第二十八次正式发布。文档内容更新为: 优化“VPC对等连接”章节。 2019-09-12 第二十七次正式发布。文档内容更新为: 删除“删除VPN”章节。 在常见问题新增“带宽与上传下载速率是什么关系?”章节。 常见问题“删除安全组有何约束?”补充内容。 2019-08-15 第二十六次正式发布。文档内容更新为: 在“安全组配置示例”章节,新增“允许外部访问指定端口”示例。 常见问题中新增“如何切换计费方式中的“按带宽计费”和“按流量计费”?”章节。 常见问题中新增“带宽加油包是否支持在有效期内叠加?”章节。 2019-07-30 第二十五次正式发布。文档内容更新为: 新增“带宽加油包”章节。 2019-05-31 第二十四次正式发布。文档内容更新为: 产品介绍中新增“权限管理”章节。 产品介绍中新增“区域和可用区”章节。 快速入门中新增“搭建IPv4网络”和“搭建IPv6网络(公测)”。 用户指南中新增“权限管理”章节。 2018-12-30 第二十三次正式发布。文档内容更新为: 匹配管理控制台左侧导航菜单变更,修改了安全组、网络ACL、弹性公网IP、共享带宽等的入口描述。 新增“网络ACL简介”章节。 新增“网络ACL配置示例”章节。 2018-11-30 第二十二次正式发布。文档内容更新为: 根据网络ACL界面优化同步更新对应文档。 新增批量删除规则、批量解除关联子网。 修改参数“Any”为“全部”,“动作”为“策略”等。 修改FAQ“弹性云服务器IP获取不到时,如何排查”。 2018-09-30 第二十一次正式发布。文档内容更新为: 新增常见问题“云主机弹性云服务器的主网卡和扩展网卡在使用上有什么区别?”。 新增常见问题“修改弹性云服务器的时间后,IP地址丢失,怎么办?”。 新增“IPv4/IPv6双栈网络(公测)”章节。 新增“共享流量包”章节。 修改常见问题“如何切换计费模式中的“按需”和“包年包月”?”。 在“创建虚拟私有云基本信息及默认子网”章节新增批创子网描述。 在“添加网络ACL规则”章节新增批量添加规则描述、新增规则的“描述”参数。 新增“配置SNAT服务器”章节。 2018-08-30 第二十次正式发布。文档内容更新为: 新增“IPv6弹性公网IP(公测)”章节。 在“创建虚拟私有云基本信息及默认子网”和“创建安全组”章节新增“企业项目”参数。 2018-07-30 第十九次正式发布。文档内容更新为: 安全组修改: 修改“复制安全组规则”章节。 新增“修改安全组规则”章节。 修改“删除安全组规则”章节。 新增“导入/导出安全组规则”章节。 新增“实例加入/移出安全组”章节。 自定义路由修改: 新增“简介”章节。 新增“VPC内自定义路由示例”章节。 新增“VPC外自定义路由示例”章节。 在“为虚拟私有云创建新的子网”章节新增系统保留地址的说明。 删除“SNAT”和“配置SNAT服务器”章节,新增“NAT网关”章节。 2018-06-30 第十八次正式发布。文档内容更新为: 共享带宽新增增强型95计费方式。 优化产品介绍章节。 优化安全组章节。 新增“VPC网络规划”。 常见问题增加分类。 新增“无法访问公有云某些端口时怎么办?”。 新增“TCP 25端口出方向无法访问时怎么办?”。 修改“添加安全组规则”章节。 修改“快速添加多条安全组规则”章节。 新增“修改安全组规则”章节。 2018-05-30 第十七次正式发布。文档内容更新为: 新增“企业项目”参数。 新增“克隆安全组规则”功能。 新增安全组规则的“描述”参数。 统一购买、创建、申请的界面用语。 2018-05-23 第十六次正式发布。文档内容更新为: 新增“修改弹性公网IP的带宽”章节,删除原“查询和修改带宽”章节。 修改“如何通过扩展网卡绑定的弹性公网IP访问公网?”。 修改“EIP连接出现问题时,如何排查?”。 2018-05-11 第十五次正式发布。文档内容更新为: 新增共享带宽相关描述。 在申请弹性公网IP章节,将购买时长和数量合并,修改为购买量。 新增 云监控 云审计 内容。 修改常见问题:如何使用共享带宽。 修改常见问题:带宽的限速范围是多少。 2018-04-28 第十四次正式发布。文档内容更新为: 新增导出虚拟私有云列表。 修改弹性IP为弹性公网IP。 新增常见问题:如何通过扩展网卡绑定的弹性公网IP访问公网。 2018-03-30 第十三次正式发布。文档内容更新为: 新增Cloud-init连接出现问题时,如何排查。 新增EIP连接出现问题时,如何排查。 新增IB网络出现问题时,如何排查。 新增VPC对等连接出现问题时,如何排查。 新增二三层通信出现问题时,如何排查。 新增裸机网络出现问题时,如何排查。 新增VPC虚拟IP无法访问时,如何排查。 新增弹性云服务器IP获取不到时,如何排查。 新增VPN及专线网络连接出现问题时,如何排查。 2018-02-28 第十二次正式发布。文档内容更新为: 新增如何切换弹性IP计费模式中的“按需”和“包年包月”。 新增如何为配置了多网卡的弹性 云服务器配置 策略路由。 新增本地主机访问使用弹性云服器搭建的网站出现间歇性中断怎么办。 新增同一个子网下的弹性云服务器只能通过内网IP地址单向通信怎么办。 新增同一个VPC内的两台弹性云服务器无法互通或者出现丢包等现象时,如何排查。 新增弹性云服务器的网卡绑定虚拟IP地址后,该虚拟IP地址无法ping通时,如何排查。 2018-01-30 第十一次正式发布。文档内容更新为: 新增批量解绑和释放弹性IP地址功能。 创建安全组时,描述信息不超过64位。 2017-11-30 第十次正式发布。文档更新内容为: 创建子网无需配置可用区。 2017-10-30 第九次正式发布。文档内容更新为: 按照管理控制台最新的UI风格刷新手册截图。 “防火墙”名称修改为“网络ACL”。 新增快速添加安全组规则的功能。 新增弹性云服务器的安全组配置案例。 2017-09-30 第八次正式发布。文档内容更新为: 新增虚拟私有云和子网的标签特性。 2017-08-20 第七次正式发布。文档内容更新为: 根据界面优化更新“虚拟私有云和子网”和“自定义路由”章节操作步骤。 根据界面优化更新申请VPC、VPN、弹性IP地址操作步骤。 2017-07-30 第六次正式发布。文档内容更新为: 路由表支持100条自定义路由。 2017-07-20 第五次正式发布。文档内容更新为: 新增以下特性: 对等连接 网络ACL 自定义路由 2017-04-28 第四次正式发布。文档内容更新为: 修改子网信息网络信息时,可以增加多个DNS服务器地址。 2016-10-19 第三次正式发布。文档内容更新如下: VPN帮助中心URL改动,更新帮助中心URL。 2016-07-15 第二次正式发布。文档内容更新如下: 修改VPN的认证算法支持SHA2。 流量计费功能性能优化,同时支持自动切换流量计费数据库。 2016-03-14 第一次正式发布。
  • Python示例代码 以下示例说明了如何使用Python编程的方式创建云服务登录地址FederationProxyUrl,该示例基于华为云开发者 Python 软件开发工具包 (Python SDK)开发。 from huaweicloudsdkcore.auth.credentials import GlobalCredentials from huaweicloudsdkcore.http.http_config import HttpConfig from huaweicloudsdkiam.v3 import * import urllib # 使用全局域名获取自定义代理登录票据 endpoint = "https://iam.myhuaweicloud.com" # 配置客户端属性 config = HttpConfig.get_default_config() config.ignore_ssl_verification = True config.proxy_protocol = "https" config.proxy_host = "proxy.huawei.com" config.proxy_port = 8080 credentials = GlobalCredentials(ak, sk, domain_id) # 使用 IAM userB的domainID/ak/sk,初始化指定IAM客户端 {Service}Client,用户B的创建方式见“创建IAM用户”章节 client = IamClient().new_builder(IamClient) \ .with_http_config(config) \ .with_credentials(credentials) \ .with_endpoint(endpoint) \ .build() # CreateTemporaryAccessKeyByAgency # 调用通过委托获取临时访问密钥和securitytoken接口获取具有临时身份的访问密钥和securityToken # 访问密钥和securitytoken的默认有效期为900秒,即15分钟,取值范围为15分钟-24小时,这里设置有效期为3600秒,即一小时。 # 注意: 下一步获取自定义代理登录票据logintoken时,如果您设置了有效期,则有效期不能大于这里获取的securitytoken的剩余有效时间。 # 通过委托获取securitytoken时,请求体中必须填写session_user.name参数。 assume_role_session_user = AssumeroleSessionuser(name="ExternalUser") identity_assume_role = IdentityAssumerole(agency_name="testagency", domain_id="0525e2c87exxxxxxx", session_user=assume_role_session_user, duration_seconds=3600) identity_methods = ["assume_role"] body = CreateTemporaryAccessKeyByAgencyRequestBody( AgencyAuth(AgencyAuthIdentity(methods=identity_methods, assume_role=identity_assume_role))) request = CreateTemporaryAccessKeyByAgencyRequest(body) create_temporary_access_key_by_agency_response = client.create_temporary_access_key_by_agency(request) credential = create_temporary_access_key_by_agency_response.credential # CreateLoginToken # 获取自定义代理登录票据logintoken。 # 自定义代理登录票据logintoken的有效期默认为600秒,即10分钟,取值范围为10分钟-12小时,这里设置为1800秒,即半小时。 # 注意:自定义代理登录票据logintoken的有效期不能大于上一步获取的securitytoken的剩余有效时间。 login_token_security_token = LoginTokenSecurityToken(access=credential.access, secret=credential.secret, id=credential.securitytoken, duration_seconds=1800) body = CreateLoginTokenRequestBody(LoginTokenAuth(login_token_security_token)) request = CreateLoginTokenRequest(body) create_login_token_response = client.create_login_token(request) login_token = create_login_token_response.x_subject_login_token # 获取自定义代理登录票据URL auth_URL = "https://auth.huaweicloud.com/authui/federation/login" # 企业管理系统登录地址 enterprise_system_login_URL = "https://example.com/" # 需要访问的华为云服务地址 target_console_URL = "https://console.huaweicloud.com/iam/?region=cn-north-4" # 创建云服务登录地址FederationProxyUrl,作为Location返回给浏览器。 FederationProxyUrl = auth_URL + "?idp_login_url=" + urllib.parse.quote( enterprise_system_login_URL) + "&service=" + urllib.parse.quote( target_console_URL) + "&logintoken=" + urllib.parse.quote(login_token) print(FederationProxyUrl)
  • Java示例代码 以下示例说明了如何使用java编程的方式创建云服务登录地址FederationProxyUrl,该示例基于华为云 Java 软件开发工具包(Java SDK)开发。 import java.net.*; import java.util.Collections; import com.huaweicloud.sdk.core.auth.GlobalCredentials; import com.huaweicloud.sdk.core.exception.ClientRequestException; import com.huaweicloud.sdk.core.exception.ServerResponseException; import com.huaweicloud.sdk.core.http.HttpConfig; import com.huaweicloud.sdk.iam.v3.IamClient; import com.huaweicloud.sdk.iam.v3.model.*; // 使用全局域名获取自定义代理登录票据 String endpoint = "https://iam.myhuaweicloud.com"; // 配置客户端属性 HttpConfig config = HttpConfig.getDefaultHttpConfig() .withIgnoreSSLVerification(true) .withProxyHost("proxy.huawei.com") .withProxyPort(8080); // 使用IAM userB的domainID/ak/sk,初始化指定IAM客户端 {Service}Client,用户B的创建方式见“创建IAM用户”章节 IamClient iamClient = IamClient.newBuilder().withCredential(new GlobalCredentials() .withDomainId("domainId") .withAk("ak") .withSk("sk")) .withEndpoint(endpoint) .withHttpConfig(config) .build(); /*CreateTemporaryAccessKeyByAgency 调用通过委托获取临时访问密钥和securitytoken接口获取具有临时身份的访问密钥和securityToken。 访问密钥和securitytoken的默认有效期为900秒,即15分钟,取值范围为15分钟-24小时,这里设置有效期为3600秒,即一小时。 注意: 下一步获取自定义代理登录票据logintoken时,如果您设置了有效期,则有效期不能大于这里获取的securitytoken的剩余有效时间。 */ IdentityAssumerole identityAssumerole = new IdentityAssumerole(). withAgencyName("testagency").withDomainId("0525e2c87exxxxxxx").withSessionUser(new AssumeroleSessionuser().withName("ExternalUser")).withDurationSeconds(3600); AgencyAuth agencyAuth = new AgencyAuth().withIdentity(new AgencyAuthIdentity().withAssumeRole(identityAssumerole). withMethods(Collections.singletonList(AgencyAuthIdentity.MethodsEnum.fromValue("assume_role")))); CreateTemporaryAccessKeyByAgencyRequestBody createTemporaryAccessKeyByAgencyRequestBody = new CreateTemporaryAccessKeyByAgencyRequestBody().withAuth(agencyAuth); CreateTemporaryAccessKeyByAgencyResponse createTemporaryAccessKeyByAgencyResponse = iamClient.createTemporaryAccessKeyByAgency(new CreateTemporaryAccessKeyByAgencyRequest().withBody(createTemporaryAccessKeyByAgencyRequestBody)); Credential credential = createTemporaryAccessKeyByAgencyResponse.getCredential(); /*CreateLoginToken 获取自定义代理登录票据logintoken。 logintoken是系统颁发给自定义代理用户的登录票据,承载用户的身份、session等信息。 调用自定义代理URL登录云服务控制台时,可以使用本接口获取的logintoken进行认证。 自定义代理登录票据logintoken的有效期默认为600秒,即10分钟,取值范围为10分钟-12小时,这里设置为1800秒,即半小时。 注意:自定义代理登录票据logintoken的有效期不能大于上一步获取的securitytoken的剩余有效时间。 通过委托获取securitytoken时,请求体中必须填写session_user.name参数。 */ CreateLoginTokenRequestBody createLoginTokenRequestBody = new CreateLoginTokenRequestBody(). withAuth(new LoginTokenAuth().withSecuritytoken(new LoginTokenSecurityToken(). withAccess(credential.getAccess()). withId(credential.getSecuritytoken()). withSecret(credential.getSecret()).withDurationSeconds(1800))); CreateLoginTokenResponse createLoginTokenResponse = iamClient.createLoginToken(new CreateLoginTokenRequest().withBody(createLoginTokenRequestBody)); String loginToken = createLoginTokenResponse.getXSubjectLoginToken(); //自定义代理登录地址 String authURL = "https://auth.huaweicloud.com/authui/federation/login"; //企业管理系统登录地址 String enterpriseSystemLoginURL = "https://example.com/"; //需要访问的华为云服务地址 String targetConsoleURL = "https://console.huaweicloud.com/iam/?region=cn-north-4"; //创建云服务登录地址FederationProxyUrl,作为Location返回给浏览器 String FederationProxyUrl = authURL + "?idp_login_url=" + URLEncoder.encode(enterpriseSystemLoginURL, "UTF-8") + "&service=" + URLEncoder.encode(targetConsoleURL, "UTF-8") + "&logintoken=" +URLEncoder.encode(loginToken, "UTF-8");
  • Java示例代码 以下示例说明了如何使用java编程的方式创建云服务登录地址FederationProxyUrl,该示例基于华为云 Java 软件开发工具包(Java SDK)开发。 import java.net.URLEncoder; import java.util.Collections; import com.huaweicloud.sdk.core.auth.GlobalCredentials; import com.huaweicloud.sdk.core.http.HttpConfig; import com.huaweicloud.sdk.core.exception.*; import com.huaweicloud.sdk.iam.v3.IamClient; import com.huaweicloud.sdk.iam.v3.model.*; //使用全局域名获取自定义代理登录票据 String endpoint = "https://iam.myhuaweicloud.com"; //配置客户端属性 HttpConfig config = HttpConfig.getDefaultHttpConfig() .withIgnoreSSLVerification(true) .withProxyHost("proxy.huawei.com") .withProxyPort(8080); // 使用IAM userB的domainID/ak/sk,初始化指定IAM客户端 {Service}Client,用户B的创建方式见“创建IAM用户”章节 IamClient iamClient = IamClient.newBuilder().withCredential(new GlobalCredentials() .withDomainId(domainId) .withAk(ak) .withSk(sk)) .withEndpoint(endpoint) .withHttpConfig(config) .build(); /*CreateTemporaryAccessKeyByToken 调用通过token获取临时访问密钥和securitytoken接口获取具有临时身份的访问密钥和securitytoken。 访问密钥和securitytoken的默认有效期为900秒,即15分钟,取值范围为15分钟-24小时,这里设置有效期为3600秒,即一小时。 注意: 下一步获取自定义代理登录票据logintoken时,如果您设置了有效期,则有效期不能大于这里获取的securitytoken的剩余有效时间。 */ TokenAuthIdentity tokenAuthIdentity = new TokenAuthIdentity().withMethods(Collections.singletonList(TokenAuthIdentity.MethodsEnum.fromValue("token"))).withToken(new IdentityToken().withDurationSeconds(3600)); CreateTemporaryAccessKeyByTokenRequestBody createTemporaryAccessKeyByTokenRequestBody = new CreateTemporaryAccessKeyByTokenRequestBody().withAuth(new TokenAuth().withIdentity(tokenAuthIdentity)); CreateTemporaryAccessKeyByTokenResponse createTemporaryAccessKeyByTokenResponse = iamClient.createTemporaryAccessKeyByToken(new CreateTemporaryAccessKeyByTokenRequest().withBody(createTemporaryAccessKeyByTokenRequestBody)); Credential credential = createTemporaryAccessKeyByTokenResponse.getCredential(); /*CreateLoginToken 获取自定义代理登录票据logintoken。 logintoken是系统颁发给自定义代理用户的登录票据,承载用户的身份、session等信息。 调用自定义代理URL登录云服务控制台时,可以使用本接口获取的logintoken进行认证。 自定义代理登录票据logintoken的有效期默认为600秒,即10分钟,取值范围为10分钟-12小时,这里设置为1800秒,即半小时。 注意:自定义代理登录票据logintoken的有效期不能大于上一步获取的securitytoken的剩余有效时间。 */ CreateLoginTokenRequestBody createLoginTokenRequestBody = new CreateLoginTokenRequestBody(). withAuth(new LoginTokenAuth().withSecuritytoken(new LoginTokenSecurityToken(). withAccess(credential.getAccess()). withId(credential.getSecuritytoken()). withSecret(credential.getSecret()).withDurationSeconds(1800))); CreateLoginTokenResponse createLoginTokenResponse = iamClient.createLoginToken(new CreateLoginTokenRequest().withBody(createLoginTokenRequestBody)); String loginToken = createLoginTokenResponse.getXSubjectLoginToken(); //获取自定义代理登录票据URL String authURL = "https://auth.huaweicloud.com/authui/federation/login"; //企业管理系统登录地址 String enterpriseSystemLoginURL = "https://example.com/"; //需要访问的华为云服务地址 String targetConsoleURL = "https://console.huaweicloud.com/iam/?region=cn-north-4"; //创建云服务登录地址FederationProxyUrl,作为Location返回给浏览器。 String FederationProxyUrl = authURL + "?idp_login_url=" + URLEncoder.encode(enterpriseSystemLoginURL, "UTF-8") + "&service=" + URLEncoder.encode(targetConsoleURL, "UTF-8") + "&logintoken=" +URLEncoder.encode(loginToken, "UTF-8");
  • Python示例代码 以下示例说明了如何使用Python编程的方式创建云服务登录地址FederationProxyUrl,该示例基于华为云开发者 Python 软件开发工具包 (Python SDK)开发。 from huaweicloudsdkcore.auth.credentials import GlobalCredentials from huaweicloudsdkcore.http.http_config import HttpConfig from huaweicloudsdkiam.v3 import * import urllib # 使用全局域名获取自定义代理登录票据 endpoint = "https://iam.myhuaweicloud.com" # 配置客户端属性 config = HttpConfig.get_default_config() config.ignore_ssl_verification = True config.proxy_protocol = "https" config.proxy_host = "proxy.huawei.com" config.proxy_port = 8080 credentials = GlobalCredentials(ak, sk, domain_id) # 使用IAM userB的domainID/ak/sk,初始化指定IAM客户端 {Service}Client,用户B的创建方式见“创建IAM用户”章节 client = IamClient().new_builder(IamClient) \ .with_http_config(config) \ .with_credentials(credentials) \ .with_endpoint(endpoint) \ .build() # CreateTemporaryAccessKeyByToken # 调用通过token获取临时访问密钥和securitytoken接口获取具有临时身份的访问密钥和securityToken # 访问密钥和securitytoken的默认有效期为900秒,即15分钟,取值范围为15分钟-24小时,这里设置有效期为3600秒,即一小时。 # 注意: 下一步获取自定义代理登录票据logintoken时,如果您设置了有效期,则有效期不能大于这里获取的securitytoken的剩余有效时间。 identity_methods = ["token"] identity_token = IdentityToken(duration_seconds=3600) body = CreateTemporaryAccessKeyByTokenRequestBody( TokenAuth(TokenAuthIdentity(methods=identity_methods, token=identity_token))) request = CreateTemporaryAccessKeyByTokenRequest(body) create_temporary_access_key_by_token_response = client.create_temporary_access_key_by_token(request) credential = create_temporary_access_key_by_token_response.credential # CreateLoginToken # 获取自定义代理登录票据logintoken。 # logintoken是系统颁发给自定义代理用户的登录票据,承载用户的身份、session等信息。 # 调用自定义代理URL登录云服务控制台时,可以使用本接口获取的logintoken进行认证。 # 自定义代理登录票据logintoken的有效期默认为600秒,即10分钟,取值范围为10分钟-12小时,这里设置为1800秒,即半小时。 # 注意:自定义代理登录票据logintoken的有效期不能大于上一步获取的securitytoken的剩余有效时间。 login_token_security_token = LoginTokenSecurityToken(access=credential.access, secret=credential.secret, id=credential.securitytoken, duration_seconds=1800) body = CreateLoginTokenRequestBody(LoginTokenAuth(login_token_security_token)) request = CreateLoginTokenRequest(body) create_login_token_response = client.create_login_token(request) login_token = create_login_token_response.x_subject_login_token #自定义代理登录地址 auth_URL = "https://auth.huaweicloud.com/authui/federation/login" #企业管理系统登录地址 enterprise_system_login_URL = "https://example.com/" #需要访问的华为云服务地址 target_console_URL = "https://console.huaweicloud.com/iam/?region=cn-north-4" # 创建云服务登录地址FederationProxyUrl,作为Location返回给浏览器。 FederationProxyUrl = auth_URL + "?idp_login_url=" + urllib.parse.quote( enterprise_system_login_URL) + "&service=" + urllib.parse.quote( target_console_URL) + "&logintoken=" + urllib.parse.quote(login_token) print(FederationProxyUrl)
  • 权限 权限根据授权的精细程度,分为策略和角色。 角色:角色是IAM最初提供的一种粗粒度的授权能力,当前有部分云服务不支持基于角色的授权。 角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 策略:策略是IAM最新提供的一种细粒度授权的能力,可以精确到具体操作、资源、条件等。使用基于策略的授权是一种更加灵活地授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对ECS服务,管理员能够控制IAM用户仅能对某一类云服务器的资源进行指定的管理操作。策略包含系统策略和自定义策略。 云服务在IAM预置了常用授权项,称为系统策略。管理员给用户组授权时,可以直接使用这些系统策略,系统策略只能使用,不能修改。如果管理员在IAM控制台给用户组或者委托授权时,无法找到特定服务的系统策略,原因是该服务暂时不支持IAM,管理员可以通过给对应云服务提交工单,申请该服务在IAM预置权限。 如果系统策略无法满足授权要求,管理员可以根据各服务支持的授权项,创建自定义策略,并通过给用户组授予自定义策略来进行精细的访问控制,自定义策略是对系统策略的扩展和补充。目前支持可视化视图、JSON视图两种自定义策略配置方式。 图4 权限内容示例
  • 虚拟MFA 虚拟MFA(Multi-Factor Authentication,简称MFA),是一款能产生6位数字认证码的应用程序,遵循基于时间的一次性密码 (Time-Based One-Time Password,TOTP)标准。MFA设备可以基于硬件也可以基于软件,华为云目前仅支持基于软件的虚拟MFA,即虚拟MFA应用程序,可以在移动硬件设备(包括智能手机)上运行,获取认证码并进行身份认证。关于虚拟MFA的详细使用方法请参考:虚拟MFA。
  • 身份凭证 身份凭证是识别用户身份的依据,您通过控制台或者API访问华为云时,需要使用身份凭证来通过系统的鉴权认证。身份凭证包括密码和访问密钥,您可以在IAM中管理账号以及账号下IAM用户的身份凭证。 密码:常见的身份凭证,密码可以用来登录控制台,还可以调用API接口。 访问密钥:即AK/SK(Access Key ID/Secret Access Key),调用API接口的身份凭证,不能登录控制台。访问密钥中具有验证身份的签名,通过加密签名验证可以确保机密性、完整性和请求双方身份的正确性。
  • 用户组 用户组是IAM用户的集合,IAM可以通过用户组功能实现用户的授权。您创建的IAM用户,加入特定用户组后,将具备对应用户组的权限。当某个IAM用户加入多个用户组时,此IAM用户同时拥有多个用户组的权限,即多个用户组权限的全集。 “admin”为系统缺省提供的用户组,具有所有云服务资源的操作权限。将IAM用户加入该用户组后,IAM用户可以操作并使用所有云资源,包括但不仅限于创建用户组及用户、修改用户组权限、管理资源等。 图3 用户组与用户
  • 请求消息 请求参数 参数 是否必选 参数类型 取值范围 描述 search_type 是 String [email|mobile|name] 该字段内容可填为:“email”、“mobile”或“name”。 search_value 是 String 最大长度:64 手机号、邮箱或登录名称。 手机号需符合正则表达式 ^\d{4}-\d+$;包括国家码,以00开头,格式:00XX-XXXXXXXX。目前手机号仅支持以86开头的国家码。 邮箱需为含有@的正确格式的完整邮箱地址。 name:符合正则表达式^([a-zA-Z-]([a-zA-Z0-9_-]){4,31})$,长度5-32;不能以“op_”或“shadow_”开头且不能全为数字,且只能以字母(不区分大小写)或者-开头。 请求示例 POST https://bss.myhuaweicloud.com/v2/partners/sub-customers/users/check-identity HTTP/1.1 Content-Type: application/json X-Auth-Token:MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ { "search_type": "name", "search_value": "ceshiyonghu001" }
  • 响应消息 响应参数 参数 参数类型 取值范围 描述 error_code String 最大长度:16 状态码。具体请参考状态码。只有失败才会返回这个参数。 error_msg String 最大长度:1024 错误描述信息。只有失败才会返回这个参数。 check_result String 最大长度:32 available:该登录名称/手机号/邮箱有效。 used_by_user:该登录名称/手机号/邮箱已被占用。 响应示例 HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 Content-Length: length Date: response time { "error_code": "CBC.0000", "error_msg": "success", "check_result": "available" }
  • 按需计量 定义 云商店联营SaaS商品支持按需计量:按需付费、按需套餐包2种计费方式。 按需付费:每个计费周期分别统计各资源的实际使用量,并根据使用量*单价的方式计算出费用,然后从账户余额中扣除对应金额。 按需费套餐包:客户开通按需付费后,可以先预付费按需套餐包,每个计费周期分别统计各资源的实际使用量,使用时优先扣除资源包中的额度,超出部分按“使用量*单价”方式计算出费用,然后从账户余额中扣除对应金额。
  • 操作步骤 在 FusionInsight Manager,单击“租户资源”。 单击“动态资源计划”页签。 单击“队列配置”页签。 在指定租户资源名的“操作”列,单击“修改”。 在“租户资源管理”页签左侧租户列表,单击目标的租户,切换到“资源”页签,单击“队列配置(队列名)”后面的也能打开修改队列配置页面。 一个队列只能绑定一个非default资源池。 对于“每个YARN容器最多分配核数”、“每个YARN容器最大分配内存(MB)”、“最多运行任务数”、“每个用户最多运行任务数”和“最多挂起任务数”等参数,为便于操作,当子租户值为-1时,父租户值可以设置为具体限制值;当父租户设置为具体限制值时,子租户可以设置为-1。 “每个YARN容器最多分配核数”和“每个YARN容器最大分配内存(MB)”需要同时修改为非-1的值才会生效。 对于开启了跨资源池调度的队列,在作业运行过程中不能删除已有资源池,否则可能会导致运行中的作业申请不到资源而持续阻塞。同样如果在作业运行过程中为队列配置新的资源池,那么此时已经处于运行状态的队列可能不能立即使用到新资源池的资源,新增的资源仅对修改后提交的作业有效。 表1 队列配置参数 参数名 描述 AM最多占有资源(%) 表示当前队列内所有Application Master所占的最大资源百分比。 每个YARN容器最多分配核数 表示当前队列内单个YARN容器可分配的最多核数,默认为-1,表示取值范围内不限制。 每个YARN容器最大分配内存(MB) 表示当前队列内单个YARN容器可分配的最大内存,默认为-1,表示取值范围内不限制。 最多运行任务数 表示当前队列最多同时可执行任务的数目,默认为-1,表示取值范围内不限制(为空意义相同),为0表示不可执行任务。取值范围为-1~2147483647。 每个用户最多运行任务数 表示每个用户在当前队列中最多同时可执行任务的数目,默认为-1,表示取值范围内不限制(为空意义相同),为0表示不可执行任务。取值范围为-1~2147483647。 最多挂起任务数 表示当前队列最多同时可挂起任务的数目,默认为-1,表示取值范围内不限制(为空意义相同),为0表示不可挂起任务。取值范围为-1~2147483647。 资源分配规则 表示单个用户任务间的资源分配规则,包括FIFO和FAIR。 一个用户若在当前队列上提交了多个任务,FIFO规则代表一个任务完成后再执行其他任务,按顺序执行。FAIR规则代表各个任务同时获取到资源并平均分配资源。 默认资源标签 表示在指定资源标签(Label)的节点上执行任务。 跨资源池调度 表示当前队列内Container是否支持跨资源池调度。(仅 MRS 3.3.0及之后版本支持配置该参数) default队列不支持开启跨资源池调度。 AM跨资源池调度 表示当前队列内Application Master是否支持跨资源池调度。(仅MRS 3.3.0及之后版本支持配置该参数) default队列不支持开启AM跨资源池调度。 Active状态 ACTIVE表示当前队列可接受并执行任务。 INACTIVE表示当前队列可接受但不执行任务,若提交任务,任务将处于挂起状态。 Open状态 OPEN表示当前队列处于打开状态。 CLOSED表示当前队列处于关闭状态,若提交任务,任务直接会被拒绝。 故障时是否队列迁移 集群开启单集群跨AZ高可用时,如果AZ故障后,需要当该租户正在运行的队列重新提交至其他AZ,可设置“故障时是否队列迁移”参数为“是”。 单击“确定”完成配置。
  • 视频点播 服务默认加速域名SSL证书更新公告 VOD历史版本为用户分配的默认加速域名,格式:*.cdn-vod.huaweicloud.com,其SSL证书将于2024年4月15日过期。届时,我们会更新SSL证书,更新后的SSL证书密钥长度会提升至3072位。用户需确认目前使用的端侧设备能兼容升级后的SSL证书,确保3072位密钥的正常验证和使用。 本次VOD默认加速域名的SSL证书更新生效日期为2024年4月7日,请您关注域名SSL证书的更新,并及时做出业务调整。 若您有任何疑问,可直接联系客户经理或提交工单给我们。衷心感谢各位用户对本产品的信赖与支持!
  • 使用模板创建测试工程 登录性能测试服务控制台,在左侧导航栏中选择“总览”,进入总览页。 PerfTest定义了如下模板: 选择一网通办系统场景,一网通办系统测试工程即创建成功。测试工程创建成功后,测试用例已按模板创建成功。 选择流媒体场景,流媒体测试工程即创建成功。测试工程创建成功后,测试用例已按模板创建成功。 选择秒杀场景,秒杀测试工程即创建成功。测试工程创建成功后,测试用例已按模板创建成功。 选择电商场景,电商测试工程即创建成功。测试工程创建成功后,测试用例已按模板创建成功。 选择极速创建场景,极速创建测试工程即创建成功。测试工程创建成功后,测试用例已按模板创建成功。 可根据实际业务需求修改测试用例,详细操作请参见PerfTest测试用例管理。
  • 创建JMeter测试工程 登录性能测试服务控制台,在左侧导航栏中选择“JMeter测试工程”,单击“创建JMeter测试工程”。 参照表1设置基本信息。 表1 创建JMeter测试工程 参数 参数说明 工程名称 新建测试工程的名称。 说明: 工程名称只能以汉字、字母、数字、中划线(-)、下划线(_)、斜线(/)和点(.)组成,最长128个字节。 描述 新建测试工程的描述信息。 配置完成后,单击“确定”。 JMeter测试工程创建成功后,即可为测试工程添加测试计划,详细操作请参见管理JMeter测试计划。
  • 操作步骤 登录性能测试服务控制台,在左侧导航栏中选择“PerfTest测试工程”。 在待编辑PerfTest测试工程所在行,单击工程名称进入测试工程详情页面。 选择“测试用例”页签,在左侧“用例列表”下选择待配置的测试用例。 选择页面右侧的“压力配置”,参照表1 添加阶段设置阶段参数。 一个用例最多添加1000个阶段。 表1 添加阶段 参数 参数说明 阶段名称 自定义阶段名称,用于区分不同的阶段,比如首页测试。 压力模式 压力模式目前支持以下几种模式: 并发模式:用例按照固定或者梯度递增的并发用户数进行压测。 TPS模式:用例按照每秒指定的事务数进行压测。TPS模式中,一个虚拟用户执行一次测试用例为一个事务。实际压测时,能否达到指定的事务数取决于最大并发数和事务平均响应时延。 摸高模式:用例按照指定的爬坡时间由最小并发用户数线性递增到最大用户并发数后保持在峰值并发用户数进行压测。 浪涌模式:用例按照周期性变化的并发用户数进行压测,每个周期先按照最小并发用户数压测,再按照最大并发用户数压测。按最大并发用户数压测时长可自定义,周期数为设定的浪涌次数。 震荡模式:用例按照周期性波动的并发用户数进行压测,每个周期用户数在最小并发数和最大并发数之间波动。周期数为设定的震荡次数。 智能摸高:用例按照指定的单步执行时长由最小并发用户数按递增并发数逐步到最大用户并发数后保持在峰值并发用户数进行压测。 说明: 执行器按设定的梯度逐步增加并发数进行压测,压测时,后台会为每个并发梯度生成一个“阶段数据”,当某个阶段的数据相比前一个阶段有发生明显的性能拐点时,系统判定到达性能峰值。其中性能拐点通过以下场景定义:成功率小于阈值(默认100%)、RPS曲线下降、rt/tp90/tp99曲线出现较大的斜率变化。 执行策略 执行策略目前支持按时长和按次数。 按时长:按照设定的持续时间进行压测,不限定次数。 按次数:按照设定的发送总次数进行压测。 说明: 当前仅并发模式和TPS模式涉及该参数。 调压模式 在压测过程中调整压力,目前支持自动调压和手动调压。 自动调压:自动调压的并发上限为所有阶段中最高的并发用户数。 手动调压:手动调压的并发上限为最大并发数。手动调压后原有多阶段压力配置失效。 说明: 当前仅并发模式和TPS模式且执行策略为按时长时涉及该参数。 当“压力模式”为“并发模式”、“执行策略”为“按时长”,“调压模式”为“自动调压”时,需要配置以下参数: 并发数 并发数指在同一时刻内,对系统进行业务操作的用户数量。 在性能测试中为用户在定义测试任务阶段设置的虚拟用户数。 起始并发数 执行测试用例的起始虚拟用户数。 爬坡时间(秒) 从起始并发数加压到最大并发数所需要的时间。 压测时长(分钟) 本阶段压测执行的时间。 当“压力模式”为“并发模式”、“执行策略”为“按时长”,“调压模式”为“手动调压”时,需要配置以下参数: 最大并发数 执行测试用例的最大虚拟用户数。 起始并发数 执行测试用例的起始虚拟用户数。 压测时长(分钟) 本阶段压测执行的时间。 当“压力模式”为“并发模式”、“执行策略”为“按次数”,需要配置以下参数: 说明: 只能添加单阶段。 并发数 并发用户数指在同一时刻内,对系统进行业务操作的用户数量。 在性能测试服务中为用户在定义测试任务阶段设置的虚拟用户数。 发送总次数 该用例在一次任务的运行中,将按照运行次数计算,到达设定数值,该任务下此用例的性能测试将终止。 说明: 发送总次数不小于并发用户数。 当“压力模式”为“TPS模式”、“执行策略”为“按时长”且“调压模式”为“自动调压”,需要配置以下参数: 最大并发数 执行测试用例的最大虚拟用户数。 TPS值 设定每秒执行事务的数量。 压测时长(分钟) 本阶段压测执行的时间。 当“压力模式”为“TPS模式”、“执行策略”为“按时长”且“调压模式”为“手动调压”,需要配置以下参数: 最大并发数 执行测试用例的最大虚拟用户数。 起始并发数 执行测试用例的起始虚拟用户数。 TPS值 设定每秒执行事务的数量。 压测时长(分钟) 本阶段压测执行的时间。 当“压力模式”为“TPS模式”、“执行策略”为“按次数”,需要配置以下参数: 说明: 只能添加单阶段。 最大并发数 执行测试用例的最大虚拟用户数。 TPS值 设定每秒执行事务的数量。 发送总次数(次) 该用例在一次任务的运行中,将按照运行次数计算,到达设定数值,该任务下此用例的性能测试将终止。 说明: 发送总次数不小于并发用户数。 当“压力模式”为“摸高模式”,需要配置以下参数: 起始并发数 执行测试用例的起始虚拟用户数。 最大并发数 执行测试用例的最大虚拟用户数。 爬坡时间(秒) 虚拟用户数从起始并发数线性递增到最大并发数的时长。 说明: 建议爬坡时间小于持续时间。爬坡时间与持续时间相同且并发量较大的情况下,采样到的最大并发可能会略小于设置的最大并发数。 压测时长(分钟) 压测执行的时间。 摸高期望指标 响应时间:最大值为60000ms。 成功率:最小值为0。 摸高模式下,期望被测系统的请求响应时间小于等于输入值,请求成功率大于等于输入值,摸高分析规则为其中一个指标首次出现连续6秒未达标的情况时(比如响应时间连续6s大于期望值),摸高分析完成后,取其中第一秒的数据为摸高结果。 说明: 当用例执行达到探底期望指标后,任务不会停止,会继续执行。 当“压力模式”为“浪涌模式”,需要配置以下参数: 压测时长(分钟) 压测执行的时间。 最大并发 执行测试用例的最大虚拟用户数,也是虚拟用户数变化过程峰值。 最小并发 执行测试用例的最小虚拟用户数,也是虚拟用户数变化过程的最小值。 浪涌次数 在持续时间内,虚拟用户数变化的周期数。 峰值持续时间(秒) 一个周期内,按最大并发虚拟用户数压测的持续时间。 当“压力模式”为“震荡模式”,需要配置以下参数: 压测时长(分钟) 压测执行的时间。 最大并发 执行测试用例的最大虚拟用户数,也是虚拟用户数波动过程的波峰值。 最小并发 执行测试用例的最小虚拟用户数,也是虚拟用户数波动过程的波谷值。 震荡次数 在持续时间内,虚拟用户数波动变化的周期数。 当“压力模式”为“智能摸高模式”,需要配置以下参数: 起始并发数 执行测试用例的起始虚拟用户数。 递增并发数 每步增加的虚拟用户数。 说明: 递增并发数非线性增长,执行时会指数增加。 单步执行时长(秒) 每步执行的时间,建议配置至少20秒以上。 压测时长(分钟) 压测执行的时间,建议配置30分钟以内。 说明: 当成功率小于阈值(默认100%)、RPS曲线下降、rt/tp90/tp99曲线出现较大的斜率变化,任务会停止压测。 配置完成后,单击“保存”
  • IResultV1接口实现 package main import ( "fmt" "time" ) const ( InnerVarName = "__name" InnerVarGoroutineId = "__goroutine_id" InnerVarExecutorIndex = "__executor_index" InnerVarExecutorCount = "__executor_count" ) type IResultV1 interface { GetName() string GetUrl() string GetMethod() string GetRequestHeader() map[string]string GetRequestBody() string GetSentBytes() int GetResponseCode() int GetResponseHeader() map[string]string GetResponseBody() string GetReceivedBytes() int GetFailureMessage() string IsSuccess() bool GetBeginTime() int64 GetEndTime() int64 GetSubResults() []interface{} } //acquireResult generates root result. //just call one time on the main func and generate sub result using parent.addSub() func acquireResult(name string) *Result { result := &Result{} result.Name = name result.RequestHeader = map[string]string{} result.ResponseHeader = map[string]string{} result.ResponseCode = 200 result.Success = true result.BeginTime = time.Now().UnixMilli() result.EndTime = time.Now().UnixMilli() return result } type Result struct { Name string Url string Method string RequestHeader map[string]string RequestBody string SentBytes int ResponseCode int ResponseHeader map[string]string ResponseBody string ReceivedBytes int FailureMessage string Success bool BeginTime int64 EndTime int64 SubResults []interface{} SubIndex int } func (r *Result) GetName() string { return r.Name } func (r *Result) GetUrl() string { return r.Url } func (r *Result) GetMethod() string { return r.Method } func (r *Result) GetRequestHeader() map[string]string { return r.RequestHeader } func (r *Result) GetRequestBody() string { return r.RequestBody } func (r *Result) GetSentBytes() int { return r.SentBytes } func (r *Result) GetResponseCode() int { return r.ResponseCode } func (r *Result) GetResponseHeader() map[string]string { return r.ResponseHeader } func (r *Result) GetResponseBody() string { return r.ResponseBody } func (r *Result) GetReceivedBytes() int { return r.ReceivedBytes } func (r *Result) GetFailureMessage() string { return r.FailureMessage } func (r *Result) IsSuccess() bool { return r.Success } func (r *Result) GetBeginTime() int64 { return r.BeginTime } func (r *Result) GetEndTime() int64 { return r.EndTime } func (r *Result) GetSubResults() []interface{} { return r.SubResults } //begin records begin time, do not forget call this function to update func (r *Result) begin() { r.BeginTime = time.Now().UnixMilli() } //end records end time, do not forget call this function to update func (r *Result) end() { r.EndTime = time.Now().UnixMilli() } //addSub adds sub result to parent, call this function adding sub result always. //if name is not empty, renaming will be disabled func (r *Result) addSub(name string) *Result { if name == "" { name = fmt.Sprintf("%s-%d", r.Name, r.SubIndex) r.SubIndex++ } else { name = fmt.Sprintf("%s-%s", r.Name, name) } sub := acquireResult(name) r.SubResults = append(r.SubResults, sub) return sub } 表2 IResultV1接口结构说明表 名称 含义 补充说明 Name 请求名称 根result需使用内置参数__name设置。 Url 请求地址 - Method 方法 用于HTTP的POST,GET等。 RequestHeader 请求头 用于HTTP。 RequestBody 请求数据 建议不要记录请求较大的数据,例如上传文件,仅记录摘要即可。 SentBytes 发送字节数 - ResponseCode 响应码 记录响应状态,可以用于HTTP状态码或者自定义状态码,用于报告统计响应状态数量用于分析。 响应码范围:[100,599] ResponseHeader 响应头 用于HTTP。 ResponseBody 响应数据 建议不要记录响应较大的数据,例如下载文件,仅记录摘要即可。 ReceivedBytes 接收字节数 - FailureMessage 失败信息 - Success 是否成功 - BeginTime 请求开始时间 单位:毫秒 EndTime 请求结束时间 单位:毫秒 SubResults 子请求 当自定义请求需要多个子请求共同完成,需要使用该字段记录各个子请求执行情况。 SubIndex 子请求索引 当使用父Result的addSub方法生成子Result时,如果不为子Result自定义名称,将使用该字段自增产生索引用于生成子Result名称。
  • 请求签名 func(map[string]string) interface{} 入参:性能测试服务内置参数以及自定义参数。 出参:interface需实现IResultV1接口,如有必要,请使用性能测试服务提供的IResultV1接口实现。 表1 性能测试服务内置参数 名称 含义 补充说明 __name 请求名称 - __goroutine_id 协程id - __executor_index 执行机索引 序号从0开始。 __executor_count 执行机总数 -
  • 测试用例简介 PerfTest测试工程主要由测试用例、测试任务和性能报告组成。事务库和智能分析属于增强能力。 测试用例、测试任务、性能报告分别对应了性能测试活动的三个主要环节。 图1 性能测试活动流程 其中测试用例是基于某个性能压测场景建立的测试模型。测试任务是基于已定义的(若干个)测试模型发起一次性能测试的活动。性能报告是测试任务执行的结果,呈现的是被测系统在高并发场景下的性能指标。 图2 测试用例、测试任务和性能报告之间的关系 父主题: 测试用例说明
  • 操作步骤 登录性能测试服务控制台,在左侧导航栏中选择“PerfTest测试工程”。 在待编辑PerfTest测试工程所在行,单击工程名称进入测试工程详情页面。 选择“测试用例”页签,可以在页面左侧查看当前已创建的用例目录结构。可以通过以下两种方式创建用例: 在当前目录下创建用例:直接单击“创建用例”。 图1 在当前目录下创建用例 在指定目录下创建用例:将鼠标光标放置在指定目录上,单击,在下拉框中选择“创建用例”。 图2 在指定目录下创建用例 单击“保存”。
  • 操作步骤 登录性能测试服务控制台,在左侧导航栏中选择“PerfTest测试工程”。 在待编辑PerfTest测试工程所在行,单击工程名称进入测试工程详情页面。 选择“测试任务”页签,单击“创建任务”。 输入测试“任务名”,选择执行策略。 执行策略分为串行和并行: 串行:每个测试任务下的用例按顺序串行执行。 并行:每个测试任务下的用例并行执行。 单击“添加用例”,在弹出的对话框中选择已创建好的用例。 一个测试用例可以被多个测试任务选择添加。 配置完成后,单击“保存”。
  • 什么是分布式消息服务RabbitMQ版 分布式消息服务RabbitMQ版完全兼容开源RabbitMQ,为您提供即开即用、消息特性丰富、灵活路由、高可用、监控和告警等特性,广泛应用于秒杀、流控、系统解耦等场景。 即开即用 分布式消息服务RabbitMQ版提供单机和集群的消息实例,拥有丰富内存规格,您可以通过控制台直接下单购买并创建,无需单独准备服务器资源。 消息特性丰富 支持AMQP协议,支持普通消息、广播消息、死信、延迟消息等特性。 灵活路由 在RabbitMQ中,生产者将消息发送到交换器,由交换器将消息路由到队列中。交换器支持Direct、Topic、Headers和Fanout四种路由方式,同时支持交换机组合和自定义。 高可用 RabbitMQ集群提供仲裁队列,在RabbitMQ节点间进行队列数据的复制,在一个节点宕机时,队列依旧可以正常运行。 监控和告警 支持对RabbitMQ实例状态进行监控,支持对集群每个代理的内存、CPU、网络流量等进行监控。如果集群或节点状态异常,将触发告警。
  • 状态管理 函数实例的生成 创建函数实例调用句柄时,系统会自动生成新的状态实例,并加载到函数中执行。 创建函数实例调用句柄方式,各语言可参照demo模板。以下以java为例: 通过f = new Function (context, functionName) 不指定函数实例逻辑名称创建。 通过f = new Function (context, functionName, instanceName) 指定一个全新的函数实例逻辑名称 instanceName 值调用有状态函数。 函数实例调用句柄的恢复 通过指定的函数实例逻辑名称instanceName恢复获取函数实例调用句柄。 f = new Function (context) f.getInstance (functionName, instanceName) 函数实例的访问 开发者可以通过context.state访问当前函数实例绑定的状态数据值。 状态的操作 运行函数前,系统会依据函数实例调用句柄所绑定的函数实例ID自动加载状态数据到context.state中。 开发者可以通过context.state访问当前函数实例绑定的状态数据值。 通过f.saveState()接口保存状态数据的修改。 当函数执行结束后,如果调用了f.saveState()接口,系统会自动持久化状态数据。如果未调用f.saveState()接口,则调用结束之后,状态数据不会被保存。
  • 后续操作 当函数挂载了文件系统配置后,对函数访问路径的读写就相当于对相关文件系统的读写。 如果把日志路径配置为函数访问路径的子目录,就可以轻松实现函数日志的持久化。 可以参见如下步骤,使用函数统计web服务器访问情况(应用模板),对运行在云上的服务器进行 日志分析 。 登录 函数工作流 控制台,在左侧导航栏选择“函数模板”。 在“函数模板”界面右上角搜索框中,输入“统计web服务器访问情况”进行搜索。 在搜索结果中,单击“使用模板”进入配置界面,如图2所示,请您根据实际业务进行参数配置。 参数配置完成后,单击“创建函数”,完成“统计web服务器访问情况”的函数创建。 图2 函数模板
  • 调用API 配置请求地址相关参数。 API调用场景 API请求参数配置 使用域名调用API ROMA API允许使用服务分配的子域名或服务绑定的域名调用API,无需另外配置。 使用IP调用API ROMA API的实例配置参数“app_route”已设置为“on”,允许通过IP访问API。 允许使用IP地址调用API,无需另外配置。 配置认证参数。 API认证方式 API请求参数配置 APP认证 签名认证 使用获取的SDK对API请求进行签名,具体请参考APP认证开发。 简易认证 在ROMA API请求中添加Header参数“X-Apig-AppCode”,参数值为获取API的请求信息中获取到的AppCode。 双重认证 在API请求参数中增加自定义认证信息进行认证。 凭证认证 在API请求中添加Header参数“X-HW-ID”,获取API的请求信息中获取到凭证信息的Key。 在API请求中添加Header参数“X-HW-AppKey”,获取API的请求信息中获取到凭证信息的Secret。 app_api_key认证 ROMA API的实例配置参数“app_api_key”已设置为“on”,开启app_api_key认证。 在API请求中添加Header或Query参数“apikey”,参数值为获取API的请求信息中获取到的Key或AppKey。 app_secret认证 ROMA API的实例配置参数“app_secret”已设置为“on”,开启app_secret认证,且“app_api_key”已设置为“off”,关闭app_api_key认证。 在API请求中添加Header参数“X-HW-ID”,参数值为API所授权的Key或客户端的AppKey。 在API请求中添加Header参数“X-HW-AppKey”,参数值为获取API的请求信息中获取到的Secret或AppSecret。 app_basic认证 ROMA API的实例配置参数“app_basic”已设置为“on”,开启app_basic认证。 在API请求中添加Header参数“Authorization”,参数值为"Basic "+base64(appkey+":"+appsecret),其中appkey和appsecret分别为获取API的请求信息中获取到的Key和Secret(或AppKey和AppSecret)。 app_jwt认证 ROMA API的实例配置参数“app_jwt”已设置为“on”,开启app_jwt认证。 在API请求中添加Header参数“Timestamp”,参数值为当前时间的Unix时间戳。 在API请求中添加Header参数“Authorization”,参数值为sha256(appkey+appsecret+timestamp),其中appkey和appsecret分别为获取API的请求信息中获取到的Key和Secret(或AppKey和AppSecret),timestamp为当前时间的Unix时间戳。 华为IAM认证 Token认证 先获取云服务平台的认证Token,然后在API请求中携带Token进行认证。 AK/SK认证 调用API时,使用获取的SDK对API请求进行签名,具体请参考IAM认证开发(AK/SK)。 双重认证 在API请求参数中增加自定义认证信息进行认证。 自定义认证 在API请求参数中携带认证信息进行认证。 无认证 无需认证,可直接调用API。
  • 获取API的请求消息 在调用API前,您需要向API管理者获取API的请求信息,包括访问域名、请求协议、请求方法、请求路径以及请求参数。 根据API使用的安全认证方式,还要获取相关的请求认证信息: APP认证: 签名认证:向API管理者获取该API所授权应用的Key和Secret(或客户端的AppKey和AppSecret),以及用于调用API的SDK。 简易认证:向API管理者获取该API所在应用的AppCode。 其他认证:向API管理者获取该API所授权应用的Key和Secret(或客户端的AppKey和AppSecret)或凭证信息。 华为IAM认证:通过云服务平台的账号凭证(账号和密码 获取Token 或者AK/SK)进行认证。如果使用AK/SK进行认证,还需要向API管理者获取用于调用API的SDK。 自定义认证:向API管理者获取请求参数中要携带的自定义认证信息。 无认证:无需认证信息。
共100000条