函數計算支持DataHub作為觸發源。當有請求到達Connector設置為函數計算的阿里云流式數據服務DataHub時,DataHub會觸發函數的執行。函數計算會將執行結果返回給DataHub。本文介紹如何配置DataHub觸發函數執行,包括配置函數的入口參數、編寫函數代碼并測試等。
使用限制
DataHub為單向觸發器,只支持在事件源端配置觸發器。操作路徑如下。
登錄
DataHub服務控制臺,在
項目列表頁面,單擊目標項目名稱進入詳情頁面。在
新建Topic面板,成功配置相關信息后,在
Topic列表頁簽,單擊已創建的Topic名稱進入詳情頁面。
然后在Topic詳情頁面,單擊右上角的同步,通過創建函數計算Connector的方式配置數據同步功能,便可以在函數計算中使用DataHub數據。
步驟一:配置函數入口測試參數
DataHub觸發函數執行時,同步的信息以event的形式作為輸入參數,通過同步調用的方式傳給函數。您可以將DataHub傳入的event信息作為參數,調試函數代碼編寫是否正確。
- 登錄函數計算控制臺,在左側導航欄,單擊服務及函數。
- 在頂部菜單欄,選擇地域,然后在服務列表頁面,單擊目標服務。
- 在函數管理頁面,單擊目標函數名稱。
- 在函數詳情頁面,單擊函數代碼頁簽,然后單擊圖標,從下拉列表中,選擇配置測試參數。
- 在配置測試參數面板,選擇創建新測試事件或編輯已有測試事件頁簽,填寫事件名稱和事件內容。然后單擊確定。
event格式示例如下所示。參數的詳細信息,請參見
event結構定義。
{
"eventSource": "acs:datahub",
"eventName": "acs:datahub:putRecord",
"eventSourceARN": "/projects/test_project_name/topics/test_topic_name",
"region": "cn-hangzhou",
"records": [
{
"eventId": "0:12345",
"systemTime": 1463000123000,
"data": "[\"col1's value\",\"col2's value\"]"
},
{
"eventId": "0:12346",
"systemTime": 1463000156000,
"data": "[\"col1's value\",\"col2's value\"]"
}
]
}
步驟二:編寫函數代碼并測試
- 登錄函數計算控制臺,在左側導航欄,單擊服務及函數。
- 在頂部菜單欄,選擇地域,然后在服務列表頁面,單擊目標服務。
- 在函數管理頁面,單擊目標函數名稱。
- 在函數詳情頁面,單擊函數代碼頁簽,在代碼編輯器中編寫代碼,然后單擊部署代碼。
本文以Python 3.6為例。
# -*- coding: utf-8 -*-
import logging
import json
# To enable the initializer feature
# please implement the initializer function as below:
# def initializer(context):
# logger = logging.getLogger()
# logger.info('initializing')
def handler(event, context):
logger = logging.getLogger()
logger.info('hello world')
# parse and handle event here
# evt = json.loads(event)
logger.info(event)
return 'hello world'
- 單擊函數代碼頁簽的測試函數。
執行完成后,您可以在函數代碼頁簽的上方查看執行結果。