DataWorks为您提供函数计算节点,允许您通过自定义代码实现不同业务需求。函数计算节点支持周期性调度,便于执行定时任务。同时,该节点能够与DataWorks其他类型节点配合使用,帮助您构建完整的数据处理流程。本文将为您介绍如何创建并使用函数计算节点。
前提条件
RAM账号添加至对应空间(可选)。
进行任务开发的RAM账号已被添加至对应工作空间中,并具有开发或空间管理员(权限较大,谨慎添加)角色权限。添加成员并授权,详情请参见为工作空间添加空间成员。
对应空间已绑定Serverless资源组。详情请参见:使用Serverless资源组。
进行函数计算节点开发前,需创建对应的函数计算节点,详情请参见:创建周期任务。
使用限制
功能限制
DataWorks目前仅支持调用事件函数,不支持调用HTTP函数。因此,若要在DataWorks周期性调度处理事件函数,则在创建函数时,需要创建用于处理事件请求的事件函数。更多函数类型介绍,详情请参见函数类型选型。
地域限制
DataWorks目前仅支持华东1(杭州)、华东2(上海)、华北2(北京)、华北3(张家口)、华南1(深圳)、中国香港、新加坡、英国(伦敦)、美国(硅谷)、美国(弗吉尼亚)、德国(法兰克福)和澳大利亚(悉尼)地域的工作空间使用函数计算功能。
注意事项
使用函数计算节点时,需基于已创建的服务调用待执行事件函数。选择服务时,若无法获取已创建的服务列表,则可能原因如下:
当前账号欠费:请充值后刷新节点配置页面重新尝试。
当前登录用户没有获取服务列表的权限:请联系阿里云主账号为您添加fc:ListServices权限,或直接赋予您AliyunFCFullAccess权限,授权后请刷新节点配置页面重新尝试。授权操作,请参见产品及控制台权限控制详情:RAM Policy。
使用DataWorks的函数计算节点运行函数时,若运行时长超过1小时,请将DataWorks函数计算节点的调用方式配置为异步调用。关于函数计算异步调用的介绍,请参考功能概览。
若使用RAM用户(即子账号)进行函数计算节点开发,则需为该用户添加如下系统策略或自定义策略权限。
策略类型
策略描述
相关参考
策略类型
策略描述
相关参考
系统策略
使用系统策略时,需授权用户
AliyunFCFullAccess
、AliyunFCReadOnlyAccess
及AliyunFCInvocationAccess
权限策略。自定义策略
使用自定义策略时,需授权用户如下所有权限策略。
fc:GetService
fc:ListServices
fc:GetFunction
fc:InvokeFunction
fc:ListFunctions
fc:GetFunctionAsyncInvokeConfig
fc:ListServiceVersions
fc:ListAliases
fc:GetAlias
fc:ListFunctionAsyncInvokeConfigs
fc:GetStatefulAsyncInvocation
fc:StopStatefulAsyncInvocation
步骤一:开发函数计算节点
函数计算节点开发,在进入已创建好的节点后,根据业务需求,选择执行本次任务调用的函数并配置其运行方式及变量详情,可参考以下表格:
参数
描述
参数
描述
选择版本或别名
选择后续调用函数时所使用的服务版本或别名。默认版本为LATEST。
选择函数
选择此次任务执行所需调用的函数。如果没有可用函数,则需新建,详情请参见管理函数。
DataWorks目前仅支持调用事件函数,不支持调用HTTP函数。因此,若要在DataWorks周期性调度处理事件函数,则在创建函数时,需要创建用于处理事件请求的事件函数。更多函数类型介绍,详情请参见函数类型选型。
示例选择
para_service_01_by_time_triggers
函数。创建该函数时,选择平台提供的定时触发函数的示例代码。代码逻辑如下。import json import logging logger = logging.getLogger() def handler(event, context): logger.info('event: %s', event) # Parse the json evt = json.loads(event) triggerName = evt["triggerName"] triggerTime = evt["triggerTime"] payload = evt["payload"] logger.info('triggerName: %s', triggerName) logger.info("triggerTime: %s", triggerTime) logger.info("payload: %s", payload) return 'Timer Payload: ' + payload
更多函数的示例代码,请参见示例代码。
调用方式
支持使用如下方式调用函数:
变量
基于实际应用,对函数中的变量进行赋值。该变量与函数计算产品中,目标函数详情页的
内容对应。示例对
para_service_01_by_time_triggers
函数的相关变量传入如下参数。参数中,使用${}
格式定义了名为bizdate
的变量,该变量需进行赋值。{ "payload": "payload1", "triggerTime": "${bizdate}", "triggerName": "triggerName1" }
完成函数计算节点脚本开发后,需对函数计算节点进行调度配置,以实现函数计算任务的周期调度,详情请参见调度配置。
步骤二:发布与运维
- 本页导读 (1)
- 前提条件
- 使用限制
- 注意事项
- 步骤一:开发函数计算节点
- 步骤二:发布与运维