函数计算节点

更新时间:2025-03-24 05:40:36

DataWorks为您提供函数计算节点,允许您通过自定义代码实现不同业务需求。函数计算节点支持周期性调度,便于执行定时任务。同时,该节点能够与DataWorks其他类型节点配合使用,帮助您构建完整的数据处理流程。本文将为您介绍如何创建并使用函数计算节点。

前提条件

  • RAM账号添加至对应空间(可选)。

    进行任务开发的RAM账号已被添加至对应工作空间中,并具有开发空间管理员(权限较大,谨慎添加)角色权限。添加成员并授权,详情请参见为工作空间添加空间成员

  • 对应空间已绑定Serverless资源组。详情请参见:使用Serverless资源组

  • 进行函数计算节点开发前,需创建对应的函数计算节点,详情请参见:创建周期任务

使用限制

  • 功能限制

    DataWorks目前仅支持调用事件函数,不支持调用HTTP函数。因此,若要在DataWorks周期性调度处理事件函数,则在创建函数时,需要创建用于处理事件请求的事件函数。更多函数类型介绍,详情请参见函数类型选型

  • 地域限制

    DataWorks目前仅支持华东1(杭州)、华东2(上海)、华北2(北京)、华北3(张家口)、华南1(深圳)、中国香港、新加坡、英国(伦敦)、美国(硅谷)、美国(弗吉尼亚)、德国(法兰克福)和澳大利亚(悉尼)地域的工作空间使用函数计算功能。

注意事项

  • 使用函数计算节点时,需基于已创建的服务调用待执行事件函数。选择服务时,若无法获取已创建的服务列表,则可能原因如下:

    • 当前账号欠费:请充值后刷新节点配置页面重新尝试。

    • 当前登录用户没有获取服务列表的权限:请联系阿里云主账号为您添加fc:ListServices权限,或直接赋予您AliyunFCFullAccess权限,授权后请刷新节点配置页面重新尝试。授权操作,请参见产品及控制台权限控制详情:RAM Policy

  • 使用DataWorks的函数计算节点运行函数时,若运行时长超过1小时,请将DataWorks函数计算节点的调用方式配置为异步调用。关于函数计算异步调用的介绍,请参考功能概览

  • 若使用RAM用户(即子账号)进行函数计算节点开发,则需为该用户添加如下系统策略或自定义策略权限。

    策略类型

    策略描述

    相关参考

    策略类型

    策略描述

    相关参考

    系统策略

    使用系统策略时,需授权用户AliyunFCFullAccessAliyunFCReadOnlyAccessAliyunFCInvocationAccess权限策略。

    系统策略

    自定义策略

    使用自定义策略时,需授权用户如下所有权限策略。

    • fc:GetService

    • fc:ListServices

    • fc:GetFunction

    • fc:InvokeFunction

    • fc:ListFunctions

    • fc:GetFunctionAsyncInvokeConfig

    • fc:ListServiceVersions

    • fc:ListAliases

    • fc:GetAlias

    • fc:ListFunctionAsyncInvokeConfigs

    • fc:GetStatefulAsyncInvocation

    • fc:StopStatefulAsyncInvocation

    自定义策略

步骤一:开发函数计算节点

  1. 函数计算节点开发,在进入已创建好的节点后,根据业务需求,选择执行本次任务调用的函数并配置其运行方式及变量详情,可参考以下表格:

    image

    参数

    描述

    参数

    描述

    选择版本或别名

    选择后续调用函数时所使用的服务版本或别名。默认版本为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

    更多函数的示例代码,请参见示例代码

    调用方式

    支持使用如下方式调用函数:

    • 同步调用:该方式事件将直接触发函数,函数计算会运行该函数并等待响应,当函数调用完成后,函数计算直接返回执行结果。

    • 异步调用:该方式函数计算会将事件请求先持久化后再立即返回响应,而不是等待请求执行完成后才返回响应。

      • 若函数存在耗时较长、资源消耗较大或易错逻辑,可采用异步调用,提升程序响应速度,更加可靠地应对突发流量。

      • 运行时长超过1小时的函数计算任务,请使用异步调用。

    变量

    基于实际应用,对函数中的变量进行赋值。该变量与函数计算产品中,目标函数详情页的测试函数 > 配置测试事件内容对应。

    示例对para_service_01_by_time_triggers函数的相关变量传入如下参数。参数中,使用${}格式定义了名为bizdate的变量,该变量需进行赋值。

    {
        "payload": "payload1",
        "triggerTime": "${bizdate}",
        "triggerName": "triggerName1"
    }
  2. 完成函数计算节点脚本开发后,需对函数计算节点进行调度配置,以实现函数计算任务的周期调度,详情请参见调度配置

步骤二:发布与运维

  1. 完成调度配置后,即可对已完成的函数计算节点提交发布至生产环境,详情请参见:节点/工作流发布

  2. 发布完成的任务,将按照您配置的调度进行周期运行,可在运维中心 > 任务运维 > 周期任务运维 > 周期任务中查看已发布的周期任务,并对任务进行运维操作,详情请参见:运维中心入门

  • 本页导读 (1)
  • 前提条件
  • 使用限制
  • 注意事项
  • 步骤一:开发函数计算节点
  • 步骤二:发布与运维
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等