云服务器内容精选

  • 自定义OAuth2授权码模式接入鉴权 配置OAuth管理中介绍了第三方系统访问AstroZero时,如何配置接入鉴权,通过鉴权认证的第三方系统才可访问AstroZero。在AstroZero中开发的应用也可以通过自定义OAuth2授权码模式接入鉴权,当应用配置鉴权后,只有通过鉴权的第三方系统才可访问应用。 参考配置OAuth管理中操作,获取鉴权ID“client_id”和鉴权密钥“client_secret”。 在经典版应用设计器的服务中,开发者通过自定义接口,给第三方接入调用,用于第三方系统获取授权码code。 应用调用脚本API,判断第三方客户端的鉴权ID“client_id”和重定向地址“redirect_url”是否和注册接入鉴权时匹配。 如果匹配,则由平台应用自定义接口,实现登录跳转和授权跳转。在授权完成后,再调用脚本API获取授权码code,并将需要展示给第三方的授权用户信息,通过该API传给AstroZero,AstroZero会返回一个code,然后应用重定向到“redirect_url”,并携带code。 判断第三方客户端的鉴权ID“client_id”和重定向地址“redirect_url”是否和注册接入鉴权时,匹配的API样例如下: // Here's your code. import * as oauth from 'oauth' let handle = oauth.getAuthorizeHandle() let clientDatas: oauth.clientDataFromApp = { redirect_uri: "http://10.26.30.68:14000/appauth/code", client_id: "bff4398905ee4a918722debec98b594c", } let pass = handle.checkURL(clientDatas) console.log(pass) //true if (pass){ //判断是否登录,做登录跳转 //判断是否授权,做授权跳转 } 获取授权码code的脚本API样例如下: // Here's your code. import * as oauth from 'oauth' let handle = oauth.getAuthorizeHandle() //前面步骤已经走完 let clientDatas: oauth.clientDataFromApp = { redirect_uri: "http://10.26.30.68:14000/appauth/code", client_id: "bff4398905ee4a918722debec98b594c", } let userInfo = { "name": "jack", "phone": "1256287222", "email": "example.com" } let code = handle.getAuthCode(clientDatas, userInfo) console.log(code) //WEUcqXbeQDKUHxcn8til3Q 第三方系统接收到该请求,并解析出code后,在自己的后端访问AstroZero接口获取access_token,其步骤和配置OAuth管理中一致。 第三方系统在获取到access_token后,使用该凭证访问平台“https://AstroZero 域名 /u-route/baas/oauth/v1.0/third/userinfo”接口,来获取授权用户的信息。 响应示例如下: { "resCode": "0", "resMsg": "成功", "result": { "email": "example.com", "name": "jack", "phone": "1256287222" } }
  • Oozie Java接口介绍 Java API主要由org.apache.oozie.client.OozieClient提供。 表1 接口介绍 方法 说明 public String run(Properties conf) 运行job public void start(String jobId) 启动指定的job public String submit(Properties conf) 提交job public void kill(String jobId) 删除指定的job public void suspend(String jobId) 暂停指定的job public void resume(String jobId) 恢复指定的job public WorkflowJob getJobInfo(String jobId) 获取job信息 父主题: 常用Oozie API接口介绍
  • 自定义错误码 参考登录经典应用设计器中操作,登录经典版应用设计器。 在页面左下方,单击“配置”。 图1 选择配置 在自定义错误码页签,单击“新建”,进入新建错误码页面。 也可以单击“导入”,选择系统中已创建的错误码进行导入。 设置错误码参数,单击“保存”。 图2 新建错误码 名称:自定义的错误码,建议以字母开头,长度不超过64个字节,包括命名空间。 类别:新建错误码所属的分类。 Http状态码:选择Http协议状态码。 语言:根据需要,选择所需的语言类型。单击“新增”,可添加多语言错误码。若待添加的语言不存在,可单击语言后的。在提示信息中,单击“翻译工作台”,跳转至翻译工作台配置页面进行添加。 格式:错误码的信息描述,支持使用{Number}表示变量名。例如 ,{0} 表示第一个输出变量,{1} 表示第二个输出变量,以此类推。
  • 如何使用自定义错误码 自定义错误码创建完成后,可在脚本中使用。在脚本中,调用抛出错误信息的error函数I18nError('ErrorCodeName','变量1','变量2')。该函数中,输入参数为错误码名称"t__testErrorCode"和错误码信息中所携带的变量("val1"和"val2")。 创建脚本。 在经典版应用设计器中,将鼠标放在某个文件夹上,单击加号,选择“脚本”。 图3 选择脚本 设置脚本的名称,模板选择“空脚本”,单击“添加”。 图4 创建一个空脚本 在脚本编辑器中,输入如下代码。 // test custom error func , get diff language error by user lang import * as error from 'error'; export class TestDemo { @action.method({ label: 'test', description: 'error code', input: 'No input', output: 'No output' }) public test() { //使用I18nError函数设定错误码和错误码信息携带变量 throw new error.I18nError('t__testErrorCode', ["val1", "val2"]); } } 其中,“t__testErrorCode”为自定义错误码名称,请根据实际情况配置。 单击,保存脚本后,单击,启用脚本。 按照如何开放API接口中操作,绑定上述开发的脚本,进行测试。 图5 自定义错误信息测试
  • Oozie Java接口介绍 Java API主要由org.apache.oozie.client.OozieClient提供。 表1 接口介绍 方法 说明 public String run(Properties conf) 运行job public void start(String jobId) 启动指定的job public String submit(Properties conf) 提交job public void kill(String jobId) 删除指定的job public void suspend(String jobId) 暂停指定的job public void resume(String jobId) 恢复指定的job public WorkflowJob getJobInfo(String jobId) 获取Job信息 父主题: 常用Oozie API接口介绍
  • Oozie Java接口介绍 Java API主要由org.apache.oozie.client.OozieClient提供。 表1 接口介绍 方法 说明 public String run(Properties conf) 运行Job。 public void start(String jobId) 启动指定的Job。 public String submit(Properties conf) 提交Job。 public void kill(String jobId) 删除指定的Job。 public void suspend(String jobId) 暂停指定的Job。 public void resume(String jobId) 恢复指定的Job。 public WorkflowJob getJobInfo(String jobId) 获取Job信息。 父主题: 常用Oozie API接口介绍
  • 创建执行动作 连接器需要添加执行动作(连接器具有的功能)并发布后,才能被使用。 在连接器详情界面,在“执行动作”页签,单击“创建执行动作”。 配置执行动作基本信息,如图3所示,请参考表2。 图3 配置执行动作基本信息 表2 执行动作基本信息说明 参数 说明 示例 名称 必填项。 执行动作的名称,根据规划自定义。建议您按照一定的命名规则填写执行动作的名称,方便您快速识别和查找。 IP地址查询 类型 必选项。 API:通过调用API的方式创建执行动作。 函数:通过自定义函数的方式创建执行动作。函数类型支持 CDM 集成。 流:通过编排流的方式创建执行动作。 API 可见性 必选项。 可见:在流编排中该执行动作可见。缺省值为“可见”。 隐藏:在流编排中该执行动作不可见。 可见 描述 选填项。 连接器的描述信息,该描述将显示在连接器的详情中,帮助用户了解连接器。 IP地址查询 单击“下一步”。 配置执行动作输入信息,如图4所示,请参考表3。 根据被调用的接口请求信息配置参数。 图4 配置执行动作输入信息 表3 执行动作输入信息说明 参数 说明 示例 接口路径 请求方式:被调用API的请求方式。 请求路径:被调用API的请求路径。 GET /lundear/qryip 输入参数 请求头(Header) HTTP请求消息的组成部分之一,请求头负责通知服务器有关于客户端请求的信息。 - 请求体(Body) 当请求方式为“GET”或“DELETE”时,此参数不可配置。 HTTP请求消息的组成部分之一,请求体呈现发送给服务器的数据。 - 查询参数(Query) 查询参数会追加到URL。 参数名称:ip 显示字段:ip地址 必填:勾选 参数类型:string 路径参数(Path) 路径与路径模板一起使用,其中参数值实际上是操作URL的一部分。 - 单击“下一步”。 配置输出信息。 根据被调用的接口响应信息配置参数。 如图5所示,请参考表4。 单击“确定”,在批量导入的参数中填写显示字段别名方便阅读。如图6所示。 图5 配置执行动作输出信息1 图6 配置执行动作输出信息2 表4 执行动作输出信息说明 参数 说明 示例 添加响应 被调用API的响应码信息。缺省值为“200(请求成功)”。 200(请求成功) 输出参数 响应体(Body) HTTP响应消息的组成部分之一,响应体呈现发送给服务器的数据。 说明: 如果响应体使用XML格式,XML header参数必须配置。 { "status": 0, "message": "Success", "request_id": "2dd71feb-2f7a-4426-b905-4c3ff4dcceb4", "result": { "ip": "112.36.236.188", "location": { "lat": 36.68013, "lng": 117.06533 }, "ad_info": { "nation": "中国", "province": "山东省", "city": "济南市", "district": "历城区", "adcode": 370112 } } } 响应头(Header) HTTP响应消息的组成部分之一,响应头负责通知服务器有关于客户端请求的信息。 - 单击“保存”。 创建执行动作后,系统自动返回至连接器详情页面,执行动作显示在“执行动作”页签列表中。连接器“状态”变为“待发布”。
  • 响应示例 状态码: 200 OK { "result" : { "steps" : [ { "properties" : { "image" : "maven3.5.3-jdk8-open", "snapshotArtifact" : { "displayName" : "", "value" : "" }, "userPrivateRepositories" : [ ], "deal" : "notDeal", "dependencyCheckParam" : " ", "userPublicRepositories" : [ ], "settingMode" : "auto", "doCheck" : "disable", "junitCoverageSwitch" : false, "coverageReportPath" : "**/site/jacoco", "releaseArtifact" : { "displayName" : "", "value" : "" }, "cacheOption" : "cached", "command" : "# 功能: 打包\n# 参数说明:\n#\t\t-Dmaven.test.skip=true:跳过单元测试\n#\t\t-U:每次构建检查依赖更新,可避免缓存中快照版本依赖不更新问题,但会牺牲部分性能\n#\t\t-e -X :打印调试信息,定位疑难构建问题时建议使用此参数构建\n#\t\t-B:以batch模式运行,可避免日志打印时出现ArrayIndexOutOfBoundsException异常\n# 使用场景: 打包项目且不需要执行单元测试时使用\nmvn package -Dmaven.test.skip=true -U -e -X -B\n\n#功能:打包;执行单元测试,但忽略单元测试用例失败,每次构建检查依赖更新\n#使用场景: 需要执行单元测试,且使用构建提供的单元测试报告服务统计执行情况\n# 使用条件:在”单元测试“中选择处理单元测试结果,并正确填写测试结果文件路径\n#mvn package -Dmaven.test.failure.ignore=true -U -e -X -B\n\n#功能:打包并发布依赖包到私有依赖库\n#使用场景: 需要将当前项目构建结果发布到私有依赖仓库以供其它maven项目引用时使用\n#注意事项: 此处上传的目标仓库为CodeArts私有依赖仓库,注意与软件发布仓库区分\n#mvn deploy -Dmaven.test.skip=true -U -e -X -B", "file" : "**/TEST*.xml", "dependencyProjectDir" : "./", "ignoreTest" : false, "pomMode" : "no", "dependencySettings" : "~/.m2/settings.xml" }, "module_id" : "devcloud2018.codeci_action_20043.action", "name" : "Maven构建", "version" : null, "enable" : true }, { "properties" : { "image" : "shell4.2.46-git1.8.3-zip6.00", "buildVersion" : "", "file" : "**/target/*.?ar", "groupId" : "", "name" : "" }, "module_id" : "devcloud2018.codeci_action_20018.action", "name" : "上传软件包到软件发布库", "version" : null, "enable" : true } ], "arch" : "x86-64", "project_id" : "a287e712be6c404ca26e5f69040fa12b", "job_name" : "oychap213i2", "job_id" : "35b6c7da9e644dbbb7e333579f89dcda", "auto_update_sub_module" : "false", "flavor" : "2u8g", "parameters" : [ { "name" : "hudson.model.StringParameterDefinition", "params" : [ { "name" : "name", "value" : "codeBranch", "limits" : null }, { "name" : "type", "value" : "normalparam", "limits" : null }, { "name" : "defaultValue", "value" : "master", "limits" : null }, { "name" : "description", "value" : "代码分支,系统预定义参数", "limits" : null }, { "name" : "deletion", "value" : "false", "limits" : null }, { "name" : "defaults", "value" : "true", "limits" : null }, { "name" : "staticVar", "value" : "false", "limits" : null }, { "name" : "sensitiveVar", "value" : "false", "limits" : null } ] } ], "scms" : [ { "branch" : "master", "url" : "git@codehub.devcloud.cn-north-7.ulanqab.huawei.com:soso-test00001/an.git", "is_auto_build" : false, "scm_type" : "codehub", "end_point_id" : null, "web_url" : "https://devcloud.cn-north-7.ulanqab.huawei.com/codehub/2111746211/home", "source" : null, "build_type" : "branch", "depth" : "1", "repo_id" : "2111746211" } ], "host_type" : "devcloud" }, "error" : null, "status" : "success" }
  • 前提条件 已有通过实名认证的华为企业账号或 IAM 用户。 已开通MSSI服务。 如何开通MSSI服务,请参考开通并购买MSSI服务。 使用API接口创建流指导用户快速将API接口封装为连接器,进行流编排。这里以“通过邮件将IP地址查询结果发送到个人”为例。 用户将IP地址查询能力接口封装为连接器,其余连接器使用系统预置的公共连接器。 操作流程,如图1所示。 图1 操作流程图 父主题: 使用API接口创建流
  • 请求 请求样例 post https://endpoint/federated/v1/agent/report { "agentId": "agentId-xxx","taskId": "training_taskId-xxx","taskStatus": "Finished","reportData": "{"spendTime":"6000","dataNumber":"10000","xxx":"xxx"}",}
  • URI URI格式 /federated/v1/agent/report 参数说明,如表1所示。 表1 参数说明 参数 是否必选 类型 说明 agentId Y String 本次联邦注册唯一标识ID taskId N String 当前联邦任务ID。如果为空,表示当前上报信息为联邦任务前指标上报,如准确率。 taskStatus N String 任务状态。 取值如下所示: Accepted:接收 Running:运行中 Finished:完成 Failed:失败 reportData Y String 上传json格式的KPI数据,如数据量、训练时长、准确率等。