华为云用户手册

  • 排查思路 以下排查思路根据原因的出现概率进行排序,建议您从高频率原因往低频率原因排查,从而帮助您快速找到问题的原因。 如果解决完某个可能原因仍未解决问题,请继续排查其他可能原因。 图1 排查思路 表1 排查思路 可能原因 处理措施 配额不足 已创建的文件系统数量已经达到配额上限,请提交工单申请扩大配额。 子网IP不足 如果子网IP资源不足,可以更换子网或者释放当前文件系统使用的子网下其他的IP地址。 后台容量不足 后台容量达到上限,请提交工单进行技术咨询。
  • 接口功能 客户购买商品并付款成功,云商店将调用本接口(新购场景)通知商家客户购买商品的信息和客户信息,商品生产环境收到该请求信息,需执行新购对应动作并将执行结果返回给云商店。 用户购买商品后,在“买家中心”点击该商品的“资源详情”查询使用信息时,会实时调用接口(新购场景)进行查询,所以商家的服务器在处理接口请求时,需要做好幂等性处理。即云商店服务有可能重发请求,针对同一订单号,商家的服务器应当返回成功的响应及应用实例信息,不应该创建新的SaaS实例,返回之前成功创建的实例信息即可。 买家购买成功后,使用信息查询操作及页面展示参考SaaS类商品使用指导。
  • 接口功能及说明 商家发布SaaS商品时,首先需根据本接入指南,在生产接口服务器开发生产系统接口。 具体可以参考接口描述。 1.已经完成基础接口描述中接口对接的商家,本次生产系统接口只需要实现联营Kit接口描述中接口的对接。 2.首次上架的联营商品需完成基础接口描述和联营Kit接口描述的对接。 如果发布包周期商品,接口需实现“新购(包周期)”、“续费”、“过期”、“释放”四种场景的调用。 如果发布按次商品,接口需实现“新购(按次)”和“释放”场景的调用。 如果发布按需商品,接口需实现“新购(按需)”、“新购(按需套餐包)”、“查询实例信息”、“资源状态变更”、“释放”、“按需使用量推送”场景的调用。 3.SaaS接口响应失败将通过邮件、短信、站内信进行通知,请注意关注账号绑定的邮箱、手机短信及站内信的相关通知。 若商品单月因接口失败导致的失败订单超过5个或长时间拨测失败,云商店将对该商品下架处理。 因接口响应失败导致自动退订的订单,请商家及时联系用户进行沟通,避免造成用户投诉。 父主题: 联营SaaS类商品接入指南 V1.0
  • 发票开具规定 通用商品对账结算 2018年11月1日之前发生的交易,仍需商家对华为云开票。2018年11月1日之后发生的交易,商家直接对购买该商用的用户开票即可,商家需及时受理用户在华为云上发起的购买通用商品所对应的开票申请。 联营商品、严选商品和严选自营商品对账结算 商家应按照月结对账单的金额,在收到开具发票通知后1个月内,根据税法要求向华为云开具增值税专用发票,税目及税率应以开票时税法的相关规定为准。如开票有误,需要重新开具。
  • 结算金额计算规则 通用商品 华为云会按业务发展需要对分成比例进行调整,详情请参见云商店通用商品商家合作协议。 商家结算金额(含税)=商品销售金额(含税)*(1-平台费比例) 通用商品的代金券由商家发放,如果用户使用云商店代金券支付订单,结算时华为和商家共担代金券成本,商家结算金额将扣减代金券使用金额。 2024年3月1日前:商家结算金额 =(商品销售金额 –代金券扣款)*(1-平台费比例) 2024年3月1日后:商家结算金额 =(商品销售金额 –代金券扣款)*(1-平台费比例+区间增量分成比例) 自2024年3月1日00:00(北京时间)起,云商店通用商品平台服务费政策调整,增加基于月度的客户实际付费金额,增加增量分成比例,单个商品月度达成一定区间的阶梯付费金额后,将根据客户付费金额的对应区间增量分成比例从华为云平台费扣减并结算给商家,详细信息《关于华为云云商店2024年3月1日00:00(北京时间)通用商品平台服务费政策调整的通知》 自2019年5月1日起,云商店对所有通用商品执行平台服务费减半的优惠政策,即:所有通用商品按订单交易金额的5%收取平台服务费。详细公告见《关于华为云云商店通用商品平台服务费减半优惠政策的通知》。 严选商品和严选自营商品 商家结算金额(含税)=商品结算底价*90% 联营商品 根据联营商品分成模式差异,结算规则不同。 成交价分成模式: 结算金额(含税)= (联营商品成交价-赋能云或基地云运营管理费(如涉及)) *商家结算比例 底价折扣分成模式: 结算金额(含税) = 联营商品目录价 *销售底价折扣*结算比例 联营商品的代金券由商家发放,如用户使用云商店代金券支付订单,结算时由商家承担代金券成本,商家结算金额将扣减代金券使用金额。 成交价分成模式:结算金额(含税)= (联营商品成交价-赋能云或基地云运营管理费(如涉及)) *商家结算比例-代金券使用金额 底价折扣分成模式:结算金额(含税) = 联营商品目录价 *销售底价折扣*结算比例-代金券使用金额 赋能云运营管理费及基地云管理费:赋能云、基地云项目用户购买云商店销售的联营商品,如涉及须按政府要求给运营公司支付运营管理费,云商店将在与商家结算时从相应交易中扣减赋能云运营管理费。
  • 结算周期 结算频率:每月1次,每月3日生成上一自然月账期账单。 结算内容:上一自然月1号至月底最后一天期间发生且生效的订单或交易,及往月结算部分金额的订单或从未结算的订单;续订订单所属账期以该订单的实际生效为准确定所属账期。(仅对订单情况满足结算启动前提条件的商家生成对账单) 结算示例: 2020年2月3日生成2020年1月账期的账单,账单中包含在2020年1月1日到2020年1月31日期间满足出账条件的订单。账期ID为202001。 某客户于2020年1月1日购买并使用信用支付,商家于2020年3月15日完成该订单的服务监管流程,但订单未完成回款条件,则该订单不会出账结算。需在该订单满足所有出账条件后,于次月3日出账。 某客户于2020年1月1日购买并使用信用支付,该订单的服务监管流程于2020年1月5日完成,但客户于2020年5月还款,则该订单会在2020年6月3日出账,账期为2020年5月,账单ID为202005。
  • 结算启动前提条件 商家需通过商业信息认证。 商业信息认证是指伙伴提交其用于结算涉及到的银行账号、税率等信息,即结算账款将结算至商业信息认证中的公司银行账户。商业信息认证缺失将导致在华为云系统里无法准确获取到商家的银行账号及税率等信息,从而无法正常生成结算对账单。 如通过商业信息认证后公司信息存在变更,例如公司名称、纳税人身份、收款账号变更,可联系客服更新。 订单需同时满足如下出账条件。 订单已完成付款(使用信用额度或现金券支付的订单 ,“后付费客户还款状态”必须为“已还款”); 订单的服务监管状态为“不涉及”或“已完成”; 订单已生效,如果是续费订单,请注意续费订单的生效时间; 同一商品类型的账单累计出账达到1000元。 如需查询订单的以上信息,可参考《为什么订单没有在次月出账?》。
  • 示例 在ModelArts Notebook里进行镜像构建。 ma-cli image build .ma/customize_from_ubuntu_18.04_to_modelarts/Dockerfile -swr notebook_test/my_image:0.0.1 其中“.ma/customize_from_ubuntu_18.04_to_modelarts/Dockerfile”为Dockerfile文件所在路径,“notebook_test/my_image:0.0.1”为构建的新镜像的SWR路径。
  • 在ECS上调试SWR镜像是否能在ModelArts Notebook中使用 ma-cli支持在ECS上调试SWR镜像是否可以在ModelArts开发环境中运行,发现镜像中可能存在的问题。 表1 参数说明 参数名 参数类型 是否必选 参数说明 -swr / --swr-path String 是 需要调试的镜像的SWR路径。 -r / --region String 是 需要调试的镜像所在的区域。 -s / --service String 否 调试镜像的服务类型,NOTEBOOK或者MODELBOX,默认是NOTEBOOK。 -a / --arch Sring 否 调试镜像的架构,X86_64或者AARCH64,默认是X86_64。 -g / --gpu Bool 否 使用GPU进行调试开关,默认关闭。 父主题: 使用ma-cli image构建镜像
  • 基于ModelArts预置镜像提交训练作业 指定命令行options参数提交训练作业 ma-cli ma-job submit --code-dir obs://your-bucket/mnist/code/ \ --boot-file main.py \ --framework-type PyTorch \ --working-dir /home/ma-user/modelarts/user-job-dir/code \ --framework-version pytorch_1.8.0-cuda_10.2-py_3.7-ubuntu_18.04-x86_64 \ --data-url obs://your-bucket/mnist/dataset/MNIST/ \ --log-url obs://your-bucket/mnist/logs/ \ --train-instance-type modelarts.vm.cpu.8u \ --train-instance-count 1 \ -q 使用预置镜像的train.yaml样例:
  • 基于自定义镜像创建训练作业 指定命令行options参数提交训练作业 ma-cli ma-job submit --image-url atelier/pytorch_1_8:pytorch_1.8.0-cuda_10.2-py_3.7-ubuntu_18.04-x86_64-20220926104358-041ba2e \ --code-dir obs://your-bucket/mnist/code/ \ --user-command "export LD_LIBRARY_PATH=/usr/local/cuda/compat:$LD_LIBRARY_PATH && cd /home/ma-user/modelarts/user-job-dir/code && /home/ma-user/anaconda3/envs/PyTorch-1.8/bin/python main.py" \ --data-url obs://your-bucket/mnist/dataset/MNIST/ \ --log-url obs://your-bucket/mnist/logs/ \ --train-instance-type modelarts.vm.cpu.8u \ --train-instance-count 1 \ -q 使用自定义镜像的train.yaml样例: # .ma/train.yaml样例(自定义镜像) image-url: atelier/pytorch_1_8:pytorch_1.8.0-cuda_10.2-py_3.7-ubuntu_18.04-x86_64-20220926104358-041ba2e user-command: export LD_LIBRARY_PATH=/usr/local/cuda/compat:$LD_LIBRARY_PATH && cd /home/ma-user/modelarts/user-job-dir/code && /home/ma-user/anaconda3/envs/PyTorch-1.8/bin/python main.py train-instance-type: modelarts.vm.cpu.8u train-instance-count: 1 data-url: obs://your-bucket/mnist/dataset/MNIST/ code-dir: obs://your-bucket/mnist/code/ log-url: obs://your-bucket/mnist/logs/ ##[Optional] Uncomment to set uid when use custom image mode uid: 1000 ##[Optional] Uncomment to upload output file/dir to OBS from training platform output: - name: output_dir obs_path: obs://your-bucket/mnist/output1/ ##[Optional] Uncomment to download input file/dir from OBS to training platform input: - name: data_url obs_path: obs://your-bucket/mnist/dataset/MNIST/ ##[Optional] Uncomment pass hyperparameters parameters: - epoch: 10 - learning_rate: 0.01 - pretrained: ##[Optional] Uncomment to use dedicated pool pool_id: pool_xxxx ##[Optional] Uncomment to use volumes attached to the training job volumes: - efs: local_path: /xx/yy/zz read_only: false nfs_server_path: xxx.xxx.xxx.xxx:/
  • 示例 基于yaml文件提交训练作业 ma-cli ma-job submit ./train-job.yaml 基于命令行和预置镜像pytorch1.8-cuda10.2-cudnn7-ubuntu18.04提交训练作业。 ma-cli ma-job submit --code-dir obs://automation-use-only/Original/TrainJob/TrainJob-v2/pytorch1.8.0_cuda10.2/code/ \ --boot-file test-pytorch.py \ --framework-type PyTorch \ --working-dir /home/ma-user/modelarts/user-job-dir/code \ --framework-version pytorch_1.8.0-cuda_10.2-py_3.7-ubuntu_18.04-x86_64 \ --data-url obs://automation-use-only/Original/TrainJob/TrainJob-v2/pytorch1.8.0_cuda10.2/data/ \ --log-url obs://automation-use-only/Original/TrainJob/TrainJob-v2/pytorch1.8.0_cuda10.2/data/logs/ \ --train-instance-type modelarts.vm.cpu.8u \ --train-instance-count 1 \
  • 镜像构建命令总览 $ ma-cli image -h Usage: ma-cli image [OPTIONS] COMMAND [ARGS]... Support get registered image list, register or unregister image, debug image, build image in Notebook. Options: -H, -h, --help Show this message and exit. Commands: add-template, at List build-in dockerfile templates. build Build docker image in Notebook. debug Debug SWR image as a Notebook in ECS. df Query disk usage. get-image, gi Query registered image in ModelArts. get-template, gt List build-in dockerfile templates. prune Prune image build cache. register Register image to ModelArts. unregister Unregister image from ModelArts. 表1 镜像构建支持的命令 命令 命令详情 get-template 查询镜像构建模板。 add-template 加载镜像构建模板。 get-image 查询ModelArts已注册镜像。 register 注册SWR镜像到ModelArts镜像管理。 unregister 取消注册ModelArts镜像管理中的已注册镜像。 build 基于指定的Dockerfile构建镜像 (只支持ModelArts Notebook里使用)。 df 查询镜像构建缓存(只支持ModelArts Notebook里使用)。 prune 清理镜像构建缓存 (只支持ModelArts Notebook里使用)。 debug 在ECS上调试SWR镜像是否能在ModelArts Notebook中使用 (只支持已安装docker环境的ECS)。
  • 命令示例 # 上传文件到OBS中 $ ma-cli obs-copy ./test.csv obs://${your_bucket}/test-copy/ [ OK ] local src path: [ /home/ma-user/work/test.csv ] [ OK ] obs dst path: [ obs://${your_bucket}/test-copy/ ] # 上传文件夹到OBS中,对应上传到OBS的目录为obs://${your_bucket}/test-copy/data/ $ ma-cli obs-copy /home/ma-user/work/data/ obs://${your_bucket}/test-copy/ [ OK ] local src path: [ /home/ma-user/work/data/ ] [ OK ] obs dst path: [ obs://${your_bucket}/test-copy/ ] # 上传文件夹到OBS中,并指定--drop-last-dir,对应上传到OBS的目录为obs://${your_bucket}/test-copy/ $ ma-cli obs-copy /home/ma-user/work/data/ obs://${your_bucket}/test-copy/ --drop-last-dir [ OK ] local src path: [ /home/ma-user/work/data ] [ OK ] obs dst path: [ obs://${your_bucket}/test-copy/ ] # 从OBS下载文件夹到本地磁盘中 $ ma-cli obs-copy obs://${your_bucket}/test-copy/ ~/work/test-data/ [ OK ] obs src path: [ obs://${your_bucket}/test-copy/ ] [ OK ] local dst path: [ /home/ma-user/work/test-data/ ]
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 interval Integer 采集间隔 collector_id Integer 采集器ID config_item_list Array of ConfigItemValue objects 采集参数配置列表 表4 ConfigItemValue 参数 参数类型 描述 config_name String 配置项名字 display_name String 显示名称 config_data_type String 数据类型 max_length Integer 最大长度 min_value Double 最小值 max_value Double 最大值 option_values Array of OptionValue objects 可选值 default_value String 默认值 since_version String 开始版本 dead_version String 截至版本 value String 值 object_array_patterns Array of object_array_patterns objects 对象数组 override_list Array of ConfigItemOverride objects 实际生效值 表5 OptionValue 参数 参数类型 描述 value String 可选值 hint String 提示信息 表6 object_array_patterns 参数 参数类型 描述 key String 键 type String 对象类型 max_length Integer 最大长度 max_value Double 最大值 min_value Double 最小值 nullable Boolean 是否可以为空值 hint String 提示信息 表7 ConfigItemOverride 参数 参数类型 描述 env_tag_id Long 环境标签ID env_tag_name String 环境标签名 key String 键 value String 值
  • 请求参数 表1 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 从IAM服务获取的用户Token。 表2 请求Body参数 参数 是否必选 参数类型 描述 name 是 String 应用名字。 eps_id 否 String 企业项目ID。默认值为“0”,表示默认项目的ID。 display_name 是 String CMDB树显示的名称。 descp 是 String 描述。 cmdb_datasource_type 否 String 新建类型,默认值为SKYWALKING。 枚举值: OTEL SKYWALKING
  • 请求参数 表1 请求Header参数 参数 是否必选 参数类型 描述 x-business-id 是 Long 应用id。 X-Auth-Token 是 String 从IAM服务获取的用户Token。 表2 Query参数 参数 是否必选 参数类型 描述 from 是 Long 开始时间,比如1704271204595 to 是 Long 结束时间, 比如1704275169491 type 是 String 数据类型, CPU 或者 LATENCY instance_id 是 Long 实例id api 是 String api的url,比如: GET_/user/{id} region 是 String 实例所在区域
  • 请求示例 POST: /v1/apm2/openapi/view/profiling/flame-line-tree { "from": 1704271204595, "to": 1704275169491, "type": "LATENCY", "instance_id": -6870732446083119805, "api" : "GET_/user/{id}", "region":"cn-north-7" }
  • 响应示例 状态码: 200 { "data":[ 100, 1000, null, [ [ 700, 700, 0, 30, // 行号 [] ], [ 200, 200, 1, 40, // 行号 [] ] ] ], "methods":[ [ 2, // method id "com.huawei.foo", "SampleService", "doService", "int,long,String", true, // 是否为用户方法 false // 是否为native方法 ], [ 3, "com.huawei.bar", "SampleRemoteCall", "sampleCallRemoteProcess", "float,int", true, // 是否为用户方法 false // 是否为native方法 ] ]}
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 data Array of strings 火焰图的数据是个二维数组。 data[0][0]: self time,方法自己消耗的cpu毫秒时间,不包括方法内部调用其他方法的时间。 data[0][1]: total time, 方法消耗的cpu毫秒时间,包括方法内部调用其他方法的时间。 data[0][2]: 方法的index,对应methods中的数组下标。 data[0][3]: 行号 data[0][4]: 方法的子节点,就是方法中调用的其他方法。 methods Array of strings 调用栈上的方法信息是个二维数组。 method[0][0]: 方法的唯一id。 method[0][1]: 方法的package包名。 method[0][2]: 方法的class name 类名。 method[0][3]: 方法名。 method[0][4]: 方法的参数列表。 method[0][5]: 方法是否为用户的方法。 method[0][6]: 方法是否为native方法。
  • 错误码 当您调用API时,如果遇到“APIGW”开头的错误码,请参见API网关错误码进行处理。 状态码 错误码 错误信息 描述 处理措施 400 apm2.00000001 Internal error. 内部错误 apm后端服务发生未知异常,请联系apm技术人员进行处理 400 apm2.00000005 Invalid parameters. 无效的参数 输入的参数有问题,请确认每一个参数是否正确 403 apm2.00000003 You have not logged in. 没有登录 先登录当前iam用户 403 apm2.00000004 No permission. 没有权限 请确认用户是否具有权限进行该操作 父主题: 附录
  • AK/SK认证 AK/SK签名认证方式仅支持消息体大小12MB以内,12MB以上的请求请使用Token认证。 AK/SK认证就是使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而通过身份认证。 AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。 SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。 使用AK/SK认证时,您可以基于签名算法使用AK/SK对请求进行签名,也可以使用专门的签名SDK对请求进行签名。详细的签名方法和SDK使用方法请参见API签名指南。 签名SDK只提供签名功能,与服务提供的SDK不同,使用时请注意。
  • Token认证 Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存起来,避免频繁调用。 Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。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....”加到请求消息头即可,如下所示。 POST https://endpoint/v3/auth/projeAPM X-Auth-Token: ABCDEFJ....
  • 查看实例详情 “基础信息”:展示该实例的类型、端口、版本、内网IP以及引擎类型等。 “敏感数据识别”:展示该实例下已授权的数据库和未授权的数据库。 “已授权数据库”但是“未扫描”,单击“创建识别任务”跳转至敏感数据识别功能,创建识别任务识别该资产敏感信息,具体操作请参见新建敏感数据识别任务章节。 “已授权数据库”并且是“已扫描”,单击“展开”查看数据库扫描详情。 “未授权数据库”单击“去授权”去给数据库进行授权,授权方式请参见资产中心授权操作的内容。 图7 敏感数据识别 如果数据类型为OBS,单击“查看详情”查看敏感数据识别任务的“结果明细”。如果没有识别,请参见新建敏感数据识别任务章节创建识别任务进行识别后再次查看识别结果。 “安全防护策略分析”:检测数据资产的安全策略,展示策略风险,检测项包含是否开启服务端加密、数据库加密、传输加密、安全组以及公网访问等高危权限并给出处理提醒,可单击“查看详情”或者“前去修改”处理。 “数据出口分析”:识别云上所有的数据出口,包含EIP/NAT/APIGateway/Roma等。将鼠标移动至资产地图数据类型图标或者VPC图标也可查看数据出口网关线路。 图8 数据出口分析
  • 相关操作 如您需要对您的云资产授权进行更改,可单击右上角“修改”进行更改。如需停止授权,需要您的资产没有绑定任务。停止授权后,DSC会删除您的委托和资产信息,对应的所有数据将被清除,请谨慎操作。具体操作请参见云资产委托授权/停止授权章节。 资产敏感度等级图例:从L0-L10每种颜色代表一种等级,根据识别到的资产的敏感度等级,资产地图展示的资产图例颜色与之一一对应。 拖动进度条滑块调整资产地图显示比例。 单击右下角全屏显示。 单击右下角显示资产地图操作指南。 单击右下角显示数据异常风险时间,方便快速处理。 单击右下角显示资产图例。
  • 风险统计数据 如图4所示,展示资产的“安全评分”、“上次评分时间”、“评分评详情”以及可以手动重新分析评分,具体内容如下: 图4 安全评分 展示资产的安全评分,单击评分规则后的查看资产安全评分计算规则。 单击“重新分析”,对云上资产再次进行安全分析扫描。 单击“评分详情”,查看各类资产“安全防护策略分析”并根据给出的“配置策略推荐”信息单击操作列的“前去修改”进行处理。 如图5所示,“安全防护策略分析”仅展示“风险等级”为“中危”和“高危”的资产,“风险等级”计算方式如表1所示,由“配置风险等级”和“分级分类级别”综合得“出风险等级”。 图5 安全防护策略分析 表1 安全防护策略分析展示规则 配置风险等级 分级分类级别 风险等级 是否展示 低危 L0-L3(低危) 低危 不展示 L4-L7(中危) 低危 不展示 L8-L10(高危) 中危 展示 中危 L0-L3(低危) 低危 不展示 L4-L7(中危) 中危 展示 L8-L10(高危) 高危 展示 高危 L0-L3(低危) 中危 展示 L4-L7(中危) 高危 展示 L8-L10(高危) 高危 展示 如图6所示,展示资产的敏感数据识别分级结果,根据分级结果分类展示资产,具体内容如下: 图6 敏感数据识别分级结果 单击搜索框输入实例名称可搜索查看相关资产类型的风险等级。 鼠标移动至敏感等级上,展示该“敏感等级”下的所有资产信息。 鼠标移动至对应的资产类型,右侧弹框展示该类型下所有已扫描资产的名称以及扫描时间。 单击某个资产,在右侧弹框展示该实例详情,包含资产基础信息、敏感数据识别、安全防护策略分析以及数据出口分析的内容,具体说明请参见查看实例详情内容。
  • 资产地图功能介绍 梳理云上数据资产并分区展示:自动扫描并梳理云上数据资产,地图化展示资产分布,帮助用户解决数据在哪里的问题。根据云上资源VPC展示各个资产所在区域,和业务区域关联。 敏感数据展示:基于DSC的三层数据识别引擎、预置合规规则、自然语义识别技术、文件相似度检测技术,对数据资产进行分类分级。 数据出口分析:基于资产地图构建统一的数据出口和出口风险视图,帮助用户识别云上数据可能的出口,以及这些出口存在的潜在安全风险,方便用户采取相应的数据安全防护措施。 风险监控和预警:基于风险识别引擎,对数据资产进行风险监控,展示每类资产的风险分布,并预警。 安全评分:资产地图会显示您当前所有资产的总体“安全评分”,单击评分规则后的查看资产安全评分计算规则,如图1所示。 图1 评分规则 敏感度等级:按照检测到的敏感度等级将资产进行分类,方便查看和管理,鼠标移动至存在风险的资产类型并单击资产可以查看资产风险详情。
  • Java样例代码 本示例操作步骤采用Java进行编码,具体完整的样例代码参考如下: package com.huawei.dli.demo; import org.apache.spark.sql.SparkSession; public class DliCatalogTest { public static void main(String[] args) { SparkSession spark = SparkSession .builder() .config("spark.sql.session.state.builder", "org.apache.spark.sql.hive.UQueryHiveACLSessionStateBuilder") .config("spark.sql.catalog.class", "org.apache.spark.sql.hive.UQueryHiveACLExternalCatalog") .config("spark.sql.extensions","org.apache.spark.sql.DliSparkExtension") .appName("java_spark_demo") .getOrCreate(); spark.sql("create database if not exists test_sparkapp").collect(); spark.sql("drop table if exists test_sparkapp.dli_testtable").collect(); spark.sql("create table test_sparkapp.dli_testtable(id INT, name STRING)").collect(); spark.sql("insert into test_sparkapp.dli_testtable VALUES (123,'jason')").collect(); spark.sql("insert into test_sparkapp.dli_testtable VALUES (456,'merry')").collect(); spark.sql("drop table if exists test_sparkapp.dli_testobstable").collect(); spark.sql("create table test_sparkapp.dli_testobstable(age INT, name STRING) using csv options (path 'obs://dli-test-obs01/testdata.csv')").collect(); spark.stop(); } }
  • scala样例代码 object DliCatalogTest { def main(args:Array[String]): Unit = { val sql = args(0) val runDdl = Try(args(1).toBoolean).getOrElse(true) System.out.println(s"sql is $sql runDdl is $runDdl") val sparkConf = new SparkConf(true) sparkConf .set("spark.sql.session.state.builder","org.apache.spark.sql.hive.UQueryHiveACLSessionStateBuilder") .set("spark.sql.catalog.class","org.apache.spark.sql.hive.UQueryHiveACLExternalCatalog") sparkConf.setAppName("dlicatalogtester") val spark = SparkSession.builder .config(sparkConf) .enableHiveSupport() .config("spark.sql.extensions","org.apache.spark.sql.DliSparkExtension") .appName("SparkTest") .getOrCreate() System.out.println("catalog is " + spark.sessionState.catalog.toString) if (runDdl) { val df = spark.sql(sql).collect() } else { spark.sql(sql).show() } spark.close() } }
  • Python样例代码 #!/usr/bin/python # -*- coding: UTF-8 -*- from __future__ import print_function import sys from pyspark.sql import SparkSession if __name__ == "__main__": url = sys.argv[1] creatTbl = "CREATE TABLE test_sparkapp.dli_rds USING JDBC OPTIONS ('url'='jdbc:mysql://%s'," \ "'driver'='com.mysql.jdbc.Driver','dbtable'='test.test'," \ " 'passwdauth' = 'DatasourceRDSTest_pwd','encryption' = 'true')" % url spark = SparkSession \ .builder \ .enableHiveSupport() \ .config("spark.sql.session.state.builder","org.apache.spark.sql.hive.UQueryHiveACLSessionStateBuilder") \ .config("spark.sql.catalog.class", "org.apache.spark.sql.hive.UQueryHiveACLExternalCatalog") \ .config("spark.sql.extensions","org.apache.spark.sql.DliSparkExtension") \ .appName("python Spark test catalog") \ .getOrCreate() spark.sql("CREATE database if not exists test_sparkapp").collect() spark.sql("drop table if exists test_sparkapp.dli_rds").collect() spark.sql(creatTbl).collect() spark.sql("select * from test_sparkapp.dli_rds").show() spark.sql("insert into table test_sparkapp.dli_rds select 12,'aaa'").collect() spark.sql("select * from test_sparkapp.dli_rds").show() spark.sql("insert overwrite table test_sparkapp.dli_rds select 1111,'asasasa'").collect() spark.sql("select * from test_sparkapp.dli_rds").show() spark.sql("drop table test_sparkapp.dli_rds").collect() spark.stop()
共100000条