Simple Message Queue (旧称:MNS) キュートリガーを使用すると、キューにメッセージが到着するたびに、Function Compute の関数を自動的に実行できます。このトリガーは EventBridge によって実現されています。Function Compute コンソールでトリガーを作成すると、Function Compute がお客様に代わって EventBridge 上に必要なイベントストリームを作成します。イベントストリームの詳細については、「概要」をご参照ください。
トリガーが有効になると、ソースキューにエンキューされた各メッセージに対して、関連付けられた関数が実行されます。メッセージは、バッチ構成に応じて個別またはバッチ単位で配信されます。このパターンは、エンドツーエンドのストリーミングデータ処理に適しています。
制限事項
Simple Message Queue (旧称:MNS) キューと Function Compute 関数は、同一のリージョンに配置されている必要があります。
Alibaba Cloud アカウントが EventBridge のイベントストリーム使用上限に達した場合、追加の Simple Message Queue (旧称:MNS) キュートリガーを作成できません。現在の使用制限については、「使用制限」をご参照ください。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
EventBridge の有効化および権限付与:「EventBridge の有効化と RAM ユーザーへの権限付与」
Function Compute のイベント関数:「イベント関数の作成」
Simple Message Queue (旧称:MNS) の有効化および RAM ユーザーによるアクセス許可:「SMQ の有効化と RAM ユーザーによる SMQ アクセスの承認」
Simple Message Queue (旧称:MNS) 内に作成済みのキュー:「キューの作成」
ステップ 1:トリガーの作成
Function Compute コンソールにログインし、ご利用の関数をクリックします。
関数の詳細ページで、[構成] タブをクリックし、[トリガー] に移動して、[トリガーの作成] をクリックします。
トリガー設定を入力します。[呼び出し方法] が主要な設定項目です。詳細については、「同期呼び出し」および「非同期呼び出し」をご参照ください。
呼び出し方法 動作 最大ペイロード 使用タイミング [同期呼び出し] Function Compute は、次のイベントまたはバッチを配信する前に、関数の戻り値を待機します 32 MB 順序または逐次処理が重要な場合 [非同期呼び出し] Function Compute はイベントを配信後、直ちに次のイベントへと進みます。関数はバックグラウンドで実行されます 128 KB イベントを高速に消費したい高スループットのシナリオ [OK] をクリックします。

プッシュ設定、リトライポリシー、デッドレターキューなどの高度な設定については、「トリガーの高度な機能」をご参照ください。
トリガーが作成されると、[トリガー] タブに表示されます。編集または削除を行う場合は、「トリガーの管理」をご参照ください。
ステップ 2:(任意)テストパラメーターの構成
関数は、Simple Message Queue (旧称:MNS) のイベントを event パラメーター(CloudEvents 形式のオブジェクト配列)として受信します。実際のメッセージを送信せずに機能コードをテストするには、イベントを手動でシミュレートします。
「[コード]」タブで、[テスト関数] の横にある
アイコンをクリックし、[テストパラメーターの設定] を選択します。[テストパラメーターの構成] パネルで、[新しいテストイベントの作成] または [既存のテストイベントの変更] をクリックし、イベント名と以下のイベント内容を入力して、[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"
}
}
]イベントフィールドのリファレンス
配列内の各要素は、CloudEvents 仕様 に準拠しています。
CloudEvents エンベロープフィールド
| フィールド | 型 | 例 | 説明 |
|---|---|---|---|
id | String | c2g71017-6f65-fhcf-a814-a396fc8d**** | 一意のイベント ID |
source | String | MNS-Function-mnstrigger | イベントソース識別子(イベントバス名) |
type | String | mns:Queue:SendMessage | イベントタイプ |
subject | String | acs:mns:cn-hangzhou:...:queues/zeus | ソースキューの ARN |
time | String | 2021-04-08T06:28:17.093Z | メッセージがエンキューされた時刻(ISO 8601) |
specversion | String | 1.0 | CloudEvents 仕様のバージョン |
datacontenttype | String | application/json; charset=utf-8 | data フィールドのコンテンツタイプ |
aliyunregionid | String | cn-chengdu | キューが配置されているリージョン |
aliyunaccountid | String | 164901546557**** | Alibaba Cloud アカウント ID |
aliyunpublishtime | String | 2021-10-15T07:06:34.028Z | EventBridge がイベントを公開した時刻 |
data フィールド
| フィールド | 型 | 例 | 説明 |
|---|---|---|---|
requestId | String | 606EA3074344430D4C81**** | メッセージ送信リクエストの一意の ID |
messageId | String | C6DB60D1574661357FA227277445**** | メッセージの一意の ID |
messageBody | String | TEST | メッセージ本文の内容 |
ステップ 3:関数の記述とテスト
トリガーが作成された後、関数コードを記述・デプロイし、エンドツーエンドでトリガーが正しく動作することを検証します。
関数コードの記述とデプロイ
[コード] タブでハンドラを記述し、[コードのデプロイ] をクリックします。
以下の Node.js の例では、関数コードの記述方法を示します。
'use strict';
/*
初期化機能を有効化するには、
以下のように initializer 関数を実装してください:
exports.initializer = (context, callback) => {
console.log('初期化中');
callback(null, '');
};
*/
exports.handler = (event, context, callback) => {
console.log("event: %s", event);
// イベントの解析と処理。
callback(null, 'return result');
}関数のテスト
以下のいずれかの方法でテストを行います。
シミュレートされたイベント: ステップ 2 でテストイベントを構成済みの場合、[コード] タブの [関数のテスト] をクリックします。
実際のメッセージ: Simple Message Queue (旧称:MNS) コンソールにログインし、ソースキューを選択して、[メッセージの送信] をクリックします。

関数が実行された後、[リアルタイムログ] で出力を確認できます。

次のステップ
トリガーの変更または削除:「トリガーの管理」
リトライポリシーおよびデッドレターキューの構成:「トリガーの高度な機能」