云服务器内容精选

  • 请求示例 创建Workflow工作流。设置工作流名称为“graph-test-has-condition-step”。 POST https://{endpoint}/v2/{project_id}/workflows { "name" : "graph-test-has-condition-step", "description" : "", "workspace_id" : "0", "steps" : [ { "name" : "condition_step_test", "title" : "condition_step_test", "description" : "", "type" : "condition", "conditions" : [ { "type" : "==", "left" : "$ref/parameters/is_true", "right" : true } ], "if_then_steps" : [ "training_job1" ], "else_then_steps" : [ "training_job2" ], "policy" : { } }, { "name" : "training_job1", "title" : "labeling", "description" : "", "type" : "job", "inputs" : [ { "name" : "data_url", "type" : "obs", "data" : "$ref/data/a2ff296da618452daa8243399f06db8e" } ], "outputs" : [ { "name" : "train_url", "type" : "obs", "config" : { "obs_url" : "/test-lh/test-metrics/" } }, { "name" : "service-link", "type" : "service_content", "config" : { "config_file" : "$ref/parameters/service_config1" } } ], "properties" : { "algorithm" : { "id" : "21ef85a8-5e40-4618-95ee-aa48ec224b43", "parameters" : [ ] }, "kind" : "job", "metadata" : { "name" : "workflow-b0b9fa4c06254b2ebb0e48ba1f7a916c" }, "spec" : { "resource" : { "flavor_id" : "$ref/parameters/train_spec", "node_count" : 1, "policy" : "regular" } } }, "depend_steps" : [ "condition_step_test" ], "policy" : { } }, { "name" : "training_job2", "title" : "labeling", "description" : "", "type" : "job", "inputs" : [ { "name" : "data_url", "type" : "obs", "data" : "$ref/data/f78e46676a454ccdacb9907f589f8d67" } ], "outputs" : [ { "name" : "train_url", "type" : "obs", "config" : { "obs_url" : "/test-lh/test-metrics/" } }, { "name" : "service-link", "type" : "service_content", "config" : { "config_file" : "$ref/parameters/service_config2" } } ], "properties" : { "algorithm" : { "id" : "21ef85a8-5e40-4618-95ee-aa48ec224b43", "parameters" : [ ] }, "kind" : "job", "metadata" : { "name" : "workflow-4a4317eb49ad4370bd087e6b726d84cf" }, "spec" : { "resource" : { "flavor_id" : "$ref/parameters/train_spec", "node_count" : 1, "policy" : "regular" } } }, "depend_steps" : [ "condition_step_test" ], "policy" : { } }, { "name" : "training_job3", "title" : "labeling", "description" : "", "type" : "job", "inputs" : [ { "name" : "data_url", "type" : "obs", "data" : "$ref/data/dee65054c96b4bf3b7ac98c0709f9ae0" } ], "outputs" : [ { "name" : "train_url", "type" : "obs", "config" : { "obs_url" : "/test-lh/test-metrics/" } }, { "name" : "service-link", "type" : "service_content", "config" : { "config_file" : "$ref/parameters/service_config3" } } ], "properties" : { "algorithm" : { "id" : "21ef85a8-5e40-4618-95ee-aa48ec224b43", "parameters" : [ ] }, "kind" : "job", "metadata" : { "name" : "workflow-3039303b3ae14f3e9eed416ba6361b1f" }, "spec" : { "resource" : { "flavor_id" : "$ref/parameters/train_spec", "node_count" : 1, "policy" : "regular" } } }, "depend_steps" : [ "training_job1", "training_job2" ], "policy" : { } } ], "labels" : [ "subgraph" ], "data" : [ { "name" : "a2ff296da618452daa8243399f06db8e", "type" : "obs", "value" : { "obs_url" : "/test-lh/test-metrics/" }, "used_steps" : [ "training_job1" ] }, { "name" : "f78e46676a454ccdacb9907f589f8d67", "type" : "obs", "value" : { "obs_url" : "/test-lh/test-metrics/" }, "used_steps" : [ "training_job2" ] }, { "name" : "dee65054c96b4bf3b7ac98c0709f9ae0", "type" : "obs", "value" : { "obs_url" : "/test-lh/test-metrics/" }, "used_steps" : [ "training_job3" ] } ], "parameters" : [ { "name" : "is_true", "type" : "bool", "delay" : true, "value" : true, "used_steps" : [ "condition_step_test" ] }, { "name" : "train_spec", "type" : "str", "format" : "flavor", "description" : "training specification", "default" : "modelarts.vm.cpu.8u", "used_steps" : [ "training_job1", "training_job2", "training_job3" ] }, { "name" : "service_config1", "type" : "str", "default" : "/test-lh/test-metrics/metrics.json", "used_steps" : [ "training_job1" ] }, { "name" : "service_config2", "type" : "str", "default" : "/test-lh/test-metrics/metrics.json", "used_steps" : [ "training_job2" ] }, { "name" : "service_config3", "type" : "str", "default" : "/test-lh/test-metrics/metrics.json", "used_steps" : [ "training_job3" ] } ] }
  • 响应示例 状态码: 201 OK { "name" : "graph-test-has-condition-step", "description" : "", "workspace_id" : "0", "steps" : [ { "name" : "condition_step_test", "title" : "condition_step_test", "description" : "", "type" : "condition", "conditions" : [ { "type" : "==", "left" : "$ref/parameters/is_true", "right" : true } ], "if_then_steps" : [ "training_job1" ], "else_then_steps" : [ "training_job2" ], "policy" : { } }, { "name" : "training_job1", "title" : "labeling", "description" : "", "type" : "job", "inputs" : [ { "name" : "data_url", "type" : "obs", "data" : "$ref/data/a2ff296da618452daa8243399f06db8e" } ], "outputs" : [ { "name" : "train_url", "type" : "obs", "config" : { "obs_url" : "/test-lh/test-metrics/" } }, { "name" : "service-link", "type" : "service_content", "config" : { "config_file" : "$ref/parameters/service_config1" } } ], "properties" : { "algorithm" : { "id" : "21ef85a8-5e40-4618-95ee-aa48ec224b43", "parameters" : [ ] }, "kind" : "job", "metadata" : { "name" : "workflow-b0b9fa4c06254b2ebb0e48ba1f7a916c" }, "spec" : { "resource" : { "flavor_id" : "$ref/parameters/train_spec", "node_count" : 1, "policy" : "regular" } } }, "depend_steps" : [ "condition_step_test" ], "policy" : { } }, { "name" : "training_job2", "title" : "labeling", "description" : "", "type" : "job", "inputs" : [ { "name" : "data_url", "type" : "obs", "data" : "$ref/data/f78e46676a454ccdacb9907f589f8d67" } ], "outputs" : [ { "name" : "train_url", "type" : "obs", "config" : { "obs_url" : "/test-lh/test-metrics/" } }, { "name" : "service-link", "type" : "service_content", "config" : { "config_file" : "$ref/parameters/service_config2" } } ], "properties" : { "algorithm" : { "id" : "21ef85a8-5e40-4618-95ee-aa48ec224b43", "parameters" : [ ] }, "kind" : "job", "metadata" : { "name" : "workflow-4a4317eb49ad4370bd087e6b726d84cf" }, "spec" : { "resource" : { "flavor_id" : "$ref/parameters/train_spec", "node_count" : 1, "policy" : "regular" } } }, "depend_steps" : [ "condition_step_test" ], "policy" : { } }, { "name" : "training_job3", "title" : "labeling", "description" : "", "type" : "job", "inputs" : [ { "name" : "data_url", "type" : "obs", "data" : "$ref/data/dee65054c96b4bf3b7ac98c0709f9ae0" } ], "outputs" : [ { "name" : "train_url", "type" : "obs", "config" : { "obs_url" : "/test-lh/test-metrics/" } }, { "name" : "service-link", "type" : "service_content", "config" : { "config_file" : "$ref/parameters/service_config3" } } ], "properties" : { "algorithm" : { "id" : "21ef85a8-5e40-4618-95ee-aa48ec224b43", "parameters" : [ ] }, "kind" : "job", "metadata" : { "name" : "workflow-3039303b3ae14f3e9eed416ba6361b1f" }, "spec" : { "resource" : { "flavor_id" : "$ref/parameters/train_spec", "node_count" : 1, "policy" : "regular" } } }, "depend_steps" : [ "training_job1", "training_job2" ], "policy" : { } } ], "labels" : [ "subgraph" ], "data" : [ { "name" : "a2ff296da618452daa8243399f06db8e", "type" : "obs", "value" : { "obs_url" : "/test-lh/test-metrics/" }, "used_steps" : [ "training_job1" ] }, { "name" : "f78e46676a454ccdacb9907f589f8d67", "type" : "obs", "value" : { "obs_url" : "/test-lh/test-metrics/" }, "used_steps" : [ "training_job2" ] }, { "name" : "dee65054c96b4bf3b7ac98c0709f9ae0", "type" : "obs", "value" : { "obs_url" : "/test-lh/test-metrics/" }, "used_steps" : [ "training_job3" ] } ], "parameters" : [ { "name" : "is_true", "type" : "bool", "delay" : true, "value" : true, "used_steps" : [ "condition_step_test" ] }, { "name" : "train_spec", "type" : "str", "format" : "flavor", "description" : "training specificaiton", "default" : "modelarts.vm.cpu.8u", "used_steps" : [ "training_job1", "training_job2", "training_job3" ] }, { "name" : "service_config1", "type" : "str", "default" : "/test-lh/test-metrics/metrics.json", "used_steps" : [ "training_job1" ] }, { "name" : "service_config2", "type" : "str", "default" : "/test-lh/test-metrics/metrics.json", "used_steps" : [ "training_job2" ] }, { "name" : "service_config3", "type" : "str", "default" : "/test-lh/test-metrics/metrics.json", "used_steps" : [ "training_job3" ] } ] }
  • 组件说明 函数流提供多种类型的组件,用户可以通过拖拽组件、配置组件和连接组件进行可视化编排,实现函数任务流的编排。使用函数流功能,请先了解表1。 表1 组件说明 类型 名称 说明 服务组件 函数 FunctionGraph函数,如何创建函数请参见创建函数。 EG 事件网格服务(EventGrid),EG节点会发布已配置的事件至指定的EG事件通道,如何创建EG资源请参见事件网格相关文档。 流程控制器 回调节点 通过人工干预实现对执行中函数流的条件控制,函数流将阻塞在回调节点,直到用户调用回调接口以继续函数流执行,从而达到人工审批的效果。 子流程 把已创建的“函数流”任务作为“子流程”组合成一个新的函数流任务。 并行分支 用于创建多个并行分支的控制器,以便同时执行多个分支任务,并可根据分支执行结束后控制下一步流程。 开始节点 只能加入触发器,用于标识流程的开始,一个流程只能有一个开始节点。 异常处理 用于控制函数执行失败后的下一步流程。 循环节点 用于对数组中每个元素进行循环处理。每次循环会执行一次循环内部的子流程。 时间等待 用于控制当前流程在指定时间延迟后再调用下一个流程。 服务节点 用于对多个函数构成的复杂操作进行抽象,可以将多个函数操作合并成一个原子节点进行管理。 条件分支 用于根据条件判断是否执行下一分支。 结束节点 用于标识流程的结束。
  • 编排规则 设计的函数流必须是一个有向无环图,从开始节点出发,开始节点后续必须且只能连接一个节点(除了异常处理和结束节点);流程必须在某一个节点结束,结束流程有两种形式: 流程中存在的节点没有任何后继节点,且后续节点非条件分支,并行分支或开始节点。 流程中存在结束节点,且结束节点后续无其他节点。 组件设计规则 表2 触发器和函数和EG 参数 说明 创建函数流时,是否必选 触发器 当前允许流程中配置0-10个触发器。 触发器必须配置在开始节点内。 触发器不允许连接其他任何节点,也不允许被其他节点连接。 否 函数 当前允许流程中配置0-99个函数节点。 当函数连接异常处理节点时,最多可以再连接一个非开始节点和非异常处理节点。 当函数不连接异常处理节点时,只能连接一个非开始节点。 否 EG 当前允许流程中配置0-10个EG节点。 当EG节点连接异常处理节点时,最多可以再连接一个非开始节点和非异常处理节点。 当EG节点不连接异常处理节点时,只能连接一个非开始节点。 否 表3 流程控制器 参数 说明 创建函数流时,是否必选 回调节点 回调节点限制规则参考表2中函数参数,但回调节点不可为服务节点的子节点 否 子流程 该节点选择已创建的函数流任务。 否 并行分支 用于标识节点后面的分支会并行执行。 后继节点允许连接1-20个节点(除了异常处理,开始节点和结束节点),至少连接一个节点。 否 开始节点 用于标识流程开始,每个流程必须有且只能有一个开始节点。 开始节点后面必须接1个节点,后续节点类型不能是结束节点或者异常处理。 必选 异常处理 后面可以接0-10个节点,后继节点不能是开始节点,结束节点和异常处理节点。 否 循环节点 用来对数组中每个元素进行循环处理。每次循环会执行一次循环内部的子流程。 循环节点内部子流程需要满足如下规则: 只能有一个起始节点(没有前驱节点),起始节点只能使用函数,时间等待节点。 循环节点内部只允许编排函数,时间等待,异常处理节点。 否 时间等待 后面可以连接0个或1个节点,节点类型不能是开始节点和异常处理节点。 否 服务节点 服务节点由多个函数节点组成,后续节点可以是结束节点或异常处理节点。 否 条件分支 后面可以连接2-20个后继节点,后继节点类型不能为开始节点,结束节点和异常处理节点。 否 结束节点 后面不能接任何节点。 否
  • 响应示例 状态码: 200 查询禁止直播推流列表成功 { "total" : 2, "blocks" : [ { "app_name" : "live", "stream_name" : "test_001", "resume_time" : "2018-05-19T21:10:15Z" }, { "app_name" : "live", "stream_name" : "test_002", "resume_time" : "2018-06-12T20:10:10Z" } ] } 状态码: 400 查询禁止直播推流列表失败 { "error_code" : "LIVE.100011001", "error_msg" : "Request Illegal" }
  • 请求参数 表3 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 否 String 用户Token,使用Token鉴权方式时必填。通过调用 IAM 服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 Authorization 否 String 使用AK/SK方式认证时必填,携带的鉴权信息。 X-Sdk-Date 否 String 使用AK/SK方式认证时必填,请求的发生时间。 X-Project-Id 否 String 使用AK/SK方式认证时必填,携带项目ID信息。
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 total Integer 查询结果的总元素数量 blocks Array of StreamForbiddenList objects 禁推黑名单列表 表5 StreamForbiddenList 参数 参数类型 描述 app_name String 应用名称 stream_name String 流名称 resume_time String 恢复流时间,格式:yyyy-mm-ddThh:mm:ssZ,UTC时间,不指定则默认7天,最大禁推为90天 状态码: 400 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述
  • URI GET /v1/{project_id}/stream/blocks 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID,获取方法请参考获取项目ID。 表2 Query参数 参数 是否必选 参数类型 描述 domain 是 String 域名 app_name 否 String 应用名称,不指定则查询domain下所有应用的禁止直播推流信息 stream_name 否 String 流名称 page 否 Integer 分页编号。 默认为0。 size 否 Integer 每页记录数。 取值范围:1-100。 默认为10。
  • 标准函数流执行历史查询 登录FunctionGraph控制台,在左侧导航栏选择“函数流”,进入“函数流”页面。 在“函数流”流程列表页面,单击需要查看执行历史的流程,进入流程详情页面。 切换至“运行记录”页签,查看执行历史运行记录。 左侧为执行历史记录列表,展示最近100次执行记录,支持根据流程执行ID进行查询。 单击左侧的执行记录,中间画布展示流程的执行结果,如果节点执行成功,图标背景为绿色,如果执行失败背景为红色。 图1 执行失败 画布下方输入输出展示区默认展示流程的输入和输出,单击上方任意节点,展示节点的输入和输出。 对于函数流及函数流各个节点,若输出值中有字段的值为null,则该字段会被直接过滤,不予展示。 最下方日志展示流程从开始到结束所有节点的执行记录。 图2 节点日志
  • 响应示例 状态码: 200 正常 { "result" : "success" } 状态码: 400 请求错误。具体返回错误码请参考错误码说明 { "error_msg" : "Invalid request parameter, url can not be null or empty when access type is HTTP-FLV.", "error_code" : "VIS.0005" }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 普通租户的token。 Authorization 否 String 使用AK/SK方式认证时必选,携带的鉴权信息。 X-Sdk-Date 否 String 使用AK/SK方式认证时必选,请求的发生时间。 X-Project-Id 否 String 使用AK/SK方式认证时必选,携带项目ID信息。 表3 请求Body参数 参数 是否必选 参数类型 描述 access_type 否 String 视频接入 类型,例如HTTP-FLV、RTMP等,不区分大小写。当视频流处于ACTIVE状态时,不允许修改该项。 encode_type 否 String 视频流编码格式,当前支持H264,不区分大小写。 access_key 否 String RTMP视频流绑定的密钥Access Key。 url 否 String HTTP-FLV视频流的拉流地址。URL必须是http或https协议的合法URL。格式要求:以“http://”或“https://”开头的字符串,例如“http://xxxx.xxx”。 description 否 String 视频流的描述信息。 share_type 否 String 视频流共享类型。 PRIVATE:非共享。 PUBLIC:共享。 不区分大小写。 tag 否 Array of StreamTag objects 和视频流关联的标签,一个视频流最多添加10个标签。 state 否 String 视频流状态,可选值如下。 ACTIVE:表示已激活。 STOPPED:表示已停用。 表4 StreamTag 参数 是否必选 参数类型 描述 key 否 String 标签的键。最大长度为36个UNICODE字符(一-鿿),可以包含大小写字母、数字、中划线(-)或者下划线(_),不能包含其他的特殊字符。 value 否 String 标签的值。最大长度为43个UNICODE字符(一-鿿),可以包含大小写字母、数字、点(.)、中划线(-)或者下划线(_),不能包含其他的特殊字符,也可以为空字符串。
  • 返回结果 表2 返回结果 类型 说明 GetResult 参数解释: SDK公共结果对象。 表3 GetResult 参数名称 参数类型 描述 status int 参数解释: HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 默认取值: 无 reason str 参数解释: HTTP文本描述。 默认取值: 无 errorCode str 参数解释: OBS服务端错误码,当status参数小于300时为空。 默认取值: 无 errorMessage str 参数解释: OBS服务端错误描述,当status参数小于300时为空。 默认取值: 无 requestId str 参数解释: OBS服务端返回的请求ID。 默认取值: 无 indicator str 参数解释: OBS服务端返回的错误定位码。 默认取值: 无 hostId str 参数解释: 请求的服务端ID,当status参数小于300时为空。 默认取值: 无 resource str 参数解释: 发生错误时相关的桶或对象,当status参数小于300时为空。 默认取值: 无 header list 参数解释: 响应消息头列表,由多个元组构成。每个元组均包含两个元素,代表响应头的键值对。 默认取值: 无 body object 参数解释: 操作成功后的结果数据,当status大于300时为空。该值根据调用接口的不同而不同,参见“桶相关接口”章节和“对象相关接口”章节的详细描述。 默认取值: 无
  • 响应参数 状态码: 200 表2 响应Body参数 参数 参数类型 描述 success Boolean 响应是否成功,默认为true。 状态码: 403 表3 响应Body参数 参数 参数类型 描述 error_code String 错误码。 最小长度:8 最大长度:36 error_msg String 错误描述。 最小长度:2 最大长度:512 状态码: 500 表4 响应Body参数 参数 参数类型 描述 error_code String 错误码。 最小长度:8 最大长度:36 error_msg String 错误描述。 最小长度:2 最大长度:512
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 running_id String 流记录id。 flow_id String 流id。 success Boolean 流运行状态 success: 流运行成功 fail: 流运行失败 flow_name String 流名称。 message String 返回信息。 状态码: 403 表4 响应Body参数 参数 参数类型 描述 error_code String 错误码。 最小长度:8 最大长度:36 error_msg String 错误描述。 最小长度:2 最大长度:512 状态码: 500 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码。 最小长度:8 最大长度:36 error_msg String 错误描述。 最小长度:2 最大长度:512
  • 响应示例 状态码: 400 { "error_code" : "EG.00014000", "error_msg" : "Bad request" } 状态码: 401 { "error_code" : "EG.00014010", "error_msg" : "Incorrect token or token resolution failed" } 状态码: 403 { "error_code" : "EG.00014030", "error_msg" : "No permissions to request this method" } 状态码: 404 { "error_code" : "EG.00014040", "error_msg" : "Not request resource found" } 状态码: 500 { "error_code" : "EG.00015000", "error_msg" : "Internal Server Error" }