发布算子
操作场景
所有开发者均可以创建用于数据处理的算子,审核通过后发布至DWR算子市场,开放给所有华为云用户使用。
当算子被华为云用户使用之后,算子发布者将会获得相应的收益,详情参见计费说明。
算子从API上线、开发、到发布的整个流程如图1所示,本节主要介绍如何使用DWR发布已开发好的算子到算子市场。
算子开发完成后,您可以参考抽帧截图(自定义算子)来验证算子。
约束与限制
当前发布算子功能仅支持IAM主账号。
前提条件
算子已开发完成,开发规范参考自定义函数开发规范,建议使用Go、Python开发(算子的冷启动效果更好)。
算子已在华为云云商店上架,上架指导参考发布API类商品操作指导。
开发的新算子如果要支持同步工作流,需要保证同步工作流最后一个算子返回方式为以下的一种:
- 返回方式1:字符串数据
{ "execution_name":"84a3dd2bd67f43aa9b98cdd74604ca68", //工作流实例名称 "graph_name":"test_workflow", //工作流名称 "Records":[ // 处理对象 ], "dynamic_source": {//执行算子的输出结果 "tasks": [ {body}, // 直接返回body字符串 ] } }
- 返回方式2:文件流数据
{ "execution_name":"84a3dd2bd67f43aa9b98cdd74604ca68", //工作流实例名称 "graph_name":"test_workflow", //工作流名称 "Records":[ // 处理对象 ], "dynamic_source":{ //执行算子的输出结果 "tasks":[ { "output":{ // 同步返回的输出文件地址:桶名、对象名、区域 "bucket":"bucketname", "object":"objectname", "location":"cn-north-4" } } ] } }
操作步骤
- 登录管理控制台。在左侧导航栏上方,单击,选择“存储 > 数据工坊DWR”。
进入DWR页面。
- 在左侧导航栏选中“发布算子”,进入“发布算子”页面。
- 单击界面右上角的“发布公共算子”。
- 配置算子基本信息。
表1 配置基本信息 参数
说明
算子名称
算子名称不能与本用户已有的算子重名。
算子提供方
-
算子描述
-
API链接
填写华为云云商店已上架的算子链接。
算子分类
根据算子市场上提供的分类进行选择。
算子logo
支持主流图片格式。
图2 算子基本信息
- 上传算子文件。
上传文件包括:算子代码包、中文和英文帮助文档、中文和英文服务协议文档、中文和英文开源声明、中文和英文测试报告。
图3 上传文件
- 配置算子参数。
参数
说明
Inputs参数(可选)
提供算子入参中动态参数对应的参数值,其Key值需要与动态参数中保持一致。
动态参数(可选)
提供算子入参的参数列表,可配置静态参数或动态参数,动态参数需要从Inputs参数中根据定义的Key取值。
权限版本
华为云统一身份认证(IAM)的权限版本,1.0版本以服务为粒度,提供有限的服务相关角色用于授权。1.1版本支持细粒度授权,可以精确到具体服务的操作、资源以及请求条件等。
- 单击右下角的“提交审核”。
审核通过后,算子将发布至算子市场。您可以过滤第三方的算子提供方,查看您发布的算子。
算子参数配置示例
Inputs参数
Input结构体参数说明参见创建工作流API。
regex参数设置的正则表达式请使用regexploit工具校验。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[ { //算子所在工作流输入列表 "parameter_name": "bucket", "parameter_value": "", "value_type": "", "default": "", "type": "string", "label": "Body", "constraints": { "regex": ".*"//正则表达式请使用regexploit工具校验 }, "invisible": false, "description": "doc destination bucket name" } ] |
动态参数
1 2 3 4 5 |
{ "bucket": { "get_input": "$.inputs.bucket"//该值需要跟inputs参数中的parameter_name取值保持一致 } } |
权限版本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[ { //1.1版本支持细粒度授权,可以精确到具体服务的操作、资源以及请求条件等 "version": "1.1", "statement": [ { //对IAM用户组授予OBS指定资源的指定操作权限 "action": [ "obs:bucket:HeadBucket", "obs:bucket:ListBucketMultipartUploads", "obs:object:AbortMultipartUpload", "obs:object:PutObject", "obs:bucket:GetBucketAcl", "obs:object:GetObject" ] } ] } ] |