DataWorks為您提供Function Compute節點,允許您通過自訂代碼實現不同業務需求。Function Compute節點支援周期性調度,便於執行定時任務。同時,該節點能夠與DataWorks其他類型節點配合使用,協助您構建完整的資料處理流程。本文將為您介紹如何建立並使用Function Compute節點。
背景資訊
DataWorks基於MaxCompute、Hologres、EMR、AnalyticDB、CDP等巨量資料引擎,為資料倉儲、資料湖、湖倉一體等解決方案提供統一的全鏈路巨量資料開發治理平台。DataWorks資料開發(DataStudio)模組用於定義周期調度任務的開發及調度屬性,與營運中心配合使用,面向各引擎(MaxCompute、Hologres、EMR等)提供可視化開發主介面,支援智能代碼開發、多引擎混編工作流程、正常化任務發布等能力,協助您輕鬆構建離線數倉、即時數倉與即席分析系統,保證資料生產的高效穩定。
DataWorks的資料開發(DataStudio)可通過調用Function Compute的事件函數來處理請求事件,通過配置節點的周期調度屬性,發布到生產環境後,就可實現自動調度。
前提條件
DataWorks服務
Function Compute
使用限制
功能限制
DataWorks目前僅支援調用事件函數,不支援調用HTTP函數。因此,若要在DataWorks周期性調度處理事件函數,則在建立函數時,需要建立用於處理事件請求的事件函數。更多函數類型介紹,詳情請參見函數類型。
地區限制
DataWorks目前僅支援華東1(杭州)、華東2(上海)、華北2(北京)、華北3(張家口)、華南1(深圳)、中國香港、新加坡、英國(倫敦)、美國(矽谷)、美國(維吉尼亞)、德國(法蘭克福)地區的工作空間使用Function Compute功能。
注意事項
使用Function Compute節點時,需基於已建立的服務調用待執行事件函數。選擇服務時,若無法擷取已建立的服務列表,則可能原因如下:
當前帳號欠費:請儲值後重新整理節點配置頁面重新嘗試。
當前登入使用者沒有擷取服務列表的許可權:請聯絡阿里雲主帳號為您添加fc:ListServices許可權,或直接賦予您 AliyunFCFullAccess許可權,授權後請重新整理節點配置頁面重新嘗試。授權操作,請參見為RAM使用者授權。
使用DataWorks的Function Compute節點運行函數時,若運行時間長度超過1小時,請將DataWorksFunction Compute節點的調用方式配置為非同步呼叫。Function Compute非同步呼叫的介紹,請參考非同步呼叫。
若使用RAM使用者(即子帳號)進行Function Compute節點開發,則需為該使用者添加如下系統策略或自訂策略許可權。
策略類型
策略描述
相關參考
系統策略
使用系統策略時,需授權使用者
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)介面,您可通過如下方式建立Function Compute節點。
步驟二:建立並配置Function Compute節點
建立Function Compute節點。
進入節點建立入口後,根據介面提示,配置建立節點的路徑、名稱等基本資料,建立節點。
配置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產品中,目標函數詳情頁的
內容對應。樣本對
para_service_01_by_time_triggers
函數的相關變數傳入如下參數。參數中,使用${}
格式定義了名為bizdate
的變數,該變數需在步驟4中賦值。{ "payload": "payload1", "triggerTime": "${bizdate}", "triggerName": "triggerName1" }
可選:調試運行Function Compute節點。
Function Compute節點配置完成後,您可單擊表徵圖,指定任務啟動並執行資源群組並為代碼變數賦值常量進行調試運行,測試節點代碼邏輯是否正確。運行時,參數配置格式為
key=value
,輸入多個參數時,需使用逗號(,)分隔。說明為保障任務高並發執行且無法錯峰啟動並執行情況下,當前任務能夠定時調度執行,建議使用獨享調度資源群組。若無合適資源群組,請重新建立,詳情請參見新增和使用獨享調度資源群組。
更多任務調試運行詳情,請參見調試運行任務。
配置節點的周期調度屬性。
DataWorks提供的調度參數,可實現調度情境下代碼動態傳參。在節點編輯頁面定義函數變數後,需進入調度配置中為變數賦值。本文樣本為變數
bizdate
賦值為前一天,即在Function Compute節點定時已耗用時間的前一天,DataWorks會調度運行該節點。更多調度參數的配置,詳情請參見配置調度參數。節點的更多調度屬性,詳情請參見任務調度屬性配置概述。
步驟三:提交並發布節點
Function Compute節點需要提交發布至生產環境後,才會自動調度運行。
儲存並提交節點。
單擊工具列中的、表徵圖,儲存並提交節點。提交節點時,請根據提示輸入變更描述,並根據需要選擇是否進行程式碼檢閱及煙霧測試 (Smoke Test)。
說明您需在調度配置中設定節點的重跑屬性和依賴的上遊節點,才可以提交節點。
開啟程式碼檢閱後,開發人員提交的節點代碼必須通過評審人員的審核才可發布,詳情請參見程式碼檢閱。
為保障調度節點任務執行符合預期,建議您在發布前對任務進行煙霧測試 (Smoke Test),詳情請參見煙霧測試 (Smoke Test)。
可選:發布節點。
後續步驟
任務提交發布至生產營運中心調度後,您可通過DataWorks的營運中心進行相關營運操作,詳情請參見營運中心。
在掌握如何建立和使用Function Compute節點的基本步驟之後,您可通過最佳實務進一步深入瞭解該節點,詳情請參見在DataWorks中通過Function Compute節點實現動態為PDF添加浮水印。