DataWorks為您提供函數計算節點,允許您通過自定義代碼實現不同業務需求。函數計算節點支持周期性調度,便于執行定時任務。同時,該節點能夠與DataWorks其他類型節點配合使用,幫助您構建完整的數據處理流程。本文將為您介紹如何創建并使用函數計算節點。
背景信息
DataWorks基于MaxCompute、Hologres、EMR、AnalyticDB、CDP等大數據引擎,為數據倉庫、數據湖、湖倉一體等解決方案提供統一的全鏈路大數據開發治理平臺。DataWorks數據開發(DataStudio)模塊用于定義周期調度任務的開發及調度屬性,與運維中心配合使用,面向各引擎(MaxCompute、Hologres、EMR等)提供可視化開發主界面,支持智能代碼開發、多引擎混編工作流、規范化任務發布等能力,幫助您輕松構建離線數倉、實時數倉與即席分析系統,保證數據生產的高效穩定。
DataWorks的數據開發(DataStudio)可通過調用函數計算的事件函數來處理請求事件,通過配置節點的周期調度屬性,發布到生產環境后,就可實現自動調度。
前提條件
DataWorks服務
函數計算
使用限制
功能限制
DataWorks目前僅支持調用事件函數,不支持調用HTTP函數。因此,若要在DataWorks周期性調度處理事件函數,則在創建函數時,需要創建用于處理事件請求的事件函數。更多函數類型介紹,詳情請參見函數類型。
地域限制
DataWorks目前僅支持華東1(杭州)、華東2(上海)、華北2(北京)、華北3(張家口)、華南1(深圳)、中國香港、新加坡、英國(倫敦)、美國(硅谷)、美國(弗吉尼亞)、德國(法蘭克福)地域的工作空間使用函數計算功能。
注意事項
使用函數計算節點時,需基于已創建的服務調用待執行事件函數。選擇服務時,若無法獲取已創建的服務列表,則可能原因如下:
當前賬號欠費:請充值后刷新節點配置頁面重新嘗試。
當前登錄用戶沒有獲取服務列表的權限:請聯系阿里云主賬號為您添加fc:ListServices權限,或直接賦予您 AliyunFCFullAccess權限,授權后請刷新節點配置頁面重新嘗試。授權操作,請參見為RAM用戶授權。
使用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
步驟一:進入節點創建入口
登錄DataWorks控制臺,切換至目標地域后,單擊左側導航欄的 ,在下拉框中選擇對應工作空間后單擊進入數據開發。
進入節點創建入口。
在數據開發(DataStudio)界面,您可通過如下方式創建函數計算節點。
步驟二:創建并配置函數計算節點
創建函數計算節點。
進入節點創建入口后,根據界面提示,配置新建節點的路徑、名稱等基本信息,創建節點。
配置函數計算節點參數。
在節點編輯頁面,根據業務需求,選擇執行本次任務需調用的函數并配置其運行方式及變量詳情。
參數
描述
選擇服務
用于為函數提供相關運行資源。同一服務下的所有函數共享一些相同的設置,例如,服務授權和日志配置等。如果沒有可用服務,則需新建,詳情請參見創建服務。
選擇版本或別名
選擇后續調用函數時所使用的服務版本或別名。默認版本為 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
的變量,該變量需在步驟4中賦值。{ "payload": "payload1", "triggerTime": "${bizdate}", "triggerName": "triggerName1" }
可選:調試運行函數計算節點。
函數計算節點配置完成后,您可單擊圖標,指定任務運行的資源組并為代碼變量賦值常量進行調試運行,測試節點代碼邏輯是否正確。運行時,參數配置格式為
key=value
,輸入多個參數時,需使用逗號(,)分隔。說明更多任務調試運行詳情,請參見調試運行任務。
配置節點的周期調度屬性。
DataWorks提供的調度參數,可實現調度場景下代碼動態傳參。在節點編輯頁面定義函數變量后,需進入調度配置中為變量賦值。本文示例為變量
bizdate
賦值為前一天,即在函數計算節點定時運行時間的前一天,DataWorks會調度運行該節點。更多調度參數的配置,詳情請參見配置調度參數。節點的更多調度屬性,詳情請參見任務調度屬性配置概述。
步驟三:提交并發布節點
函數計算節點需要提交發布至生產環境后,才會自動調度運行。
保存并提交節點。
可選:發布節點。
后續步驟
任務提交發布至生產運維中心調度后,您可通過DataWorks的運維中心進行相關運維操作,詳情請參見運維中心。
在掌握如何創建和使用函數計算節點的基本步驟之后,您可通過最佳實踐進一步深入了解該節點,詳情請參見在DataWorks中通過函數計算節點實現動態為PDF添加水印。