Function Computeは、DataHubをトリガーソースとしてサポートしています。 DataHubは、Alibaba Cloudのデータストリーミングサービスです。 Function Computeコネクタが作成されたDataHubにリクエストが到着すると、DataHubは関数の実行をトリガーします。 関数の実行後、function Computeは実行結果をDataHubに返します。 このトピックでは、入力パラメーターの設定、関数コードの記述、関数のテストなど、関数の実行をトリガーするようにDataHubを設定する方法について説明します。
前提条件
Function Compute
DataHub
Function Computeコネクタが作成されます。 詳細については、「Function Computeへのデータの同期」をご参照ください。
制限事項
DataHubは一方向のトリガーです。 イベントソースでのみトリガーを設定できます。 次の操作を実行します。
DataHub コンソールにログインします。 [プロジェクト] ページで、目的のプロジェクトの名前をクリックして、プロジェクトの詳細ページに移動します。 表示される [トピックの作成] パネルで、トピックを作成するためのパラメーターを設定します。 トピックが作成されたら、[トピックリスト] タブに移動し、作成したトピックの名前をクリックします。
表示されるトピックの詳細ページで、右上隅の [+ コネクタ] をクリックします。 データをFunction Computeに同期するためのFunction Computeコネクタを作成します。 その後、DataHubデータをFunction Computeで使用できます。
ステップ1: 関数の入力パラメータを設定する
DataHubが関数の実行をトリガーすると、イベントパラメーターを使用して、同期された情報が関数に送信されます。 DataHubによって渡されたイベントパラメーターを使用して、関数コードが正しいかどうかをテストできます。
Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[サービスと機能] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。 [サービス] ページで、目的のサービスをクリックします。
[関数] ページで、目的の関数の名前をクリックします。
機能の詳細ページで、[コード] タブをクリックし、アイコンをクリックします。 表示されるドロップダウンリストから、[テストパラメーターの設定] を選択します。
[テストパラメーターの設定] パネルで、[新しいテストイベントの作成] または [既存のテストイベントの変更] タブをクリックし、[イベント名] とイベントの内容を指定します。 パラメーターを指定したら、[OK] をクリックします。
次のサンプルコードは、イベントの例を示しています。詳細については、「Function Computeへのデータの同期」の「イベントのデータ構造」セクションをご参照ください。
{ "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\"]" } ] }
ステップ2: 関数コードを記述し、関数をテストする
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'
コードタブをクリックし、テスト機能をクリックします。
関数の実行後、[コード] タブで結果を表示できます。