すべてのプロダクト
Search
ドキュメントセンター

Function Compute:Message Queue for MNS トピックトリガー

最終更新日:Apr 21, 2026

Simple Message Queue (formerly MNS) のトピックは、イベントソースとして機能し、EventBridge および Function Compute と統合できます。 Simple Message Queue (formerly MNS) のトピックトリガーは、Simple Message Queue (formerly MNS) トピックに新しいメッセージが送信されると、関連付けられた関数を自動的に実行します。 これにより、受信メッセージのカスタム処理を簡単に実装できます。

背景情報

MNS は、効率的、高信頼性、安全、使いやすく、弾性的にスケーラブルな分散メッセージングサービスです。アプリケーション開発者が分散コンポーネント間でデータや通知を渡し、疎結合システムを構築するのに役立ちます。MNS では、トピックはメッセージが公開される送信先です。パブリッシャーは PublishMessage API を呼び出してトピックにメッセージを公開し、トピックのサブスクライバーがそのメッセージを受信します。API の詳細については、PublishMessage をご参照ください。

Simple Message Queue (formerly MNS) トピックトリガーを設定すると、ご利用の関数が Simple Message Queue (formerly MNS) トピックのサブスクライバーとして登録されます。パブリッシャーが Simple Message Queue (formerly MNS) トピックにメッセージを送信すると、メッセージ本文が関数に配信され、その実行がトリガーされます。メッセージ本文は、event パラメーターとして関数ハンドラに渡されます。詳細については、基本情報 をご参照ください。

MNS と Function Compute の統合には、次の利点があります。

  • メールや SMS で送信する前に、メッセージに対して高度な処理を実行できます。

  • HTTP エンドポイント用のサービスをホストする必要がありません。

  • メッセージを Slack に送信したり、特定のメッセージを永続化したりするなど、豊富なカスタム処理を実装できます。

前提条件

注意事項

  • MNS のトピックと Function Compute の関数は、同じリージョンにある必要があります。

  • 再帰呼び出しを避けてください。

    関数コードを記述する際、関数に次のロジックが含まれていないことを確認してください:トピック A が関数 B をトリガーし、関数 B がトピック A に新しいメッセージを公開する。これにより、無限の再帰呼び出しが発生する可能性があります。

ステップ 1:Message Queue for MNS トピックトリガーの作成

  1. Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、関数管理 > 関数 を選択します。

  2. 上部のナビゲーションバーでリージョンを選択します。関数 ページで、対象の関数をクリックします。

  3. 関数詳細ページで、トリガー タブを選択し、トリガーの作成 をクリックします。

  4. [トリガーの作成] パネルでパラメーターを設定し、[OK] をクリックします。

    パラメーター

    アクション

    トリガータイプ

    [メッセージキュー (MNS トピックトリガー) - 非同期呼び出し] を選択します。

    Simple Message Queue (formerly MNS) トピックトリガー

    名前

    カスタムトリガー名を入力します。

    trigger-mns

    バージョンまたはエイリアス

    デフォルト値は LATEST です。別のバージョンまたはエイリアスのトリガーを作成する場合は、まず関数の詳細ページの右上隅でそのバージョンまたはエイリアスに切り替えます。バージョンとエイリアスの概要については、「バージョンの管理」および「エイリアスの管理」をご参照ください。

    LATEST

    MNS リージョン

    トピックが配置されているリージョンを選択します。Simple Message Queue (formerly MNS) のトピックと Function Compute の関数は、同じリージョンにある必要があります。

    中国 (成都)

    トピック

    リストからトピックを選択します。

    Mytopic

    フィルタータグ

    メッセージフィルタータグを入力します。

    指定されたフィルタータグを含むメッセージを受信した場合にのみ、関数がトリガーされます。

    tag

    イベント形式

    イベント形式を選択します。有効値:

    • STREAM

    • JSON

    JSON

    リトライポリシー

    リトライポリシーを選択します。有効値:

    • バックオフ再試行

    • [指数関数的減衰リトライ]

    リトライポリシーの選択方法については、「NotifyStrategy」をご参照ください。

    バックオフリトライ

    ロール名

    [AliyunMNSNotificationRole] を選択します。

    説明

    このタイプのトリガーを初めて作成する場合、OK をクリックした後、表示されるダイアログボックスで[今すぐ承認]を選択します。

    AliyunMNSNotificationRole

ステップ 2:関数入力パラメーターの設定

  1. 関数詳細ページの [コード] タブで、[関数をテスト] の横にある image.png アイコンをクリックし、ドロップダウンリストから [テストパラメーターの設定] を選択します。

  2. テストパラメーターの設定 パネルで、新規テストイベントの作成 または 既存のテストイベントの変更 を選択します。イベント名とイベント内容を入力し、[OK] をクリックします。

    Simple Message Queue (formerly MNS) トピックに公開されたメッセージは、notifyContentFormat に基づいて処理されます。処理されたメッセージは、関数ハンドラの event パラメーターになります。詳細については、NotifyContentFormat をご参照ください。

    • トリガー作成時に [イベント形式]STREAM に設定した場合:

      • メッセージにメッセージ属性 (MessageAttributes) が含まれていない場合、イベント形式は次のようになります。

        説明

        メッセージにメッセージ属性 (MessageAttributes) が含まれていない場合、イベント内容は生のメッセージ本文の文字列です。

        # メッセージ本文。
        'hello topic'
      • メッセージにメッセージ属性 (MessageAttributes) が含まれている場合、イベント形式は次のようになります。

        説明

        イベント内容には、MessageAttributes に関連するキーと値のペアが含まれます。詳細については、PublishMessage をご参照ください。

            {
                "body": "hello topic",
                "attrs": {
                    "Extend": "{\\"key\\":\\"value\\"}"
                }
            }                    
    • トリガー作成時に [イベント形式]JSON に設定した場合:

      • メッセージにメッセージ属性 (MessageAttributes) が含まれていない場合、イベント形式は次のようになります。

            {
                "TopicOwner": "118620210433****",
                "Message": "hello topic",
                "Subscriber": "118620210433****",
                "PublishTime": 1550216480040,
                "SubscriptionName": "test-fc-subscribe",
                "MessageMD5": "BA4BA9B48AC81F0F9C66F6C909C3****",
                "TopicName": "Mytopic",
                "MessageId": "2F5B3C082B923D4EAC694B76D928****"
            }        
                                    
      • メッセージにメッセージ属性 (MessageAttributes) が含まれている場合、イベント形式は次のようになります。

        説明

        イベント内容には、MessageAttributes に関連するキーと値のペアが含まれます。詳細については、PublishMessage をご参照ください。

            {
                "key": "value",
                "TopicOwner": "118620210433****",
                "Message": "hello topic",
                "Subscriber": "118620210433****",
                "PublishTime": 1550216302888,
                "SubscriptionName": "test-fc-subscribe",
                "MessageMD5": "BA4BA9B48AC81F0F9C66F6C909C3****",
                "TopicName": "Mytopic",
                "MessageId": "2F5B3C281B283D4EAC694B742528****"
            }
                                    

    次の表に、event パラメーターのフィールドを説明します。

    パラメーター

    タイプ

    説明

    key

    String

    value

    メッセージ属性からのキーと値のペア。

    TopicOwner

    String

    118620210433****

    トピックを所有するアカウントの ID。

    Message

    String

    hello topic

    メッセージ本文。

    Subscriber

    String

    118620210433****

    ユーザーのアカウント ID。

    PublishTime

    Int

    1550216302888

    メッセージが公開された時刻。

    SubscriptionName

    String

    test-fc-subscribe

    サブスクリプション名。

    MessageMD5

    String

    BA4BA9B48AC81F0F9C66F6C909C3****

    メッセージ本文の MD5 ハッシュ。

    TopicName

    String

    Mytopic

    トピック名。

    MessageId

    String

    2F5B3C281B283D4EAC694B742528****

    メッセージ ID。

ステップ 3:関数コードの記述とテスト

Simple Message Queue (formerly MNS) トピックトリガーを作成した後、関数コードを記述してテストし、期待どおりに動作することを確認します。

  1. 関数詳細ページの コード タブのエディターでコードを記述し、デプロイメントコード をクリックします。

    このセクションでは、Python コードを例として使用します。次のサンプルコードを Simple Message Queue (formerly MNS) トピックトリガーのテンプレートとして使用できます。

    import json
    import logging
    
    def handler(event, context):
      logger = logging.getLogger()
      logger.info("mns_topic trigger event = {}".format(event))
      # 例:イベントを Tablestore に記録します。
      return "OK"                     
  2. 関数のテスト をクリックします。

    実行が完了したら、コード タブの上部で実行結果を確認できます。

関連情報

Function Compute コンソールに加えて、次の方法でもトリガーを設定できます:

  • Serverless Devs ツールを使用してトリガーを設定します。詳細については、「Serverless Devs の一般的なコマンド」をご参照ください。

  • SDK を使用してトリガーを設定します。詳細については、「SDK」をご参照ください。

トリガーの変更または削除については、「トリガーの管理」をご参照ください。