华为云用户手册

  • 同样功能的PyTorch Pipeline,因为指导要求适配onnx pipeline,两个pipeline本身功能就有差别,如何适配? 由于Diffusers社区的“single model file policy”设计原则,不同的pipeline是不同路径在独立演进的。先确保应用输出符合预期后,再进入到MindSpore Lite模型转换的过程,否则迁移昇腾后还是会遇到同样的问题。 父主题: 常见问题
  • Step2 准备训练数据 ChatGLM-6B-finetune训练使用的是ADGEN数据集,可以从 Tsinghua Cloud下载。下载数据集之后,请参考以下要求创建OBS桶中的文件夹,并上传数据到OBS桶中,用于后续的算法微调训练。 OBS文件夹目录要求如下: {chatglm-mindspore-ma} # OBS对象桶,用户可以自定义名称,例如:chatglm-mindspore-ma -{data} # OBS文件夹,用于存放训练输入数据,用户可以自定义名称,例如:data -{AdvertiseGen} # OBS文件夹,用于存放训练输入数据,用户可以自定义名称,例如:AdvertiseGen - train.json # 训练数据集 - dev.json # 评估数据集 -{OBS文件夹} #训练输出路径,用于存放训练生成的模型文件等,用户可以自定义名称,例如:output -{OBS文件夹} #作业日志路径,用于存放训练日志,用户可以自定义名称,例如:log
  • 昇腾应用样例列表 您可以参考如下Ascend相关案例,使用ModelArts的AI开发能力,支撑您的业务应用。 表1 Ascend样例列表 样例 引擎 对应功能 说明 开源大模型基于ModelArts的一键推理部署 MindSpore Ascend推理 此案例介绍如何从AI Gallery中订阅LLaMA系列和ChatGLM系列开源大模型,并在ModelArts上使用昇腾算力进行推理部署。 LLaMA系列模型基于ModelArts的全参数微调训练 MindSpore 订阅算法(AI Gallery)、Ascend训练、Ascend推理 此案例介绍如何从AI Gallery中订阅LLaMA系列开源大模型算法,并在ModelArts上使用昇腾算力进行微调训练,最终将模型部署为在线服务。 ChatGLM系列模型基于ModelArts的全参微调训练 MindSpore 订阅算法(AI Gallery)、Ascend训练、Ascend推理 此案例介绍如何从AI Gallery中订阅ChatGLM系列开源大模型算法,并在ModelArts上使用昇腾算力进行微调训练,最终将模型部署为在线服务。 推理业务昇腾迁移通用指导 MindSpore Lite 模型迁移、Ascend推理部署 此案例介绍如何将客户已有的推理业务迁移到ModelArts上,使用昇腾算力进行推理部署。 AIGC推理业务迁移指导 MindSpore Lite 模型迁移、Ascend推理部署 此案例介绍如何将客户已有的AIGC推理业务迁移到ModelArts上,使用昇腾算力进行推理部署。 训练业务昇腾迁移通用指导 PyTorch 模型迁移、Ascend训练 此案例介绍如何将客户已有的训练业务迁移到ModelArts上,使用昇腾算力进行训练。 LLM训练业务迁移指导 PyTorch 模型迁移、Ascend训练 此案例介绍如何将客户已有的LLM训练业务迁移到ModelArts上,使用昇腾算力进行训练。 AIGC工具tailor使用指导 MindSpore Lite 模型迁移、Ascend推理部署 此案例介绍如何使用AIGC工具tailor。 示例:从 0 到 1 制作自定义镜像并用于训练(MindSpore+Ascend) MindSpore 制作自定义镜像、Ascend训练 此案例介绍如何从0到1制作Ascend容器镜像,并使用该镜像在ModelArts平台上进行训练。
  • 动态batch 在模型转换阶段通过--configFile参数指定配置文件,并且在配置文件中配置input_shape 及dynamic_dims动态参数。其中input_shape的-1表示动态shape所在的维度,dynamic_dims指定动态维度的取值范围,比如[1~4],[8],[16]表示该动态维度支持1, 2, 3, 4, 8, 16共六种大小。 # config.ini [ascend_context] input_shape=input.1:[-1,3,224,224] dynamic_dims=[1~4],[8],[16] 在执行convert_lite命令时,指定--configFile=config.ini即可自动编译指定的动态shape。 #shell converter_lite --modelFile=resnet50.onnx --fmk=ONNX --device=Ascend --outputFile=resnet50_dynamic --saveType=MINDIR --configFile=config.ini 注意:推理应用开发时,需要使用模型的Resize功能,改变输入的shape。而且Resize操作需要在数据从host端复制到device端之前执行,下面是一个简单的示例,展示如何在推理应用时使用动态Shape。 import mindspore_lite as mslite import numpy as np from PIL import Image # 设置目标设备上下文为Ascend,指定device_id为0 context = mslite.Context() context.target = ["ascend"] context.ascend.device_id = 0 # 构建模型 model = mslite.Model() model.build_from_file("./resnet50_dynamic.mindir", mslite.ModelType.MINDIR, context) data = np.random.rand(8, 3, 224, 224).astype(np.float32) inputs = model.get_inputs() model.resize(inputs, [list(data.shape)]) inputs[0].set_data_from_numpy(data) # 前向推理,并将结果从device侧传到host侧 outputs = model.predict(inputs)[0].get_data_to_numpy() print(outputs.shape) # (8, 1000)
  • 环境准备 开通裸金属服务器资源(请见DevServer资源开通),并在在裸金属服务器上搭建迁移环境请见裸金属服务器环境配置指导。 启动华为云预置镜像环境,本案例使用的贵阳一的镜像环境。 #shell docker run --privileged --name chatglm-test --cap-add=SYS_PTRACE -e ASCEND_VISIBLE_DEVICES=0-7 -u=0 swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_1_11_ascend:pytorch_1.11.0-cann_7.0.1-py_3.9-euler_2.10.7-aarch64-snt9b-20231107190844-50a1a83 bash 此处“-e ASCEND_VISIBLE_DEVICES” 用于指定容器中启动的NPU device,0-7表示从0-7号卡,请按照实际NPU卡情况修改。 安装相关依赖库。 ChatGLM-6B是完全基于Python开发的模型,训练之前需要事先安装与之依赖的Python库。其中部分依赖库可以使用pip工具安装,执行如下脚本: #shell pip install rouge_chinese nltk jieba sentencepiece datasets==2.12.0 fsspec==2022.11.0 transformers==4.29.2 deepspeed==0.9.2 与昇腾NPU适配的依赖库有torch_npu,多卡训练也需要deepspeed_npu,本文适配的版本如下:deepspeed_npu(0.1),torch_npu(1.11)。其中torch_npu 在镜像环境中已经预置安装,deepspeed_npu 安装配置详见 deepspeed_npu。 此外, transformers 执行需要高版本的scikit-learn、acclerate,详见常见问题5、常见问题6。此处执行升级命令: #shell pip install scikit-learn accelerate --upgrade transformers库的training_args.py有部分操作是适配的cuda设备,详见常见问题7,本文使用昇腾ModelZoo的适配版本脚本替换(下载链接)。 下载ChatGLM-6B源代码、模型权重与数据集到容器环境。 源代码:chatglm-6B 模型权重:weights 数据集:Firefly(流萤)、ADGEN (广告生成) 源代码、模型权重使用的清华官方在Github和Hugging Face开源的版本,源代码适配的main分支,权重当前使用 1d240ba 固定分支。其它分支版本理论上也可以进行迁移工作,不过注意可能由于权重不同原因最后训练结果也不太一致,此处建议您使用固定分支进行迁移。 数据集Firefly为本文用于多卡训练使用的数据集,数据集ADGEN为ChatGLM-6B ptuning训练适配的数据集,如果您运行环境为单卡环境下载数据集ADGEN。 父主题: LLM训练业务迁移指导
  • 安全组规则修改(可选) 安全组实际是网络流量访问策略,包括网络流量入方向规则和出方向规则,通过这些规则为安全组内具有相同保护需求并且相互信任的云服务器、云容器、云数据库等实例提供安全保护。 如果您的实例关联的安全组策略无法满足使用需求,比如需要添加、修改、删除某个TCP端口,请参考以下内容进行修改。 添加安全组规则:根据业务使用需求需要开放某个TCP端口,请参考添加安全组规则添加入方向规则,打开指定的TCP端口。 修改安全组规则:安全组规则设置不当会造成严重的安全隐患。您可以参考修改安全组规则,来修改安全组中不合理的规则,保证云服务器等实例的网络安全。 删除安全组规则:当安全组规则入方向、出方向源地址/目的地址有变化时,或者不需要开放某个端口时,您可以参考删除安全组规则进行安全组规则删除。
  • 返回值 表7 响应结果码 响应码 结果码 英文描述 中文描述 处理方法 200 000000 Success. 发送请求成功。 无需处理。 400 E000000 System error. 系统异常。 请先对照代码样例检查templateParas参数设置是否正确。若排查代码后仍未解决问题,请联系管理员处理。 E000001 Authorization not contained in the HTTP header. HTTP消息头未找到Authorization字段。 请检查HTTP消息头中是否携带了Authorization字段。 E000002 realm not contained in Authorization. Authorization字段中未找到realm属性。 请检查Authorization字段中的是否携带了realm属性。 E000003 profile not contained in Authorization. Authorization字段中未找到profile属性。 请检查Authorization字段中的是否携带了profile属性。 E000004 The value of realm in Authorization must be SDP. Authorization中realm属性值应该为“SDP”。 请检查Authorization字段中的realm属性值是否为“SDP”。 E000005 The value of profile in Authorization must be UsernameToken. Authorization中profile属性值应该为“UsernameToken”。 请检查Authorization字段中的profile属性值是否为“UsernameToken”。 E000006 The value of type in Authorization must be app_key. Authorization中type属性值应该为“Appkey”。 请检查Authorization字段中的type属性值是否为“Appkey”。 E000007 type not contained in Authorization. Authorization字段中未找到type属性。 请检查Authorization字段中是否携带了type属性。 E000008 WSSE not contained in Authorization. Authorization中没有携带WSSE。 请检查Authorization字段中是否携带了WSSE。 E000020 X-WSSE not contained in the HTTP header. HTTP头未找到X-WSSE字段。 请检查HTTP消息头中是否携带了X-WSSE字段。 E000021 UserName not contained in X-WSSE. X-WSSE字段中未找到UserName属性。 请检查X-WSSE字段中的是否携带了UserName属性。 E000022 Nonce not contained in X-WSSE. X-WSSE字段中未找到Nonce属性。 请检查X-WSSE字段中的是否携带了Nonce属性。 E000023 Created not contained in X-WSSE. X-WSSE字段中未找到Created属性。 请检查X-WSSE字段中的是否携带了Created属性。 E000024 PasswordDigest not contained in X-WSSE. X-WSSE字段中未找到PasswordDigest属性。 请检查X-WSSE字段中的是否携带了PasswordDigest属性。 E000025 The format of Created is incorrect. Created属性格式错误。 请检查X-WSSE字段中的Created属性格式是否正确。 E000026 UsernameToken not contained in X-WSSE. X-WSSE字段中未找到UsernameToken属性。 请检查X-WSSE字段中的是否携带了UsernameToken属性。 E000027 Invalid request. 非法请求。 根据API接口文档的参数描述和要求,检查请求携带的参数是否都合法。 E000040 The value of ContentType must be application/x-www-form-urlencoded. ContentType值应该为application/x-www-form-urlencoded。 请检查ContentType头域的取值是否为“application/x-www-form-urlencoded”。 E000503 The parameter format is incorrect. 参数格式错误。 请检查参数格式是否正确。 E000510 The SMS fails to be sent. For details, see status. 短信发送失败,描述见参数status。 查看响应参数中的status确认发送失败的原因,修改后重新发送。 401 E000101 Authentication failed. 鉴权失败。 请检查Authorization和X-WSSE参数的填写是否正确。 E000102 Invalid app_key. app_key无效。 请检查请求携带的app_key填写是否正确。 如app_key填写正确,建议检查app接入地址是否正确(从控制台“应用管理”获取)。 E000103 The status of the app_key is unavailable. app_key不可用。 请联系管理员确认该app_key状态是否正常。 E000104 Invalid app_secret. app_secret无效。 请检查请求携带的app_secret填写是否正确。 E000105 Invalid digest. PasswordDigest无效。 请检查请求携带的PasswordDigest填写是否正确。 E000106 The app_key is not allowed to invoke this API. app_key没有调用本API的权限。 请联系管理员确认该app_key是否具有“短信能力开放”能力。 E000109 The user status is deactivated. 用户状态未激活。 请联系管理员激活用户。 E000110 Time out limit. 时间超出限制。 请确认X-WSSE鉴权时,生成随机数的时间与发送请求时的本地时间不能相差太大(具体差值请与管理员确认)。 E000111 Incorrect username or password. 用户名或密码错误。 系统找不到app_key对应的用户信息,请联系管理员处理。 E000112 The subscriber status is frozen. 用户状态已冻结。 若是因账户欠费冻结,请参考华为云账户充值完成充值,到账后自动解冻。 若是因业务违规冻结,请整改业务后联系运营经理申请解冻。 403 E000620 The app client ip is not in ip white list. 对端app IP不在白名单列表中。 IP白名单配置生效约有10~15分钟的时延,未及时生效可能导致该报错。 IP白名单配置不正确。请前往控制台“应用管理”单击“修改”应用,检查并修改自行配置的IP白名单,或重新添加正确的IP白名单(IP白名单为平台管理员配置时)。 E000623 Number of SMSs sent by the SP reached the limit. SP短信发送量达到限额。 请联系运营经理协商调整SP短信发送量最大限额。
  • 请求示例1(X-WSSE认证) POST /sms/batchSendSms/v1 HTTP/1.1 x-real-ip: 10.10.10.168 x-real-port: 10443 host: ompap.inner content-length: 184 date: Fri, 13 Apr 2018 06:31:39 GMT authorization: WSSE realm="SDP",profile="UsernameToken",type="Appkey" x-wsse: UsernameToken Username="ZRBRz4bAXoFgEH7o4Ew308eXc1RA",PasswordDigest="NDA1MWIwNjI2ZTkyNWFlM2FhMTE5NDE1YTk5NjU1YWE4NjNlZTY1MmRhYzkxZGViNzczZjdjMjkzZWQ4ZjAwNA==",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z" accept: application/json content-type: application/x-www-form-urlencoded from=1069********0012&to=%2B86155****5678&templateId=abcdefghabcdefghabcdefghabcdefgh&extend=test&templateParas=%5B%22520520%22%5D&statusCallback=http%3A%2F%2F205%2E145%2E111%2E168%3A9330%2Freport
  • 响应示例 HTTP/1.1 200 OK Date: Fri, 13 Apr 2018 06:29:08 GMT Server: WebServer Content-Type: application/json;charset=UTF-8 Content-Length: 247 {"result":[{"originTo":"+86155****5678","createTime":"2018-05-25T16:34:34Z","from":"1069********0012","smsMsgId":"d6e3cdd0-522b-4692-8304-a07553cdf591_8539659","status":"000000","countryId":"CN","total":2}],"code":"000000","description":"Success"}
  • 请求示例2(AK/SK认证) POST /sms/batchSendSms/v1 HTTP/1.1 Host: smsapi.cn-north-4.myhuaweicloud.com:443 content-length: 184 X-Sdk-Date: 20230519T005038Z Authorization: SDK-HMAC-SHA256 Access=uxOF5yvM0H3C0t5G0xc272g7hA2I, SignedHeaders=content-type;host;x-sdk-date, Signature=082f05bcd561e291a7469939980c022f721a581967cc30eb3725c7aea4bd634d Content-Type: application/x-www-form-urlencoded from=1069********0012&to=%2B86155****5678&templateId=abcdefghabcdefghabcdefghabcdefgh&templateParas=%5B%22520520%22%5D&statusCallback=http%3A%2F%2F205%2E145%2E111%2E168%3A9330%2Freport
  • 响应参数 表5 响应结果参数 参数名称 是否必选 参数类型 默认值 说明 code 是 String(1-7) 无 请求返回的结果码。 description 是 String(1-512) 无 请求返回的结果码描述。 result 否 SmsID[1-1000] 无 短信ID列表,当目的号码存在多个时,每个号码都会返回一个SmsID。 当返回异常响应时不携带此字段。 表6 SmsID定义 参数名称 是否必选 参数类型 默认值 说明 smsMsgId 是 String(1-50) 无 短信的唯一标识。 from 是 String(1-21) 无 短信发送方的号码。 originTo 是 String(1-21) 无 短信接收方的号码。 status 是 String(1-7) 无 短信状态码。以下举例状态码及其说明,具体处理建议请参考API错误码。 000000:短信平台处理请求成功 E200015:待发送短信数量太大 E200028:模板变量校验失败 E200029:模板类型校验失败 E200030:模板未激活 E200031:协议校验失败 E200033:模板类型不正确 E200041:同一短信内容接收号码重复 createTime 是 String(1-20) 无 短信资源的创建时间,即短信平台接收到用户发送短信请求的时间,为UTC时间。 格式为:yyyy-MM-dd'T'HH:mm:ss'Z'。 countryId 否 String(1-3) 无 短信接收方号码的国家码。 total 否 int 无 短信拆分条数。
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 id String 引用表id name String 引用表名称 type String 引用表类型 timestamp Long 删除引用表的时间,时间为13位毫秒时间戳 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 401 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 500 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 id String 地址组id name String 地址组名称 ips String 地址组ip(以逗号分隔的ip或ip段) size Integer 地址组长度 rules Array of RuleInfo objects ip地址组绑定的规则列表 表5 RuleInfo 参数 参数类型 描述 rule_id String 规则id rule_name String 规则名称 policy_id String 策略id policy_name String 策略名称 状态码: 400 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 401 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 500 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息
  • 请求示例 将项目id为project_id的项目下的域名id为“6cc26af071de46479840b41c143bb79b”的域名和防护策略id为“b97ce5d4e38d4eaf94d65be7372974a8”的防护策略从企业id为0的企业,迁移到企业id为“c341b6bd-0935-462b-abb5-28a63bd68021”的企业。 POST https://{Endpoint}/v1/{project_id}/composite-waf/hosts/migration?enterprise_project_id=0&target_enterprise_project_id=c341b6bd-0935-462b-abb5-28a63bd68021 { "host_ids" : [ "6cc26af071de46479840b41c143bb79b" ], "policy_id" : "b97ce5d4e38d4eaf94d65be7372974a8" }
  • 响应参数 状态码: 200 表5 响应Body参数 参数 参数类型 描述 host_ids Array of strings host_id列表 policy_id String 策略ID(目标企业项目下的策略ID) certificate_id String 证书ID(目标企业项目下的证书ID) 状态码: 400 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 401 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 500 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息
  • 请求参数 表3 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token,通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 Content-Type 是 String 内容类型 缺省值:application/json;charset=utf8 表4 请求Body参数 参数 是否必选 参数类型 描述 host_ids 是 Array of strings host_id列表 policy_id 是 String 策略ID(目标企业项目下的策略ID) certificate_id 否 String 证书ID(目标企业项目下的证书ID)
  • 响应示例 状态码: 200 请求成功 { "id" : "97e4d35f375f4736a21cccfad77613eb", "policyid" : "38ff0cb9a10e4d5293c642bc0350fa6d", "timestamp" : 1650533191385, "description" : "demo", "status" : 1, "url" : "/demo", "category" : "cookie", "index" : "demo1" }
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 id String 规则id policyid String 策略id timestamp Long 创建规则的时间,格式为13位毫秒时间戳 description String 规则描述,可选参数,设置该规则的备注信息。 status Integer 规则状态,0:关闭,1:开启 url String 隐私屏蔽规则防护的url,需要填写标准的url格式,例如/admin/xxx或者/admin/,以""号结尾代表路径前缀 category String 屏蔽字段 Params:请求参数 Cookie:根据Cookie区分的Web访问者 Header:自定义HTTP首部 Form:表单参数 index String 屏蔽字段名 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 401 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 500 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息
  • 请求消息体 请求消息体通常以结构化格式发出,与请求消息头中Content-type对应,传递除请求消息头之外的内容。若请求消息体中参数支持中文,则中文字符必须为UTF-8编码。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根据具体接口而定。 对于获取用户Token接口,您可以从接口的请求部分看到所需的请求参数及参数说明。将消息体加入后的请求如下所示,加粗的斜体字段需要根据实际值填写,其中username为用户名,domainname为用户所属的帐号名称,********为用户登录密码,xxxxxxxxxxxxxxxxxx为project的名称,如“cn-north-4”,您可以从地区和终端节点获取,对应地区和终端节点页面的“区域”字段的值。 scope参数定义了Token的作用域,下面示例中获取的Token仅能访问project下的资源。您还可以设置Token作用域为某个帐号下所有资源或帐号的某个project下的资源,详细定义请参见获取用户Token。 POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "name": "xxxxxxxxxxxxxxxxxx" } } } } 到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编写代码等方式发送请求调用API。对于获取用户Token接口,返回的响应消息头中“x-subject-token”就是需要获取的用户Token。有了Token之后,您就可以使用Token认证调用其他API。
  • 请求URI 请求URI由如下部分组成。 {URI-scheme} :// {Endpoint} / {resource-path} ? {query-string} 尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传递它,所以在此单独强调。 URI-scheme: 表示用于传输请求的协议,当前所有API均采用HTTPS协议。 Endpoint: 指定承载REST服务端点的服务器域名或IP,不同服务不同区域的Endpoint不同,您可以从地区和终端节点获取。 例如IAM服务在“华北-北京四”区域的Endpoint为“iam.cn-north-4.myhuaweicloud.com”。 resource-path: 资源路径,也即API访问路径。从具体API的URI模块获取,例如“获取用户Token”API的resource-path为“/v3/auth/tokens”。 query-string: 查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个“?”,形式为“参数名=参数取值”,例如“limit=10”,表示查询不超过10条数据。 例如您需要获取IAM在“华北-北京四”区域的Token,则需使用“华北-北京四”区域的Endpoint(iam.cn-north-4.myhuaweicloud.com),并在获取用户Token的URI部分找到resource-path(/v3/auth/tokens),拼接起来如下所示。 https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens 图1 URI示意图 为查看方便,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,同一个服务的Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 如下公共消息头需要添加到请求中。 Content-Type:消息体的类型(格式),必选,默认取值为“application/json”,有其他取值时会在具体接口中专门说明。 X-Auth-Token:用户Token,可选,当使用Token方式认证时,必须填充该字段。用户Token也就是调用获取用户Token接口的响应值,该接口是唯一不需要认证的接口。 API同时支持使用AK/SK认证,AK/SK认证是使用SDK对请求进行签名,签名过程会自动往请求中添加Authorization(签名认证信息)和X-Sdk-Date(请求发送的时间)请求头。 AK/SK认证的详细说明请参见AK/SK认证。 对于获取用户Token接口,由于不需要认证,所以只添加“Content-Type”即可,添加消息头后的请求如下所示。 POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json
  • 请求方法 HTTP请求方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。 GET:请求服务器返回指定资源。 PUT:请求服务器更新指定资源。 POST:请求服务器新增资源或执行特殊操作。 DELETE:请求服务器删除指定资源,如删除对象等。 HEAD:请求服务器资源头部。 PATCH:请求服务器更新资源的部分内容。当资源不存在的时候,PATCH可能会去创建一个新的资源。 在获取用户Token的URI部分,您可以看到其请求方法为“POST”,则其请求为: POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens
  • 请求示例 在项目id为project_id和防护策略id为policy_id的防护策略下创建全局白名单(原误报屏蔽)规则。防护域名为we.test.418lab.cn,条件为url中包含”x.x.x.x“,描述为”demo“,需要屏蔽的规则id为091004 POST https://{Endpoint}/v1/{project_id}/waf/policy/{policy_id}/ignore?enterprise_project_id=0 { "domain" : [ "we.test.418lab.cn" ], "conditions" : [ { "category" : "url", "logic_operation" : "contain", "contents" : [ "x.x.x.x" ], "index" : null } ], "mode" : 1, "description" : "demo", "rule" : "091004" }
  • 响应示例 状态码: 200 OK { "id" : "a57f20ced01e4e0d8bea8e7c49eea254", "policyid" : "f385eceedf7c4c34a4d1def19eafbe85", "timestamp" : 1650522310447, "description" : "demo", "status" : 1, "rule" : "091004", "mode" : 1, "conditions" : [ { "category" : "url", "contents" : [ "x.x.x.x" ], "logic_operation" : "contain" } ], "domain" : [ "we.test.418lab.cn" ] }
  • 基本概念 帐号 用户注册时的帐号,帐号对其所拥有的资源及云服务具有完全的访问权限,可以重置用户密码、分配用户权限等。由于帐号是付费主体,为了确保帐号安全,建议您不要直接使用帐号进行日常管理工作,而是创建用户并使用他们进行日常管理工作。 用户 由帐号在IAM中创建的用户,是云服务的使用人员,具有身份凭证(密码和访问密钥)。 在我的凭证下,您可以查看帐号ID和用户ID。通常在调用API的鉴权过程中,您需要用到帐号、用户和密码等信息。 区域(Region) 从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 详情请参见区域和可用区。 可用区(AZ,Availability Zone) 一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 项目 区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的资源(计算资源、存储资源和网络资源),以默认项目为单位进行授权,用户可以访问您账号中该区域的所有资源。如果您希望进行更加精细的权限控制,可以在区域默认的项目中创建子项目,并在子项目中创建资源,然后以子项目为单位进行授权,使得用户仅能访问特定子项目中资源,使得资源的权限控制更加精确。 图1 项目隔离模型 父主题: 使用前必读
  • 响应示例 状态码: 200 OK { "id" : "5d43af25404341058d5ab17b7ba78b56", "policyid" : "38ff0cb9a10e4d5293c642bc0350fa6d", "name" : "demo", "timestamp" : 1650531872900, "description" : "demo", "status" : 1, "addr" : "x.x.x.x", "white" : 0 }
  • 响应参数 状态码: 200 表5 响应Body参数 参数 参数类型 描述 id String 规则id name String 黑白名单规则名称 policyid String 策略id addr String 黑白名单ip地址,需要输入标准的ip地址或地址段,例如:42.123.120.66或42.123.120.0/16 white Integer 防护动作: 0 拦截 1 放行 2 仅记录 ip_group Ip_group object Ip地址组 status Integer 规则状态,0:关闭,1:开启 description String 规则描述 timestamp Long 创建规则的时间戳,13位毫秒时间戳 表6 Ip_group 参数 参数类型 描述 id String Ip地址组id,在新增Ip地址组时系统自动生成的唯一标识 name String Ip地址组名 size Long Ip地址组中包含Ip/Ip段的数量 状态码: 400 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 401 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 500 表9 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息
  • 请求示例 在项目id为project_id,防护策略id为policy_id的防护策略下创建黑白名单规则,规则名称为"demo",防护动作为"拦截",描述为‘demo”,黑白名单ip地址为“x.x.x.x”。 POST https://{Endpoint}/v1/{project_id}/waf/policy/{policy_id}/whiteblackip?enterprise_project_id=0 { "name" : "demo", "white" : 0, "description" : "demo", "addr" : "x.x.x.x" }
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 id String 引用表id name String 引用表名称 type String 引用表类型 description String 引用表描述 values Array of strings 引用表的值 producer Integer 引用表来源: 1:表示来源于用户手动创建 2:表示来源于智能访问控制自动创建 timestamp Long 创建规则的时间,格式为13位毫秒时间戳 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 401 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 500 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息
  • 响应参数 状态码: 200 表5 响应Body参数 参数 参数类型 描述 instances Array of instanceInfo objects instances 表6 instanceInfo 参数 参数类型 描述 id String 引擎实例ID name String 引擎实例名称 状态码: 400 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 401 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 500 表9 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息
共100000条