メッセージサービス (MNS) キューがEventBridgeを使用してイベントソースとしてFunction Computeと統合された後、MNSキュートリガーは関連する関数をトリガーできます。 これらの関数を使用して、MNSキューにパブリッシュされたメッセージに対してカスタム操作を実行できます。 このトピックでは、function Computeコンソールで、MNSキュートリガーの作成、関数入力パラメーターの設定、およびコードの書き込みとテストの方法について説明します。
特徴
Function Computeコンソールでトリガーの作成を指定すると、Function Computeはトリガー設定に基づいてEventBridgeリソースを作成します。 Function Computeは、メッセージをプッシュするためのイベントモードとイベントストリームモードをサポートしています。 次の項目は、各モデルで作成できるリソースを示しています。
トリガーの作成後、Function Computeコンソールでトリガー情報を表示できます。 EventBridgeコンソールで、作成されたリソースに関する情報を表示することもできます。 トリガーソースとして使用されるMNSキューにメッセージが送信されると、function Computeで関数の実行がトリガーされます。 異なるプッシュモードは、異なるパラメータをサポートします。 詳細については、「手順2: 関数の入力パラメーターの設定」をご参照ください。
イベントモード: 単一のメッセージがイベントパラメータとして関数に渡されます。 イベントはCloudEventsの仕様に従います。 メッセージコンテンツとCloudEventsの関係については、「手順2: 関数の入力パラメーターの設定」をご参照ください。
イベントストリームモード: バッチ設定に基づいて、1つ以上のメッセージがFunction Computeにプッシュされ、バッチ処理されます。 このモデルは、エンドツーエンドのストリーミングデータが処理されるシナリオに適しています。
使用上の注意
トリガーソースとして使用されるMNSキューは、function Computeの関数と同じリージョンに存在する必要があります。
カスタムイベントバスとイベントルールの数が上限を超えると、イベントモードのMNSキュートリガーを作成できなくなります。
イベントストリームの数が上限を超えると、イベントストリームモードのMNSキュートリガーを作成できなくなります。
1つのリージョン内の1つのAlibaba Cloudアカウントのトリガー作成に関与するリソース数の制限については、「制限」をご参照ください。
始める前に
EventBridge
Function Compute
MNS
ステップ1: トリガーを作成する
Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[サービスと機能] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。 [サービス] ページで、目的のサービスをクリックします。
[関数] ページで、管理する関数をクリックします。
関数の詳細ページで、[トリガー] タブをクリックし、[バージョンまたはエイリアス] ドロップダウンリストからバージョンまたはエイリアスを選択し、[トリガーの作成] をクリックします。
[トリガーの作成] パネルで、関連パラメーターを指定します。 パラメーターを指定したら、[OK] をクリックします。
次の表に、基本的なパラメーターを示します。
パラメーター
説明
例
トリガータイプ
[MNS] を選択します。
MNS
名前
カスタムトリガー名を入力します。
mns-trigger
バージョンまたはエイリアス
デフォルト値はLATESTです。 別のバージョンまたはエイリアスのトリガーを作成する場合は、関数の詳細ページの右上隅で、指定したバージョンまたはエイリアスに切り替えます。 サービスのバージョンとエイリアスの詳細については、「バージョンの管理」および「エイリアスの管理」をご参照ください。
LATEST
キュー名
MNSキューを選択します。
MyQueue
呼び出しメソッド
関数呼び出しモードを選択します。
有効な値:
同期呼び出し: このモードは、シーケンシャル呼び出しに適しています。 単一のイベントまたはイベントのバッチが関数をトリガーすると、function Computeは関数を実行し、次のイベントまたはイベントのバッチを処理する前に応答を待ちます。 同期呼び出し要求のペイロードの上限は32 MBです。 詳細については、「同期呼び出し」をご参照ください。
非同期呼び出し: このモードでは、イベントをすばやく使用できます。 単一のイベントまたはイベントのバッチが関数をトリガーすると、function Computeはすぐに応答を返し、次のイベントまたはイベントのバッチの処理を続行します。このプロセス中、関数は非同期モードで実行されます。 非同期呼び出し要求のペイロードの上限は128 KBです。 詳細については、「概要」をご参照ください。
同期呼び出し
メッセージプッシュモード
メッセージデータをFunction Computeにプッシュするために使用される基本アプリケーションモード。
有効な値:
イベントストリームモード: バッチ設定に基づいて、1つ以上のメッセージがFunction Computeにプッシュされ、バッチ処理されます。 このモデルは、エンドツーエンドのストリーミングデータが処理されるシナリオに適しています。
イベントモード: 単一のメッセージがイベントパラメータとして関数に渡されます。 イベントはCloudEventsの仕様に従います。 メッセージコンテンツとCloudEventsの関係については、「手順2: 関数の入力パラメーターの設定」をご参照ください。
イベントモード
トリガー状態
作成直後にトリガーを有効にするかどうかを指定します。 デフォルトでは、[トリガーの有効化] が選択され、作成後にトリガーが有効になります。
非該当
メッセージのプッシュ、再試行、デッドレター設定などの高度な設定の詳細については、「トリガーの高度な機能」をご参照ください。
トリガーが作成されると、[トリガー] タブに表示されます。 既存のトリガーを変更または削除するには、「トリガーの管理」をご参照ください。
ステップ2: 関数の入力パラメータを設定する
MNSイベントソースは、入力パラメーターとして機能するevent
の形式で関数に渡されます。 event
を関数に手動で渡して、トリガーイベントをシミュレートし、関数のコードが正しいかどうかをテストできます。
関数の詳細ページで、[コード] タブをクリックし、アイコンをクリックします。 表示されるドロップダウンリストから、[テストパラメーターの設定] を選択します。
Configure Test Parametersパネルで、Create New Test EventまたはModify Existing Test Eventタブをクリックし、Event Nameとイベントの内容を指定します。 パラメーターを指定したら、[OK] をクリックします。
イベントモードの
イベント
のサンプルコード:{ "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":"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 the event parameters and process the event. callback(null, 'return result'); }
コードタブでテスト機能をクリックします。
関数の実行後、[コード] タブで結果を表示できます。
追加情報
既存のトリガーを変更または削除するには、「トリガーの管理」をご参照ください。