EventBridgeを使用してMessage Service (MNS) をFunction Computeとイベントソースとして統合した後、MNSキュートリガーを使用して関連する関数をトリガーできます。 これらの関数を使用して、MNSに発行されるメッセージに対してカスタム操作を実行できます。 このトピックでは、Function Computeコンソールで、MNSキュートリガーを作成し、関連する関数の入力パラメーターを設定し、関数コードを作成し、関数をテストする方法について説明します。
概要
Function Computeコンソールでトリガーを作成するリクエストを送信すると、Function Computeはトリガーの設定に基づいてEventBridgeにイベントストリームを自動的に作成します。 詳細については、「概要」をご参照ください。
トリガーの作成後、Function Computeコンソールでトリガーに関する情報を表示できます。 EventBridgeコンソールで、作成されたリソースに関する情報を表示することもできます。 メッセージがソースMNSキューにエンキューされると、Function Computeの関連付けられた関数がトリガーされます。 関数の実行中、メッセージイベントは関数にプッシュされ、バッチ設定に基づいて個別にまたはバッチで処理されます。 MNSキュートリガーは、エンドツーエンドのストリーミングデータが処理されるシナリオに適しています。
使用上の注意
トリガーソースとして使用されるMNSキューは、Function Compute関数と同じリージョンに存在する必要があります。
作成されたイベントストリームの数が上限を超えると、MNSキュートリガーを作成できなくなります。
各Alibaba Cloudアカウントの1つのリージョンのトリガーに関連するリソースの制限については、「制限」をご参照ください。
始める前に
EventBridge
Function Compute
MNS
ステップ1: トリガーを作成する
MNSキューを作成したら、Function Computeコンソールにログインし、目的の関数をクリックして関数の詳細ページに移動し、[設定] タブをクリックします。 [トリガー] ページで [トリガーの作成] をクリックします。 トリガーを作成し、[OK] をクリックします。 詳細は以下の図をご参照ください。
説明:
呼び出しメソッド
同期呼び出し: このメソッドは、シーケンシャル呼び出しに適しています。 イベントまたはイベントのバッチが関数をトリガーすると、function Computeは関数を実行し、関数が次のイベントまたはイベントのバッチを処理する前に応答を待ちます。 同期呼び出しリクエストの最大ペイロードは32 MBです。 詳細については、「同期呼び出し」をご参照ください。
非同期呼び出し: このメソッドを使用すると、イベントをすばやく消費できます。 イベントまたはイベントのバッチが関数をトリガーすると、function Computeはすぐに応答を返し、次のイベントまたはイベントのバッチの処理を続行します。 このプロセス中、関数は非同期モードで実行されます。 非同期呼び出しリクエストの最大ペイロードは128 KBです。 詳細については、「非同期呼び出し」をご参照ください。
プッシュ設定、再試行ポリシー、デットレターキューなどの高度な設定については、「トリガーの高度な機能」をご参照ください。
トリガーが作成されると、[トリガー] タブに表示されます。 トリガーを変更または削除するには、「トリガー管理」をご参照ください。
ステップ2: (オプション) 入力パラメーターの設定
MNSソースイベントは、event
の形式で入力パラメーターとして関数に渡されます。 コードを使用して、イベントを解析および処理できます。 event
を関数に手動で渡してトリガーイベントをシミュレートし、関数コードが正しいかどうかをテストできます。
関数の詳細ページの [コード] タブで、[テスト関数] の隣のアイコンをクリックし、ドロップダウンリストから [テストパラメーターの設定] を選択します。
[テストパラメーターの設定] パネルで、[新しいテストイベントの作成] または [既存のテストイベントの変更] タブをクリックし、イベント名とイベント内容を入力し、[OK] をクリックします。
event
のサンプルコード:[ { "id":"c2g71017-6f65-fhcf-a814-a396fc8d****", "source":"MNS-Function-mnstrigger", "specversion":"1.0", "type":"mns:Queue:SendMessage", "datacontenttype":"application/json; charset=utf-8", "subject":"acs:mns:cn-hangzhou:164901546557****:queues/zeus", "time":"2021-04-08T06:28:17.093Z", "aliyunaccountid":"164901546557****", "aliyunpublishtime":"2021-10-15T07:06:34.028Z", "aliyunoriginalaccountid":"164901546557****", "aliyuneventbusname":"MNS-Function-mnstrigger", "aliyunregionid":"cn-chengdu", "aliyunpublishaddr":"42.120.XX.XX", "data":{ "requestId":"606EA3074344430D4C81****", "messageId":"C6DB60D1574661357FA227277445****", "messageBody":"TEST" } }, { "id":"d2g71017-6f65-fhcf-a814-a396fc8d****", "source":"MNS-Function-mnstrigger", "specversion":"1.0", "type":"mns:Queue:SendMessage", "datacontenttype":"application/json; charset=utf-8", "subject":"acs:mns:cn-hangzhou:164901546557****:queues/zeus", "time":"2021-04-08T06:28:17.093Z", "aliyunaccountid":"164901546557****", "aliyunpublishtime":"2021-10-15T07:06:34.028Z", "aliyunoriginalaccountid":"164901546557****", "aliyuneventbusname":"MNS-Function-mnstrigger", "aliyunregionid":"cn-chengdu", "aliyunpublishaddr":"42.120.XX.XX", "data":{ "requestId":"606EA3074344430D4C81****", "messageId":"C6DB60D1574661357FA227277445****", "messageBody":"TEST" } } ]
次の表に、dataに含まれるパラメーターを示します。 CloudEvents仕様で定義されているパラメーターについては、「概要」をご参照ください。
パラメーター
データ型
例
説明
requestId
String
606EA3074344430D4C81 ****
リクエストの ID。 各リクエストのIDは一意です。
messageId
String
C6DB60D1574661357FA227277445 ****
メッセージの ID 。 各メッセージのIDは一意である。
messageBody
String
TEST
メッセージの内容。
ステップ3: 関数コードを記述し、関数をテストする
トリガーを作成した後、関数コードを記述し、関数をテストしてコードが正しいかどうかを確認できます。 MNSによって生成されたイベントがEventBridgeを使用してFunction Computeに配信されると、トリガーによって自動的に関数がトリガーされます。
コード関数の詳細ページのタブで、コードエディターでコードを記述し、コードのデプロイをクリックします。
次のサンプルコードは、Node.jsの関数コードの例を示しています。
'use strict'; /* To enable the initializer feature please implement the initializer function as below: exports.initializer = (context, callback) => { console.log('initializing'); callback(null, ''); }; */ exports.handler = (event, context, callback) => { console.log("event: %s", event); // Parse and process event. callback(null, 'return result'); }
関数をテストします。
方法1:
event
を設定してイベントソースをシミュレートする場合は、[Test Function] をクリックします。方法2: MNSコンソールにログインし、作成したキューを選択し、[メッセージの送信] をクリックします。 以下の図は一例です。
実行が完了したら、結果をリアルタイムログで表示します。
詳細情報
既存のトリガーを変更または削除するには、「トリガーの管理」をご参照ください。