华为云用户手册

  • 使用须知 配置安全组规则前,您需要规划好安全组内实例的访问策略,常见安全组规则配置案例请参见安全组配置示例。 安全组的规则数量有限制,请您尽量保持安全组内规则的简洁,详细约束请参见安全组的限制。 在安全组规则中放开某个端口后,您还需要确保实例内对应的端口也已经放通,安全组规则才会对实例生效,具体请参见检查安全组规则是否生效。 通常情况下,同一个安全组内的实例默认网络互通。当同一个安全组内实例网络不通时,可能情况如下: 当实例属于同一个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 第一次正式发布。
  • TPC-H样例数据简介 TPC-H(商业智能计算测试) 是交易处理效能委员会(TPC,Transaction Processing Performance Council) 组织制定的用来模拟决策支持类应用的一个测试集。目前,在学术界和工业界普遍用来评价决策支持技术方面应用的性能。这种商业测试可以全方位评测系统的整体商业计算综合能力,对厂商的要求更高,同时也具有普遍的商业实用意义,目前在银行信贷分析和信用卡分析、电信运营分析、税收分析、烟草行业决策分析中都有广泛的应用。 TPC-H 基准测试是由 TPC-D(由 TPC 组织于 1994 年指定的标准,用于决策支持系统方面的测试基准)发展而来的。TPC-H用3NF实现了一个数据仓库,共包含8个基本关系,其数据量可以设定从1G~3T不等。TPC-H 基准测试包括 22 个查询(Q1~Q22),其主要评价指标是各个查询的响应时间,即从提交查询到结果返回所需时间。TPC-H 基准测试的度量单位是每小时执行的查询数( QphH@size),其中“H”表示每小时系统执行复杂查询的平均次数,“size”表示数据库规模的大小,能够反映出系统在处理查询时的能力。TPC-H 是根据真实的生产运行环境来建模的,这使得它可以评估一些其他测试所不能评估的关键性能参数。总而言之,TPC组织颁布的TPC-H 标准满足了数据仓库领域的测试需求,并且促使各个厂商以及研究机构将该项技术推向极限。 本示例将演示DLI直接对存储在OBS中的TPC-H数据集进行查询的操作,DLI已经预先生成了100M的TPC-H-2.18的标准数据集,已将数据集上传到了OBS的tpch文件夹中,并且赋予了只读访问权限,方便用户进行查询操作。
  • TPC-H的测试和度量指标 TPC-H 测试分解为3 个子测试:数据装载测试、Power测试和Throughput测试。建立测试数据库的过程被称为装载数据,装载测试是为测试DBMS装载数据的能力。装载测试是第一项测试,测试装载数据的时间,这项操作非常耗时。Power 测试是在数据装载测试完成后,数据库处于初始状态,未进行其它任何操作,特别是缓冲区还没有被测试数据库的数据,被称为raw查询。Power测试要求22 个查询顺序执行1 遍,同时执行一对RF1 和RF2 操作。最后进行Throughput 测试,也是最核心和最复杂的测试,更接近于实际应用环境,与Power 测试比对SUT 系统的压力有非常大的增加,有多个查询语句组,同时有一对RF1 和RF2 更新流。
  • 操作场景 增强型跨源支持项目级授权,授权后,项目内的用户具备该增强型跨源连接的操作权。可查看该增强型跨源连接、可将创建的弹性资源池与该增强型跨源连接绑定、可自定义路由等操作。以此实现增强型跨源连接的跨项目应用。本节操作介绍对增强型跨源连接授权或回收权限的操作步骤。 如果被授权的项目属于相同区域(region)的不同用户,则需使用被授权项目所属的用户账号进行登录。 如果被授权的项目属于相同区域(region)的同一用户,则需使用当前账号切换到对应的项目下。
  • 应用示例 项目B需要访问项目A上的数据源,对应操作如下。 对于项目A: 使用项目A对应的账号登录DLI服务。 通过对应数据源的VPC信息在DLI服务中创建增强型跨源连接“ds”。 将增强型跨源连接“ds”授权给项目B。 对于项目B: 使用项目B对应的账号登录DLI服务。 对增强型跨源连接“ds”进行绑定队列操作。 (可选)设置主机信息,创建路由。 通过上述操作项目A的增强型跨源连接与项目B的队列创建了对等连接和路由,即可在项目B的队列上创建作业访问项目A的数据源。
  • 策略字段介绍 以授权用户拥有在所有区域中所有数据库的创建表权限为例进行说明: { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "dli:database:createTable" ], "Resource": [ "dli:*:*:database:*" ] } ] } Version 版本信息,1.1: 策略。IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。 Effect 作用。包含两类:允许(Allow)和拒绝(Deny),既有Allow又有Deny的授权语句时,遵循Deny优先的原则。 Action 授权项,指对资源的具体操作权限,不超过100个,如图1所示。 图1 DLI授权项 格式为:服务名:资源类型:操作,例:dli:queue:submit_job。 服务名为产品名称,例如dli、evs和vpc等,服务名仅支持小写。资源类型和操作没有大小写,要求支持通配符号*,无需罗列全部授权项。 资源类型可以参考表4中的资源类型。 操作:操作以IAM服务中已经注册的action为准。 Condition 限制条件:使策略生效的特定条件,包括条件键和运算符。 条件键表示策略语句的 Condition 元素中的键值,分为全局级条件键和服务级条件键。 全局级条件键(前缀为g:)适用于所有操作。详细请参考策略语法中的条件键说明。 服务级条件键,仅适用于对应服务的操作。 运算符与条件键一起使用,构成完整的条件判断语句。具体内容请参考表1。 DLI通过IAM预置了一组条件键。下表显示了适用于DLI服务特定的条件键。 表1 DLI请求条件 DLI条件键 类型 运算符 描述 g:CurrentTime 全局级 Date and time 接收到鉴权请求的时间。 说明: 以“ISO 8601”格式表示,例如:2012-11-11T23:59:59Z。 g:MFAPresent 全局级 Boolean 用户登录时是否使用了多因素认证。 g:UserId 全局级 String 当前登录的用户ID。 g:UserName 全局级 String 当前登录的用户名。 g:ProjectName 全局级 String 当前登录的Project。 g:DomainName 全局级 String 当前登录的Domain。 g:ResourceTag 全局级 StringEquals 资源标签键值。 Resource 格式为:服务名:region:domainId:资源类型:资源路径, 通配符号*表示所有,资源类型和资源路径可以参考表4。 示例: "dli:*:*:queue:*": 表示所有的队列。
  • DLI自定义策略样例 示例1:允许 授权用户拥有在所有区域中所有数据库的创建表权限。 { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "dli:database:createTable" ], "Resource": [ "dli:*:*:database:*" ] } ] } 授权用户拥有在所在区域中数据库db中表tb中列col的查询权限。 { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "dli:column:select" ], "Resource": [ "dli:xxx:*:column:databases.db.tables.tb.columns.col" ] } ] } 示例2:拒绝 拒绝策略需要同时配合其他策略使用,即用户需要先被授予部分操作权限策略后,才可以在权限内设置拒绝策略,否则用户无任何权限的情况下,拒绝策略无实际作用。 用户被授予的策略中,一个授权项的作用如果同时存在Allow和Deny,则遵循Deny优先。 授权用户不能创建数据库,删除数据库,提交作业(default队列除外),删除表。 { "Version": "1.1", "Statement": [ { "Effect": "Deny", "Action": [ "dli:database:createDatabase", "dli:database:dropDatabase", "dli:queue:submitJob", "dli:table:dropTable" ], "Resource": [ "dli:*:*:database:*", "dli:*:*:queue:*", "dli:*:*:table:*" ] } ] } 授权用户不能在队列名为demo的队列上提交作业。 { "Version": "1.1", "Statement": [ { "Effect": "Deny", "Action": [ "dli:queue:submitJob" ], "Resource": [ "dli:*:*:queue:queues.demo" ] } ] } 示例3:标签鉴权,指定action绑定Condition,指定g:ResourceTag的key和value。 Condition g:ResourceTag使用表示带有标签key=value的资源,并且资源操作在策略action中包含的可以鉴权通过。 key不区分大小写,并且目前不支持value的模糊匹配。 { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "dli:database:dropDatabase", "dli:table:select", "dli:database:createTable", "dli:table:dropTable" ], "Condition": { "StringEquals": { "g:ResourceTag/key": [ "value" ] } } } ] }
  • 操作场景 通过在DLI控制台创建的Kerberos类型的跨源认证,将数据源的认证信息存储到DLI,无需在SQL作业中配置账号密码,安全访问数据源。 MRS Kafka开启Kerberos认证,未开启SSL认证时,创建Kerberos类型的认证。建表时通过krb_auth_name关联跨源认证。 MRS Kafka开启Kerberos认证,同时开启了SSL认证时,需要同时创建Kerberos和Kafka_SSL类型的认证。建表时分别通过krb_auth_name和ssl_auth_name关联跨源认证。 MRS Kafka未开启Kerberos认证,仅开启了SASL认证时(例如使用账号密码认证PlainLoginModule场景),无需使用跨源认证。 MRS Kafka未开启Kerberos认证,仅开启了SSL认证时,创建Kafka_SSL类型的认证。建表时通过ssl_auth_name关联跨源认证。 MRS Kafka未开启Kerberos认证,开启了SASL认证和SSL认证时,创建Kafka_SSL类型的认证。建表时通过ssl_auth_name关联跨源认证。
  • Kerberos类型跨源认证支持连接的数据源 Kerberos类型跨源认证支持连接的数据源如表1所示。 表1 Kerberos类型跨源认证支持连接的数据源 作业类型 表类型 数据源 约束与限制 Flink OpenSource SQL 源表 HBase MRS安全集群已开启Kerberos认证。 Kafka MRS Kafka开启Kerberos认证。 结果表 HBase MRS安全集群已开启Kerberos认证。 Kafka MRS Kafka开启Kerberos认证。 维表 HBase MRS安全集群已开启Kerberos认证。
  • 队列使用约束限制 DLI服务预置了名为“default”的队列供用户体验,资源的大小按需分配。运行作业时按照用户每个作业的数据扫描量(单位为“GB”)收取计算费用。 队列类型: SQL类型队列:SQL队列支持提交Spark SQL作业。 通用队列:支持Spark程序、Flink SQL、Flink Jar作业。 不支持队列类型切换,如需使用其他队列类型,请重新购买新的队列。 不支持切换队列的计费模式。 队列不支持切换区域。 16CUs队列不支持扩容和缩容。 64CUs队列不支持缩容。 创建队列时,仅支持包年包月队列和按需专属队列选择跨AZ双活,且跨AZ的队列价格为单AZ模式下的2倍。 新创建的队列需要运行作业后才可进行扩缩容。 DLI队列不支持访问公网。 如有访问公网诉求请您参考配置DLI 队列与公网网络联通。 更多队列使用约束限制请参考队列管理概述。
  • 弹性资源池使用约束限制 不支持切换弹性资源池的计费模式。 弹性资源池不支持切换区域。 按需计费的弹性资源池默认勾选专属资源模式,自创建起按自然小时收费。 Flink 1.10及其以上版本的作业支持在弹性资源池运行。 弹性资源池网段设置后不支持更改。 弹性资源池关联队列: 仅支持关联按需计费模式的队列(包括专属队列)。 队列和弹性资源池状态正常,资源未被冻结。 当前仅支持包年包月计费模式的弹性资源池进行规格变更。 仅支持查看30天以内的弹性资源池扩缩容历史。 弹性资源池不支持访问公网。 如有访问公网诉求请您参考配置DLI 队列与公网网络联通。 更多弹性资源池约束限制请参考弹性资源池概述。
  • 跨源认证使用约束限制 仅Spark SQL、和Flink OpenSource SQL 1.12版本的作业支持使用跨源认证。 仅在2023年5月1日后创建的队列,支持Flink作业使用跨源认证。 DLI支持四种类型的跨源认证,不同的数据源按需选择相应的认证类型。 CSS类型跨源认证:适用于“6.5.4”及以上版本的CSS集群且集群已开启安全模式。 Kerberos类型的跨源认证:适用于开启Kerberos认证的MRS安全集群。 Kafka_SSL类型的跨源认证:适用于开启SSL的Kafka。 Password类型的跨源认证:适用于DWS、RDS、DDS、DCS数据源。。 更多跨源认证约束限制请参考跨源认证简介。
  • 资源相关约束限制 数据库 “default”为内置数据库,不能创建名为“default”的数据库。 DLI支持创建的数据库的最大数量为50个。 数据表 DLI支持创建的表的最大数量为5000个。 DLI支持创建表类型: Managed:数据存储位置为DLI的表。 External:数据存储位置为OBS的表。 View:视图,视图只能通过SQL语句创建。 跨源表:表类型同样为External。 创建DLI表时不支持指定存储路径。 数据导入 仅支持将OBS上的数据导入DLI或OBS中。 支持将OBS中CSV,Parquet,ORC,JSON和Avro格式的数据导入到在DLI中创建的表。 将CSV格式数据导入分区表,需在数据源中将分区列放在最后一列。 导入数据的编码格式仅支持UTF-8。 数据导出 只支持将DLI表(表类型为“Managed”)中的数据导出到OBS桶中,且导出的路径必须指定到文件夹级别。 导出文件格式为json格式,且文本格式仅支持UTF-8。 支持跨账号导出数据,即B账户对A账户授权后,A账户拥有B账户OBS桶的元数据信息和权限信息的读取权限,以及路径的读写权限,则A账户可将数据导出至B账户的OBS路径中。 程序包 程序包支持删除,但不支持删除程序包组。 支持上传的程序包类型: JAR:用户jar文件。 PyFile:用户Python文件。 File:用户文件。 ModelFile:用户AI模型文件。 更多资源相关约束限制请参考数据管理。
  • 增强型跨源连接约束限制 在同一队列中,如果同时使用了经典型跨源连接和增强型跨源连接,则经典型跨源连接优先于增强型跨源连接。推荐使用增强型跨源连接。 DLI提供的default队列不支持创建跨源连接。 Flink作业访问DIS,OBS和SMN数据源,无需创建跨源连接,可以直接访问。 增强型跨源仅支持包年包月队列、按需计费模式下的专属队列。 增强型跨源连接需要使用VPC、子网、路由、对等连接功能,因此需要获得VPC(虚拟私有云)的VPC Administrator权限。 可在服务授权中进行设置。 使用DLI增强型跨源时,弹性资源池/队列的网段与数据源网段不能重合。 访问跨源表需要使用已经创建跨源连接的队列。 跨源表不支持Preview预览功能。 检测跨源连接的连通性时对IP约束限制如下: IP必须为合法的IP地址,用“.”分隔的4个十进制数,范围是0-255。 测试时IP地址后可选择添加端口,用":"隔开,端口最大限制5位,端口范围:0~65535。 例如192.168.xx.xx或者192.168.xx.xx:8181。 检测跨源连接的连通性时对域名约束限制如下: 域名的限制长度为1到255的字符串,并且组成必须是字母、数字、下划线或者短横线。 域名的顶级域名至少包含两个及以上的字母,例如.com,.net,.cn等。 测试时域名后可选择添加端口,用":"隔开,端口最大限制为5位,端口范围:0~65535。 例如example.com:8080。 更多增强型跨源连接约束限制请参考增强型跨源连接概述。
  • 监控安全风险 云监控服务为用户的云上资源提供了立体化监控平台。通过云监控您可以全面了解云上的资源使用情况、业务的运行状况,并及时收到异常告警做出反应,保证业务顺畅运行。 DLI服务提供基于云监控服务CES的资源监控能力 DLI已对接云监控服务,提供基于云监控服务的资源监控能力,帮助用户监控账号下的DLI队列,执行自动实时监控、告警和通知操作。用户可以实时掌握队列中的运行作业网络流入速率、网络流出速率、CPU使用率、内存使用率、磁盘利用率、失败作业率、等待作业数等信息。还可以通过云监控服务提供的管理控制台或API接口来检索数据湖探索服务产生的监控指标和告警信息。 关于DLI支持的监控指标请参见数据湖探索监控指标说明及查看指导。 父主题: 安全
  • 修订记录 发布日期 修订记录 2024-03-30 新增产品规格。 2024-03-04 权限管理,补充增强型跨源连接权限与系统权限的说明。 2023-09-18 约束与限制补充增强型跨源连接测试连通性时对IP和域名的约束限制。 2023-09-05 将产品介绍中DLI计费说明移动至计费说明。 2023-08-02 权限管理,补充DLI系统权限依赖关系。 2023-07-03 约束与限制,补充DLI相关功能约束限制说明。 2023-03-13 “计费说明”新增弹性资源池CU时的计费说明。 2023-01-05 权限管理,修改只读权限的说明。 权限管理,新增弹性资源池常用操作与系统权限关系说明。 调整产品介绍手册结构。 2022-11-11 新增安全,包含DLI安全特性相关内容。 2022-08-08 优化“计费说明”。
  • 责任共担 华为云秉承“将公司对网络和业务安全性保障的责任置于公司的商业利益之上”。针对层出不穷的云安全挑战和无孔不入的云安全威胁与攻击,华为云在遵从法律法规业界标准的基础上,以安全生态圈为护城河,依托华为独有的软硬件优势,构建面向不同区域和行业的完善云服务安全保障体系。 安全性是华为云与您的共同责任,如图1所示。 华为云:负责云服务自身的安全,提供安全的云。华为云的安全责任在于保障其所提供的 IaaS、PaaS 和 SaaS 类云服务自身的安全,涵盖华为云数据中心的物理环境设施和运行其上的基础服务、平台服务、应用服务等。这不仅包括华为云基础设施和各项云服务技术的安全功能和性能本身,也包括运维运营安全,以及更广义的安全合规遵从。 租户:负责云服务内部的安全,安全地使用云。华为云租户的安全责任在于对使用的 IaaS、PaaS 和 SaaS 类云服务内部的安全以及对租户定制配置进行安全有效的管理,包括但不限于虚拟网络、虚拟主机和访客虚拟机的操作系统,虚拟防火墙、API 网关和高级安全服务,各项云服务,租户数据,以及身份账号和密钥管理等方面的安全配置。 《华为云安全白皮书》详细介绍华为云安全性的构建思路与措施,包括云安全战略、责任共担模型、合规与隐私、安全组织与人员、基础设施安全、租户服务与租户安全、工程安全、运维运营安全、生态安全。 图1 华为云安全责任共担模型 父主题: 安全
  • 弹性资源池产品规格 弹性资源池为DLI作业运行提供所需的计算资源(CPU和内存)。弹性资源池的单位为CU,1CU包含1CPU和4GB内存。 您可以在弹性资源池中创建多个队列, 队列之间的计算资源支持共享。 通过合理设置队列的计算资源池分配策略,提高计算资源利用率。 DLI提供以下规格的计算资源,如表1所示。 表1 弹性资源池规格 类型 规格 约束限制 适用场景 基础版 16-64CUs规格 不支持高可靠与高可用。 不支持设置队列属性和作业优先级。 不支持对接Notebook实例。 其他弹性资源池使用相关约束限制请参考弹性资源池概述。 适用于对资源消耗不高、对资源高可靠性和高可用性要求不高的测试场景。 标准版 64CUs及以上规格 弹性资源池使用相关约束限制请参考弹性资源池概述。 具备强大的计算能力、高可用性、及灵活的资源管理能力,适用于大规模计算任务场景和有长期资源规划需求的业务场景。
  • 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)
  • 根因分析 该问题的根因是数据库设置的时区不合理,通常该问题出现时Flink读取的时间和RDS数据库的时间会相差13小时。 请在RDS数据库内执行如下语句 show variables like '%time_zone%' 执行结果如下: 图1 执行结果 表1 参数说明 参数 说明 system_time_zone 数据库时区。 这里它指向 'SYSTEM',也就是数据库服务器的系统时间('system_time_zone')。而这个系统时间在这里指向 CST,所以,最终数据库时区才是 CST。 time_zone 数据库所在服务器的时区,服务器是台主机。 如本地数据库所在计算机的默认时区是中国标准时间,则查出来 'system_time_zone' 是 CST。 问题根因:在Mysql的time_zone是SYSTEM,system_time_zone是CST的情况下会造成bug。 CST在mysql里被理解为China Standard Time(UTC+8),但在 Java 里被理解为Central Standard Time (USA)(UTC-5)。 Flink taskmanager本质是一个 java 进程,在Mysql 的jdbc驱动的代码里会设置时区,这个时区是通过TimeZone.getTimeZone(canonicalTimezone) 读取的。也就是说,读取的是CST(UTC+8),但真正设置的时区却是CST(UTC-5)。
  • 操作步骤 该示例将car_info数据,以day字段为分区字段,parquet为编码格式,转储数据到OBS。更多内容请参考《数据湖探索Flink SQL语法参考》。 1 2 3 4 5 6 7 8 9 10 11 12 13 create sink stream car_infos ( carId string, carOwner string, average_speed double, day string ) partitioned by (day) with ( type = "filesystem", file.path = "obs://obs-sink/car_infos", encode = "parquet", ak = "{{myAk}}", sk = "{{mySk}}" ); 数据最终在OBS中的存储目录结构为:obs://obs-sink/car_infos/day=xx/part-x-x。 数据生成后,可通过如下SQL语句建立OBS分区表,用于后续批处理: 创建OBS分区表。 1 2 3 4 5 6 7 8 create table car_infos ( carId string, carOwner string, average_speed double ) partitioned by (day string) stored as parquet location 'obs://obs-sink/car-infos'; 从关联OBS路径中恢复分区信息。 1 alter table car_infos recover partitions;
  • JOIN数据倾斜解决方案 登录数据湖探索管理控制台,选择“SQL作业”,在要修改的作业所在行的“操作”列,单击“编辑”进入SQL编辑器界面。 在SQL编辑器界面,单击“设置”,在“配置项”尝试添加以下几个Spark参数进行解决。 参数项如下,冒号前是配置项,冒号后是配置项的值。 spark.sql.enableToString:false spark.sql.adaptive.join.enabled:true spark.sql.adaptive.enabled:true spark.sql.adaptive.skewedJoin.enabled:true spark.sql.adaptive.enableToString:false spark.sql.adaptive.skewedPartitionMaxSplits:10 spark.sql.adaptive.skewedPartitionMaxSplits表示倾斜拆分力度,可不加,默认为5,最大为10。 单击“执行”重新运行作业,查看优化效果。
  • Group By数据倾斜解决方案 取部分数据执行select count(*) as sum,Key from tbl group by Key order by sum desc查询具体是哪些key引起的数据倾斜。 然后对于倾斜Key单独做处理,加盐让其先将他分为多个task分别统计,最后再对分开统计结果进行结合统计。 例如:如下SQL示例,假设已知倾斜key为'Key01',导致单个task处理大量数据,做如下处理: SELECT a.Key, SUM(a.sum) AS Cnt FROM ( SELECT Key, count(*) AS sum FROM tbl GROUP BY Key, CASE WHEN KEY = 'Key01' THEN floor(random () * 200) ELSE 0 END ) a GROUP BY a.Key;
  • 解决方案 在SQL语句中配置发送失败重试:connector.properties.retries=5 create table kafka_sink( car_type string , car_name string , primary key (union_id) not enforced ) with ( "connector.type" = "upsert-kafka", "connector.version" = "0.11", "connector.properties.bootstrap.servers" = "xxxx:9092", "connector.topic" = "kafka_car_topic ", "connector.sink.ignore-retraction" = "true", "connector.properties.retries" = "5", "format.type" = "json" );
  • 请求示例 在gaussdb_test数据库中创建多个SCHEMA。 { "db_name" : "gaussdb_test", "schemas" : [ { "name" : "rds", "owner" : "teste123" }, { "name" : "rds001", "owner" : "teste123" } ] }
  • 请求示例 创建一个GaussDB数据库,库名为gaussdb_test。 { "name" : "gaussdb_test", "owner" : "test", "template" : "template0", "character_set" : "UTF8", "lc_collate" : "en_US.UTF-8", "lc_ctype" : "en_US.UTF-8" }
共100000条