本文為您介紹如何在DataWorks中通過Function Compute節點調用Function Compute服務,實現周期性對OSS中的增量PDF檔案添加浮水印。
背景介紹
DataWorks當前已經支援通過Function Compute節點調用Function Compute服務,在Function Compute服務中可以自訂各種功能,最終可通過DataWorks進行調用。
前提條件
已開通DataWorks服務,詳情請參見開通DataWorks服務。
已開通Function Compute服務,詳情請參見快速建立函數。
已開通OSS,詳情請參見開通OSS服務。建立Bucket並已向其上傳需要添加浮水印的pdf檔案。本文樣本:在Bucket
bucket-test222下建立目錄2023-08-15,並上傳example.pdf到此目錄下。
使用限制
功能限制
DataWorks目前僅支援調用事件函數,不支援調用HTTP函數。因此,若要在DataWorks周期性調度處理事件函數,則在建立函數時,需要建立用於處理事件請求的事件函數。更多函數類型介紹,詳情請參見函數類型。
地區限制
DataWorks目前僅支援華東1(杭州)、華東2(上海)、華北2(北京)、華南1(深圳)、西南1(成都)、中國香港、新加坡、馬來西亞(吉隆坡)、印尼(雅加達)、德國(法蘭克福)、英國(倫敦)、美國(矽谷)、美國(維吉尼亞)地區的工作空間使用Function Compute功能。
步驟一:建立Function Compute應用
登入Function Compute控制台,在左側導覽列,單擊應用。
在應用頁面,單擊建立應用,然後選擇通過模板建立應用,在“搜尋應用模板”輸入框中搜尋“pdf檔案加浮水印”,在下方模板地區,找到pdf檔案加浮水印模板,移動游標到該卡片中,然後單擊立即建立。
說明“pdf檔案加浮水印”應用的原始碼可參見GitHub。此應用實現的邏輯為:將OSS中的PDF檔案按照指定的內容添加浮水印並寫回相同的OSS路徑下。
設定建立應用的參數。
參數
描述
部署類型
本文選擇直接部署。
應用程式名稱
預設已自動產生一個符合要求的名稱,可根據實際情況修改。
角色名稱
預設已選擇AliyunFCServerlessDevsRole,其對應的策略可根據實際情況進行設定。
通過Serverless應用中心部署應用時,可能會訪問其他雲端服務,例如,部署Function Compute的服務和函數資源,建立或更新VPC、NAS、SLS相關資源等,此時需要授予Function Compute相應的存取權限。首先為應用或環境關聯一個RAM服務角色,然後將目標授信服務設定為Function Compute,應用中心使用AssumeRole - 擷取扮演角色的臨時身份憑證方式訪問使用者的雲端服務。
為了簡化授權操作步驟,Serverless應用中心提供了系統預設角色,即AliyunFCServerlessDevsRole。該角色包含了應用中心需要訪問的部分雲資源許可權。您可以登入RAM角色管理主控台,查看AliyunFCServerlessDevsRole角色的許可權內容。
地區
建立應用所在的地區,後面選擇OSS 儲存桶名時僅可選擇此地區下的OSS Bucket。
函數名
預設已自動產生一個符合要求的名稱,可根據實際情況修改。
時區
預設已自動選擇當前地區下所屬時區,可根據實際情況修改。
OSS 儲存桶名
僅可選擇和“建立應用所在的地區”同地區下的Bucket。
RAM角色ARN
預設已自動選擇AliyunFcDefaultRole,可根據實際情況修改。
為了簡化您的授權操作,Function Compute為您提供了一個系統預設的服務角色,即AliyunFcDefaultRole。該角色內包含了Function Compute需要訪問的部分雲資源許可權。關於如何建立預設角色AliyunFcDefaultRole和綁定該角色的操作步驟,請參見步驟一:開通Function Compute服務。
說明如果您在建立應用的過程中,提示您當前選擇的應用還需要一些額外的許可權,請單擊前往授權。
單擊建立並部署預設環境。詳情頁上顯示部署成功時,表示部署完成。

單擊應用頁面的應用程式名稱,進入應用詳情。

找到預設環境單擊環境詳情下的函數名稱,進入函數詳情。

單擊測試後,輸入參數,進行函數測試。

事件名稱:輸入事件名稱。
事件內容:輸入JSON格式內容。本文樣本如下:
重要如果直接複製以下JSON樣本內容,請務必將
//及其後面的注釋內容刪除,否則它無法通過JSON格式校正。// 以下配置為對pdf檔案(2023-08-15/example.pdf)添加浮水印文字(DataWorks),使用30號字型Helvetica,具體參數含義參見各個參數後面的注釋 { "pdf_file": "2023-08-15/example.pdf", // PDF檔案在OSS Bucket中的路徑 "mark_text": "DataWorks", // 浮水印文字,如果給PDF加浮水印,該參數必填 "pagesize": [595.275590551181, 841.8897637795275], // 選擇性參數,預設是A4大小,(21*cm, 29.7*cm), 其中1cm=28.346456692913385 "font": "Helvetica", // 字型,選擇性參數,預設為Helvetica, 中文字型可選擇為zenhei或microhei "font_size": 20, // 字型大小,選擇性參數,預設為30 "font_color": [0, 0, 0], // 字型顏色,格式為 RGB,預設為黑色 "rotate": 30, // 旋轉角度, 選擇性參數,預設為0 "opacity": 0.1, // 透明度, 選擇性參數,預設為 0.1,1表示不透明 "density": [198.4251968503937, 283.46456692913387] // 浮水印密度,浮水印文字間隔,預設是[141.73228346456693, 141.73228346456693],即(7*cm, 10*cm), 表示每個浮水印文字在橫座標和縱座標的間隔分別是7cm和10cm }
單擊測試函數按鈕,顯示執行成功後,可在OSS中對應的源檔案路徑下查看添加過浮水印的pdf檔案。本文樣本會產生
example-out.pdf檔案。
查看OSS中的檔案,如下:

步驟二:在DataWorks中建立並配置Function Compute節點
登入DataWorks控制台。
將頁面頂部導覽列的地區列表切換為步驟一:建立Function Compute應用中指定的地區。
單擊左側導覽列中的資料開發與營運下的資料開發,選擇工作空間後,進入DataWorks資料開發頁面。
單擊目標商務程序名稱,在其展開的通用節點上按右鍵並選擇Function Compute。在建立節點彈出框中輸入節點名稱並單擊確定按鈕,完成Function Compute節點的建立。
設定Function Compute節點參數。

參數
描述
選擇函數
選擇步驟設定建立應用的參數中輸入的函數名稱。如需建立,詳情請參見管理函數。
說明DataWorks目前僅支援調用事件函數,不支援調用HTTP函數。因此,若要在DataWorks周期性調度處理事件函數,則在建立函數時,需要建立用於處理事件請求的事件函數。更多函數類型介紹,詳情請參見函數類型。
選擇版本或別名
選擇後續調用函數時所使用的服務版本或別名。預設版本為LATEST。本文選擇預設版本。
服務版本
Function Compute提供服務等級的版本控制功能,支援您為自己的服務發布一個或多個版本。當發布版本時,Function Compute會為服務產生快照,包括服務的配置、服務內的函數代碼及函數配置,但不包括觸發器,並自動分配一個版本號碼與其關聯,以供後續使用。發布版本,詳情請參見發布版本。
版本別名
Function Compute支援為服務的版本建立別名。別名用於指向特定版本,您可利用別名輕鬆實現發布、復原以及灰階發布等功能。別名無法脫離服務或版本單獨存在。使用別名訪問服務或函數時,Function Compute會將別名解析為其指向的版本,調用方無需瞭解別名指向的具體版本。建立別名,詳情請參見建立別名。
調用方式
變數
調用函數的參數。本文使用事件內容中的JSON內容並進行適當修改,以實現每天增量對OSS中的PDF檔案添加浮水印。
// 以下配置為對pdf檔案(${current_date}/example.pdf)添加浮水印文字 { "pdf_file": "${current_date}/example.pdf", // PDF檔案在OSS Bucket中的路徑 "mark_text": "DataWorks", // 浮水印文字,如果給PDF加浮水印,該參數必填 "pagesize": [595.275590551181, 841.8897637795275], // 選擇性參數,預設是A4大小,(21*cm, 29.7*cm), 其中1cm=28.346456692913385 "font": "Helvetica", // 字型,選擇性參數,預設為Helvetica, 中文字型可選擇為zenhei或microhei "font_size": 20, // 字型大小,選擇性參數,預設為30 "font_color": [0, 0, 0], // 字型顏色,格式為 RGB,預設為黑色 "rotate": 30, // 旋轉角度, 選擇性參數,預設為0 "opacity": 0.1, // 透明度, 選擇性參數,預設為 0.1,1表示不透明 "density": [198.4251968503937, 283.46456692913387] // 浮水印密度,浮水印文字間隔,預設是[141.73228346456693, 141.73228346456693],即(7*cm, 10*cm), 表示每個浮水印文字在橫座標和縱座標的間隔分別是7cm和10cm }說明在
pdf_file的值(${current_date}/example.pdf)中,${current_date}表示使用一個名稱為current_date的變數。DataWorks在調度任務時會將
${current_date}替換為實際的值,變數可在調度參數中設定。例如:在2023年8月15日執行任務時,pdf_file為2023-08-15/example.pdf;在2023年8月16日執行時,pdf_file為2023-08-16/example.pdf。業務系統只需每天在當前任務調度前按時間規則產生相應路徑的PDF檔案,即可每天動態為新增的PDF檔案添加浮水印。
本樣本需要在運行任務之前向OSS中上傳符合此路徑
${current_date}/example.pdf的pdf檔案。例如:2023-08-15/example.pdf。
可選:調試運行Function Compute節點。節點配置完成後,您可單擊
表徵圖,指定任務啟動並執行資源群組並為代碼變數賦值常量進行調試運行,測試節點代碼邏輯是否正確。例如:current_date=2023-08-15,代表Function Compute服務會對OSS中的2023-08-15/example.pdf檔案添加浮水印。配置節點的周期調度屬性。DataWorks提供的調度參數,可實現調度情境下代碼動態傳參。開啟右側的調度配置,在參數地區設定參數。本文樣本添加參數
current_date,參數值為$[yyyy-mm-dd],表示運行任務時的當前年月日。更多調度參數的配置,請參見調度參數支援的格式。更多調度屬性,請參見任務調度屬性配置概述。
三、提交並發布節點
Function Compute節點需要提交發布至生產環境後,才會自動調度運行。
儲存並提交節點。
單擊工具列中的
、
表徵圖,儲存並提交節點。提交節點時,請根據提示輸入變更描述,並根據需要選擇是否進行程式碼檢閱及煙霧測試 (Smoke Test)。說明您需在調度配置中設定節點的重跑屬性和依賴的上遊節點,才可以提交節點。
開啟程式碼檢閱後,開發人員提交的節點代碼必須通過評審人員的審核才可發布,詳情請參見程式碼檢閱。
為保障調度節點任務執行符合預期,建議您在發布前對任務進行煙霧測試 (Smoke Test),詳情請參見煙霧測試 (Smoke Test)。
可選:發布節點。
後續步驟
任務提交發布至生產營運中心調度後,您可通過DataWorks的營運中心進行相關營運操作,詳情請參見營運中心。
在掌握如何建立和使用Function Compute節點的基本步驟之後,您可通過最佳實務進一步深入瞭解該節點,詳情請參見在DataWorks中通過Function Compute節點實現動態為PDF添加浮水印。