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節點開發,則需為該使用者添加如下系統策略或自訂策略許可權。
策略類型
策略描述
系統策略
使用系統策略時,需授權使用者
AliyunFCFullAccess、AliyunFCReadOnlyAccess及AliyunFCInvocationAccess權限原則。自訂策略
使用Function Compute,自訂策略常見授權如下:
fc:GetAsyncTaskfc:StopAsyncTaskfc:GetServicefc:ListServicesfc:GetFunctionfc:InvokeFunctionfc:ListFunctionsfc:GetFunctionAsyncInvokeConfigfc:ListServiceVersionsfc:ListAliasesfc:GetAliasfc:ListFunctionAsyncInvokeConfigsfc:GetStatefulAsyncInvocationfc:StopStatefulAsyncInvocation
說明更多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的變數,該變數需進行賦值。{ "payload": "payload1", "triggerTime": "${bizdate}", "triggerName": "triggerName1" }完成Function Compute節點指令碼開發後,需對Function Compute節點進行調度配置,以實現Function Compute任務的周期調度,詳情請參見節點調度。