Function Compute支援DataHub作為觸發源。當有請求到達Connector設定為Function Compute的阿里雲流式資料服務DataHub時,DataHub會觸發函數的執行。Function Compute會將執行結果返回給DataHub。本文介紹如何配置DataHub觸發函數執行,包括配置函數的入口參數、編寫函數代碼並測試等。
前提條件
- Function Compute
- DataHub
使用限制
DataHub為單向觸發器,只支援在事件來源端配置觸發器。操作路徑如下。
登入DataHub服務控制台,在專案列表頁面,單擊目標專案名稱進入詳情頁面。在建立Topic面板,成功配置相關資訊後,在Topic列表頁簽,單擊已建立的Topic名稱進入詳情頁面。
然後在Topic詳情頁面,單擊右上方的同步,通過建立Function ComputeConnector的方式配置資料同步功能,便可以在Function Compute中使用DataHub資料。
步驟一:配置函數入口測試參數
DataHub觸發函數執行時,同步的資訊以event的形式作為輸入參數,通過同步調用的方式傳給函數。您可以將DataHub傳入的event資訊作為參數,調試函數代碼編寫是否正確。
- 登入Function Compute控制台,在左側導覽列,單擊服務及函數。
- 在頂部功能表列,選擇地區,然後在服務列表頁面,單擊目標服務。
- 在函數管理頁面,單擊目標函數名稱。
- 在函數詳情頁面,單擊函數代碼頁簽,然後單擊測試函數右側表徵圖,從下拉式清單中,選擇配置測試參數。
- 在配置測試參數面板,選擇建立新測試事件或編輯已有測試事件頁簽,填寫事件名稱和事件內容。然後單擊確定。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\"]" } ] }
步驟二:編寫函數代碼並測試
- 登入Function Compute控制台,在左側導覽列,單擊服務及函數。
- 在頂部功能表列,選擇地區,然後在服務列表頁面,單擊目標服務。
- 在函數管理頁面,單擊目標函數名稱。
- 在函數詳情頁面,單擊函數代碼頁簽,在代碼編輯器中編寫代碼,然後單擊部署代碼。本文以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'
- 單擊函數代碼頁簽的測試函數。執行完成後,您可以在函數代碼頁簽的上方查看執行結果。