全部產品
Search
文件中心

DataWorks:Function Compute節點

更新時間:Jun 12, 2025

DataWorks為您提供Function Compute節點,允許您通過自訂代碼實現不同業務需求。Function Compute節點支援周期性調度,便於執行定時任務。同時,該節點能夠與DataWorks其他類型節點配合使用,協助您構建完整的資料處理流程。本文將為您介紹如何建立並使用Function Compute節點。

前提條件

  • RAM帳號添加至對應空間(可選)。

    進行任務開發的RAM帳號已被添加至對應工作空間中,並具有開發空間管理員(許可權較大,謹慎添加)角色許可權。新增成員並授權,詳情請參見為工作空間增加空間成員

  • 對應空間已綁定Serverless資源群組。詳情請參見:使用Serverless資源群組

  • 進行Function Compute節點開發前,需建立對應的Function Compute節點,詳情請參見:建立周期任務

使用限制

  • 功能限制:DataWorks目前僅支援調用事件函數,不支援調用HTTP函數。因此,若要在DataWorks周期性調度處理事件函數,則在建立函數時,需要建立用於處理事件請求的事件函數。更多函數類型介紹,詳情請參見函數類型選型

  • 地區限制:DataWorks目前僅支援華東1(杭州)、華東2(上海)、華北2(北京)、華北3(張家口)、華南1(深圳)、中國香港、新加坡、英國(倫敦)、美國(矽谷)、美國(維吉尼亞)、德國(法蘭克福)和澳大利亞(雪梨)地區的工作空間使用Function Compute功能。

注意事項

  • 使用Function Compute節點時,需基於已建立的服務調用待執行事件函數。選擇服務時,若無法擷取已建立的服務列表,則可能原因如下:

    • 當前帳號欠費:請儲值後重新整理節點配置頁面重新嘗試。

    • 當前登入使用者沒有擷取服務列表的許可權:請聯絡阿里雲主帳號為您添加fc:ListServices許可權,或直接賦予您AliyunFCFullAccess許可權,授權後請重新整理節點配置頁面重新嘗試。授權操作,請參見產品及控制台許可權控制詳情:RAM Policy

  • 使用DataWorks的Function Compute節點運行函數時,若運行時間長度超過1小時,請將DataWorksFunction Compute節點的調用方式配置為非同步呼叫。關於Function Compute非同步呼叫的介紹,請參考功能概覽

  • 若使用RAM使用者(即子帳號)進行Function Compute節點開發,則需為該使用者添加如下系統策略或自訂策略許可權。

    策略類型

    策略描述

    系統策略

    使用系統策略時,需授權使用者AliyunFCFullAccessAliyunFCReadOnlyAccessAliyunFCInvocationAccess權限原則。

    自訂策略

    使用Function Compute自訂策略常見授權如下:

    • fc:GetAsyncTask

    • fc:StopAsyncTask

    • fc:GetService

    • fc:ListServices

    • fc:GetFunction

    • fc:InvokeFunction

    • fc:ListFunctions

    • fc:GetFunctionAsyncInvokeConfig

    • fc:ListServiceVersions

    • fc:ListAliases

    • fc:GetAlias

    • fc:ListFunctionAsyncInvokeConfigs

    • fc:GetStatefulAsyncInvocation

    • fc:StopStatefulAsyncInvocation

    說明

    更多Function Compute權限原則可參考以下文檔:

一、開發Function Compute節點

  1. Function Compute節點開發,在進入已建立好的節點後,根據業務需求,選擇執行本次任務調用的函數並配置其運行方式及變數詳情,可參考以下表格:

    參數

    描述

    選擇版本或別名

    選擇後續調用函數時所使用的服務版本或別名。預設版本為LATEST

    • 服務版本。

      Function Compute提供服務等級的版本控制功能,支援您為自己的服務發布一個或多個版本。當發布版本時,Function Compute會為服務產生快照,包括服務的配置、服務內的函數代碼及函數配置,但不包括觸發器,並自動分配一個版本號碼與其關聯,以供後續使用。發布版本的詳情請參見管理版本

    • 版本別名。

      Function Compute支援為服務的版本建立別名。別名用於指向特定版本,您可利用別名輕鬆實現發布、復原以及灰階發布等功能。別名無法脫離服務或版本單獨存在。使用別名訪問服務或函數時,Function Compute會將別名解析為其指向的版本,調用方無需瞭解別名指向的具體版本。建立別名,詳情請參見管理別名

    選擇函數

    選擇此次任務執行所需調用的函數。如果沒有可用函數,則需建立,詳情請參見管理函數

    說明

    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

    更多函數的範例程式碼,請參見範例程式碼

    調用方式

    支援使用如下方式調用函數:

    • 同步調用:該方式事件將直接觸發函數,Function Compute會運行該函數並等待響應,當函數調用完成後,Function Compute直接返回執行結果。

    • 非同步呼叫:該方式Function Compute會將事件請求先持久化後再立即返迴響應,而不是等待請求執行完成後才返迴響應。

      • 若函數存在耗時較長、資源消耗較大或易錯邏輯,可採用非同步呼叫,提升程式響應速度,更加可靠地應對突發流量。

      • 運行時間長度超過1小時的Function Compute任務,請使用非同步呼叫。

    變數

    基於實際應用,對函數中的變數進行賦值。該變數與Function Compute產品中,目標函數詳情頁的測試函數 > 配置測試事件內容對應。

    樣本對para_service_01_by_time_triggers函數的相關變數傳入如下參數。參數中,使用${}格式定義了名為bizdate的變數,該變數需進行賦值。

    {
        "payload": "payload1",
        "triggerTime": "${bizdate}",
        "triggerName": "triggerName1"
    }
  2. 完成Function Compute節點指令碼開發後,需對Function Compute節點進行調度配置,以實現Function Compute任務的周期調度,詳情請參見節點調度

二、發布與營運

  1. 完成調度配置後,即可對已完成的Function Compute節點提交發布至生產環境,詳情請參見:節點/工作流程發布

  2. 發布完成的任務,將按照您配置的調度進行周期運行,可在營運中心 > 任務營運 > 周期任務營運 > 周期任務中查看發行的周期任務,並對任務進行營運操作,詳情請參見:營運中心入門