函數(shù)計(jì)算節(jié)點(diǎn)
DataWorks為您提供函數(shù)計(jì)算節(jié)點(diǎn),允許您通過自定義代碼實(shí)現(xiàn)不同業(yè)務(wù)需求。函數(shù)計(jì)算節(jié)點(diǎn)支持周期性調(diào)度,便于執(zhí)行定時(shí)任務(wù)。同時(shí),該節(jié)點(diǎn)能夠與DataWorks其他類型節(jié)點(diǎn)配合使用,幫助您構(gòu)建完整的數(shù)據(jù)處理流程。本文將為您介紹如何創(chuàng)建并使用函數(shù)計(jì)算節(jié)點(diǎn)。
前提條件
已開通函數(shù)計(jì)算。
您需要先開通函數(shù)計(jì)算服務(wù)后,才可在DataWorks使用函數(shù)計(jì)算節(jié)點(diǎn)。開通函數(shù)計(jì)算后,為保障開發(fā)過程順利,建議您先了解函數(shù)計(jì)算產(chǎn)品的相關(guān)介紹及功能特性。詳情請參見開通函數(shù)計(jì)算、函數(shù)計(jì)算介紹。
已創(chuàng)建調(diào)用函數(shù)所需的服務(wù)。
服務(wù)是函數(shù)計(jì)算的基本資源單位,您可以在服務(wù)級(jí)別上進(jìn)行授權(quán)、日志配置和創(chuàng)建函數(shù)等操作。因此,進(jìn)行函數(shù)開發(fā)前您需要先創(chuàng)建服務(wù)。創(chuàng)建服務(wù),詳情請參見創(chuàng)建服務(wù)。
已創(chuàng)建函數(shù)。
函數(shù)是調(diào)度與運(yùn)行的基本單位,是一段代碼的處理邏輯。您需根據(jù)函數(shù)計(jì)算提供的函數(shù)接口形式編寫代碼,并將代碼以函數(shù)的形式部署到函數(shù)計(jì)算進(jìn)行應(yīng)用。創(chuàng)建函數(shù),詳情請參見創(chuàng)建函數(shù)。
背景信息
函數(shù)計(jì)算是一款事件驅(qū)動(dòng)的全托管計(jì)算服務(wù),無需您單獨(dú)采購與管理服務(wù)器等基礎(chǔ)設(shè)施,通過編寫并上傳代碼或鏡像,即可進(jìn)行服務(wù)、函數(shù)等的管理操作。函數(shù)計(jì)算支持運(yùn)行如下兩種類型的函數(shù):
事件函數(shù):適用于事件驅(qū)動(dòng)模型中通過事件發(fā)生來調(diào)用關(guān)聯(lián)函數(shù)。
HTTP函數(shù):適用于快速構(gòu)建Web應(yīng)用等場景。
您可在函數(shù)計(jì)算節(jié)點(diǎn)配置需要運(yùn)行的服務(wù)與函數(shù),并將該節(jié)點(diǎn)發(fā)布至生產(chǎn)調(diào)度,實(shí)現(xiàn)相應(yīng)服務(wù)與函數(shù)的周期性執(zhí)行。
使用限制
功能限制
DataWorks目前僅支持調(diào)用事件函數(shù),不支持調(diào)用HTTP函數(shù)。因此,若要在DataWorks周期性調(diào)度處理事件函數(shù),則在創(chuàng)建函數(shù)時(shí),需要?jiǎng)?chuàng)建用于處理事件請求的事件函數(shù)。更多函數(shù)類型介紹,詳情請參見函數(shù)類型。
地域限制
DataWorks目前僅支持華東1(杭州)、華東2(上海)、華北2(北京)、華北3(張家口)、華南1(深圳)、西南1(成都)、中國香港、新加坡、馬來西亞(吉隆坡)、印度尼西亞(雅加達(dá))、德國(法蘭克福)、英國(倫敦)、美國(硅谷)、美國(弗吉尼亞)地域的工作空間使用函數(shù)計(jì)算功能。
注意事項(xiàng)
使用函數(shù)計(jì)算節(jié)點(diǎn)時(shí),需基于已創(chuàng)建的服務(wù)調(diào)用待執(zhí)行事件函數(shù)。選擇服務(wù)時(shí),若無法獲取已創(chuàng)建的服務(wù)列表,則可能原因如下:
當(dāng)前賬號(hào)欠費(fèi):請充值后刷新節(jié)點(diǎn)配置頁面重新嘗試。
當(dāng)前登錄用戶沒有獲取服務(wù)列表的權(quán)限:請聯(lián)系阿里云主賬號(hào)為您添加fc:ListServices權(quán)限,或直接賦予您 AliyunFCFullAccess權(quán)限,授權(quán)后請刷新節(jié)點(diǎn)配置頁面重新嘗試。授權(quán)操作,請參見為RAM用戶授權(quán)。
使用DataWorks的函數(shù)計(jì)算節(jié)點(diǎn)運(yùn)行函數(shù)時(shí),若運(yùn)行時(shí)長超過1小時(shí),請將DataWorks函數(shù)計(jì)算節(jié)點(diǎn)的調(diào)用方式配置為異步調(diào)用。函數(shù)計(jì)算異步調(diào)用的介紹,請參考異步調(diào)用。
若使用RAM用戶(即子賬號(hào))進(jìn)行函數(shù)計(jì)算節(jié)點(diǎn)開發(fā),則需為該用戶添加如下系統(tǒng)策略或自定義策略權(quán)限。
策略類型
策略描述
相關(guān)參考
系統(tǒng)策略
使用系統(tǒng)策略時(shí),需授權(quán)用戶
AliyunFCFullAccess
,或AliyunFCReadOnlyAccess
及AliyunFCInvocationAccess
權(quán)限策略。自定義策略
使用自定義策略時(shí),需授權(quán)用戶如下所有權(quán)限策略。
fc:GetService
fc:ListServices
fc:GetFunction
fc:InvokeFunction
fc:ListFunctions
fc:GetFunctionAsyncInvokeConfig
fc:ListServiceVersions
fc:ListAliases
fc:GetAlias
fc:ListFunctionAsyncInvokeConfigs
fc:GetStatefulAsyncInvocation
fc:StopStatefulAsyncInvocation
步驟一:進(jìn)入節(jié)點(diǎn)創(chuàng)建入口
登錄DataWorks控制臺(tái),切換至目標(biāo)地域后,單擊左側(cè)導(dǎo)航欄的 ,在下拉框中選擇對應(yīng)工作空間后單擊進(jìn)入數(shù)據(jù)開發(fā)。
進(jìn)入節(jié)點(diǎn)創(chuàng)建入口。
在數(shù)據(jù)開發(fā)(DataStudio)界面,您可通過如下方式創(chuàng)建函數(shù)計(jì)算節(jié)點(diǎn)。
步驟二:創(chuàng)建并配置函數(shù)計(jì)算節(jié)點(diǎn)
創(chuàng)建函數(shù)計(jì)算節(jié)點(diǎn)。
進(jìn)入節(jié)點(diǎn)創(chuàng)建入口后,根據(jù)界面提示,配置新建節(jié)點(diǎn)的路徑、名稱等基本信息,創(chuàng)建節(jié)點(diǎn)。
配置函數(shù)計(jì)算節(jié)點(diǎn)參數(shù)。
在節(jié)點(diǎn)編輯頁面,根據(jù)業(yè)務(wù)需求,選擇執(zhí)行本次任務(wù)需調(diào)用的函數(shù)并配置其運(yùn)行方式及變量詳情。
參數(shù)
描述
選擇函數(shù)
選擇此次任務(wù)執(zhí)行所需調(diào)用的函數(shù)。如果沒有可用函數(shù),則需新建,詳情請參見創(chuàng)建函數(shù)。
說明DataWorks目前僅支持調(diào)用事件函數(shù),不支持調(diào)用HTTP函數(shù)。因此,若要在DataWorks周期性調(diào)度處理事件函數(shù),則在創(chuàng)建函數(shù)時(shí),需要?jiǎng)?chuàng)建用于處理事件請求的事件函數(shù)。更多函數(shù)類型介紹,詳情請參見函數(shù)類型。
示例選擇
para_service_01_by_time_triggers
函數(shù)。創(chuàng)建該函數(shù)時(shí),選擇平臺(tái)提供的定時(shí)觸發(fā)函數(shù)的示例代碼。代碼邏輯如下。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
更多函數(shù)的示例代碼,請參見示例代碼。
選擇版本或別名
選擇后續(xù)調(diào)用函數(shù)時(shí)所使用的服務(wù)版本或別名。默認(rèn)版本為 LATEST。
服務(wù)版本
函數(shù)計(jì)算提供服務(wù)級(jí)別的版本控制功能,支持您為自己的服務(wù)發(fā)布一個(gè)或多個(gè)版本。當(dāng)發(fā)布版本時(shí),函數(shù)計(jì)算會(huì)為服務(wù)生成快照,包括服務(wù)的配置、服務(wù)內(nèi)的函數(shù)代碼及函數(shù)配置,但不包括觸發(fā)器,并自動(dòng)分配一個(gè)版本號(hào)與其關(guān)聯(lián),以供后續(xù)使用。發(fā)布版本,詳情請參見發(fā)布版本。
版本別名
函數(shù)計(jì)算支持為服務(wù)的版本創(chuàng)建別名。別名用于指向特定版本,您可利用別名輕松實(shí)現(xiàn)發(fā)布、回滾以及灰度發(fā)布等功能。別名無法脫離服務(wù)或版本單獨(dú)存在。使用別名訪問服務(wù)或函數(shù)時(shí),函數(shù)計(jì)算會(huì)將別名解析為其指向的版本,調(diào)用方無需了解別名指向的具體版本。創(chuàng)建別名,詳情請參見創(chuàng)建別名。
調(diào)用方式
支持使用如下方式調(diào)用函數(shù):
同步調(diào)用:該方式事件將直接觸發(fā)函數(shù),函數(shù)計(jì)算會(huì)運(yùn)行該函數(shù)并等待響應(yīng),當(dāng)函數(shù)調(diào)用完成后,函數(shù)計(jì)算直接返回執(zhí)行結(jié)果。
異步調(diào)用:該方式函數(shù)計(jì)算會(huì)將事件請求先持久化后再立即返回響應(yīng),而不是等待請求執(zhí)行完成后才返回響應(yīng)。
若函數(shù)存在耗時(shí)較長、資源消耗較大或易錯(cuò)邏輯,可采用異步調(diào)用,提升程序響應(yīng)速度,更加可靠地應(yīng)對突發(fā)流量。
運(yùn)行時(shí)長超過1小時(shí)的函數(shù)計(jì)算任務(wù),請使用異步調(diào)用。
變量
基于實(shí)際應(yīng)用,對函數(shù)中的變量進(jìn)行賦值。該變量與函數(shù)計(jì)算產(chǎn)品中,目標(biāo)函數(shù)詳情頁的
內(nèi)容對應(yīng)。示例對
para_service_01_by_time_triggers
函數(shù)的相關(guān)變量傳入如下參數(shù)。參數(shù)中,使用${}
格式定義了名為bizdate
的變量,該變量需在步驟4中賦值。{ "payload": "payload1", "triggerTime": "${bizdate}", "triggerName": "triggerName1" }
可選:調(diào)試運(yùn)行函數(shù)計(jì)算節(jié)點(diǎn)。
函數(shù)計(jì)算節(jié)點(diǎn)配置完成后,您可單擊圖標(biāo),指定任務(wù)運(yùn)行的資源組并為代碼變量賦值常量進(jìn)行調(diào)試運(yùn)行,測試節(jié)點(diǎn)代碼邏輯是否正確。運(yùn)行時(shí),參數(shù)配置格式為
key=value
,輸入多個(gè)參數(shù)時(shí),需使用逗號(hào)(,)分隔。說明更多任務(wù)調(diào)試運(yùn)行詳情,請參見調(diào)試運(yùn)行任務(wù)。
配置節(jié)點(diǎn)的周期調(diào)度屬性。
DataWorks提供的調(diào)度參數(shù),可實(shí)現(xiàn)調(diào)度場景下代碼動(dòng)態(tài)傳參。在節(jié)點(diǎn)編輯頁面定義函數(shù)變量后,需進(jìn)入調(diào)度配置中為變量賦值。本文示例為變量
bizdate
賦值為前一天,即在函數(shù)計(jì)算節(jié)點(diǎn)定時(shí)運(yùn)行時(shí)間的前一天,DataWorks會(huì)調(diào)度運(yùn)行該節(jié)點(diǎn)。更多調(diào)度參數(shù)的配置,詳情請參見配置調(diào)度參數(shù)。節(jié)點(diǎn)的更多調(diào)度屬性,詳情請參見任務(wù)調(diào)度屬性配置概述。
步驟三:提交并發(fā)布節(jié)點(diǎn)
函數(shù)計(jì)算節(jié)點(diǎn)需要提交發(fā)布至生產(chǎn)環(huán)境后,才會(huì)自動(dòng)調(diào)度運(yùn)行。
保存并提交節(jié)點(diǎn)。
單擊工具欄中的、圖標(biāo),保存并提交節(jié)點(diǎn)。提交節(jié)點(diǎn)時(shí),請根據(jù)提示輸入變更描述,并根據(jù)需要選擇是否進(jìn)行代碼評(píng)審及冒煙測試。
說明您需在調(diào)度配置中設(shè)置節(jié)點(diǎn)的重跑屬性和依賴的上游節(jié)點(diǎn),才可以提交節(jié)點(diǎn)。
開啟代碼評(píng)審后,開發(fā)人員提交的節(jié)點(diǎn)代碼必須通過評(píng)審人員的審核才可發(fā)布,詳情請參見代碼評(píng)審。
為保障調(diào)度節(jié)點(diǎn)任務(wù)執(zhí)行符合預(yù)期,建議您在發(fā)布前對任務(wù)進(jìn)行冒煙測試,詳情請參見冒煙測試。
可選:發(fā)布節(jié)點(diǎn)。
如果您使用的是標(biāo)準(zhǔn)模式的工作空間,提交成功后,需單擊右上方的發(fā)布,發(fā)布節(jié)點(diǎn)。相關(guān)介紹請參見標(biāo)準(zhǔn)模式的工作空間、發(fā)布任務(wù)。
后續(xù)步驟
任務(wù)提交發(fā)布至生產(chǎn)運(yùn)維中心調(diào)度后,您可通過DataWorks的運(yùn)維中心進(jìn)行相關(guān)運(yùn)維操作,詳情請參見運(yùn)維中心。
在掌握如何創(chuàng)建和使用函數(shù)計(jì)算節(jié)點(diǎn)的基本步驟之后,您可通過最佳實(shí)踐進(jìn)一步深入了解該節(jié)點(diǎn),詳情請參見在DataWorks中通過函數(shù)計(jì)算節(jié)點(diǎn)實(shí)現(xiàn)動(dòng)態(tài)為PDF添加水印。