全部產品
Search
文件中心

Function Compute:DataHub單向觸發器

更新時間:Jul 06, 2024

Function Compute支援DataHub作為觸發源。當有請求到達Connector設定為Function Compute的阿里雲流式資料服務DataHub時,DataHub會觸發函數的執行。Function Compute會將執行結果返回給DataHub。本文介紹如何配置DataHub觸發函數執行,包括配置函數的入口參數、編寫函數代碼並測試等。

前提條件

使用限制

DataHub為單向觸發器,只支援在事件來源端配置觸發器。操作路徑如下。

登入DataHub服務控制台,在專案列表頁面,單擊目標專案名稱進入詳情頁面。在建立Topic面板,成功配置相關資訊後,在Topic列表頁簽,單擊已建立的Topic名稱進入詳情頁面。sc_create_topic_for_datahub_trigger

然後在Topic詳情頁面,單擊右上方的同步,通過建立Function ComputeConnector的方式配置資料同步功能,便可以在Function Compute中使用DataHub資料。

sc_datahub_trigger

步驟一:配置函數入口測試參數

DataHub觸發函數執行時,同步的資訊以event的形式作為輸入參數,通過同步調用的方式傳給函數。您可以將DataHub傳入的event資訊作為參數,調試函數代碼編寫是否正確。

  1. 登入Function Compute控制台,在左側導覽列,單擊服務及函數
  2. 在頂部功能表列,選擇地區,然後在服務列表頁面,單擊目標服務。
  3. 函數管理頁面,單擊目標函數名稱。
  4. 在函數詳情頁面,單擊函數代碼頁簽,然後單擊測試函數右側xialatubiao表徵圖,從下拉式清單中,選擇配置測試參數
  5. 配置測試參數面板,選擇建立新測試事件編輯已有測試事件頁簽,填寫事件名稱和事件內容。然後單擊確定
    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\"]"
        }
      ]
    }

步驟二:編寫函數代碼並測試

  1. 登入Function Compute控制台,在左側導覽列,單擊服務及函數
  2. 在頂部功能表列,選擇地區,然後在服務列表頁面,單擊目標服務。
  3. 函數管理頁面,單擊目標函數名稱。
  4. 在函數詳情頁面,單擊函數代碼頁簽,在代碼編輯器中編寫代碼,然後單擊部署代碼
    本文以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'

  5. 單擊函數代碼頁簽的測試函數
    執行完成後,您可以在函數代碼頁簽的上方查看執行結果。