本文為您介紹如何在DataWorks中通過函數計算節點調用函數計算服務,并實現發送郵件功能。
背景介紹
DataWorks當前已經支持通過函數計算節點調用函數計算服務,在函數計算服務中可以自定義各種功能,最終可通過DataWorks進行調用。
前提條件
已開通DataWorks服務,詳情請參見開通DataWorks服務。
已開通函數計算服務,詳情請參見快速創建函數。
使用限制
功能限制
DataWorks目前僅支持調用事件函數,不支持調用HTTP函數。因此,若要在DataWorks周期性調度處理事件函數,則在創建函數時,需要創建用于處理事件請求的事件函數。更多函數類型介紹,詳情請參見函數類型。
地域限制
DataWorks目前僅支持華東1(杭州)、華東2(上海)、華北2(北京)、華北3(張家口)、華南1(深圳)、西南1(成都)、中國香港、新加坡、馬來西亞(吉隆坡)、印度尼西亞(雅加達)、德國(法蘭克福)、英國(倫敦)、美國(硅谷)、美國(弗吉尼亞)地域的工作空間使用函數計算功能。
步驟一:創建函數
登錄函數計算控制臺,在頂部導航欄切換至目標地域。
在左側導航欄,單擊函數。
在函數頁面單擊創建函數。
選擇事件函數并配置函數信息。
參數
描述
函數名稱
輸入函數名稱。本文示例為:
send-mail-fc
。運行環境
本文使用Python 3.9。
代碼上傳方式
本文選擇使用示例代碼并使用Hello, world! 示例。
高級配置、環境變量可根據實際情況進行設置。詳情可參見創建函數。
單擊創建,完成函數創建,進入函數詳情的代碼頁面。
編輯
index.py
,輸入業務邏輯代碼。本文以發送郵件為例,代碼如下:重要以下示例代碼中的
mail_host
、mail_port
、mail_username
、mail_password
、mail_sender
、mail_receivers
參數請根據實際情況設置。電子郵件的賬號必須開啟SMTP服務。某些電子郵件服務提供商默認未開啟,需自行檢查并開啟。例如:163郵箱默認就未開啟SMTP服務。
某些電子郵件服務提供商基于安全原因,可能會使用一種類似授權碼的專用密碼,用于三方郵件客戶端進行登錄。這時
mail_password
需設置為授權碼而不是賬號密碼。例如:163郵箱就存在授權碼,且三方登錄時必須使用授權碼來作為密碼登錄。
# -*- coding: utf-8 -*- import logging import json import smtplib from email.mime.text import MIMEText def handler(event, context): evts = json.loads(event) logger = logging.getLogger() logger.info('event: %s', evts) mail_host = 'smtp.163.com' ## 郵箱服務地址 mail_port = '465'; ## 郵箱smtp協議端口號 mail_username = 'sender_****@163.com' ## 登錄用戶名 mail_password = 'EWEL******KRU' ## 登錄用戶密碼 mail_sender = 'sender_****@163.com' ## 發件人郵箱地址 mail_receivers = ['receiver_****@163.com'] ## 收件人郵箱地址 mail_content=generate_mail_content(evts) message = MIMEText(mail_content,'plain','utf-8') message['Subject'] = 'mail test' message['From'] = mail_sender message['To'] = mail_receivers[0] smtpObj = smtplib.SMTP_SSL(mail_host + ':' + mail_port) smtpObj.login(mail_username,mail_password) smtpObj.sendmail(mail_sender,mail_receivers,message.as_string()) smtpObj.quit() return 'mail send success' def generate_mail_content(evt): mail_content='' if 'msg' in evt.keys(): mail_content=evt['msg'] else: logger = logging.getLogger() logger.error('msg not present in event') ''' 此處可增加處理郵件內容讀取邏輯 ''' return mail_content
單擊部署代碼按鈕。
單擊測試函數右側下拉箭頭,在彈出的菜單中單擊配置測試參數,輸入測試參數后單擊確定按鈕。
事件內容輸入:
{ "msg": "This is a test message" }
單擊測試函數即可完成測試。
檢查收件人的郵箱中是否收到郵件。
說明某些電子郵件服務器可能會將未知發件人識別為垃圾郵件從而進行攔截,因此若您未在收件箱中找到測試郵件,則需到垃圾郵件中進行查找。
步驟二:在DataWorks中創建并配置函數計算節點
登錄DataWorks控制臺。
單擊左側導航欄中的工作空間。進入工作空間列表頁面。
將頁面頂部導航欄的地域列表切換為步驟一:創建函數中指定的地域。
在工作空間列表中單擊目標工作空間名稱,進入工作空間詳情頁面。若您在當前地域下無工作空間,則需創建一個工作空間,詳情可參見創建工作空間。
單擊左側導航欄中的數據建模與開發下的數據開發,進入DataWorks數據開發頁面。
單擊目標業務流程名稱,在業務流程中,右擊通用,選擇
。在創建節點彈出框中輸入節點名稱并單擊確定按鈕,完成函數計算節點的創建。設置函數計算節點參數。
參數
描述
選擇版本或別名
選擇后續調用函數時所使用的服務版本或別名。默認版本為LATEST。本文選擇默認版本。
選擇函數
選擇步驟一:創建函數中創建的函數。本文為:
send-mail-fc
。如需新建,詳情請參見管理函數。說明DataWorks目前僅支持調用事件函數,不支持調用HTTP函數。因此,若要在DataWorks周期性調度處理事件函數,則在創建函數時,需要創建用于處理事件請求的事件函數。更多函數類型介紹,詳情請參見函數類型。
調用方式
本文選擇同步。調用方式詳情可參見函數調用。
變量
調用函數的參數。本文示例如下:
{ "msg": "This is a test message from dataworks!" }
可選:調試運行函數計算節點。節點配置完成后,您可單擊圖標,指定任務運行的資源組并為代碼變量賦值常量進行調試運行,測試節點代碼邏輯是否正確。
配置節點的周期調度屬性。DataWorks提供的調度參數,可實現調度場景下代碼動態傳參。更多調度參數的配置,請參見調度參數支持的格式。更多調度屬性,請參見任務調度屬性配置概述。
步驟三:提交并發布節點
函數計算節點需要提交發布至生產環境后,才會自動調度運行。
保存并提交節點。
可選:發布節點。
后續步驟
任務提交發布至生產運維中心調度后,您可通過DataWorks的運維中心進行相關運維操作,詳情請參見運維中心。
在掌握如何創建和使用函數計算節點的基本步驟之后,您可通過最佳實踐進一步深入了解該節點,詳情請參見在DataWorks中通過函數計算節點實現動態為PDF添加水印。