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

Elastic Compute Service:EventBridge を使用して ECS イベントをすばやくサブスクライブする

最終更新日:Apr 03, 2026

このトピックでは、EventBridge を使用して ECS イベントをサブスクライブし、それらをダウンストリームサービスに配信する方法について説明します。

背景情報

EventBridge は、Alibaba Cloud 上のイベントハブです。Alibaba Cloud サービスとアプリケーション、およびアプリケーション同士を接続するための統合イベントセンターを提供します。EventBridge は標準の CloudEvents 1.0 プロトコルを使用します。Alibaba Cloud サービス、Software as a Service(SaaS)アプリケーション、およびお客様のビジネスアプリケーションから発生するイベントを EventBridge を使用して管理できます。EventBridge は、アップストリームの Alibaba Cloud サービスからのイベント品質を保証し、イベントサブスクリプション体験を向上させ、データ配信の信頼性を高めます。EventBridge は、データ信頼性 99.99999999 %、サービス可用性 99.95 % を保証するサービスレベルアグリーメント(SLA)を提供します。

EventBridge を使用したイベントのサブスクライブは、ECS の DescribeInstanceHistoryEvents API オペレーションを呼び出して新規イベントをポーリングする方法と比較して、以下の利点があります:

  • 適時性の向上:特定タイプのイベントが検出されると、ミリ秒単位で特定の操作をトリガーできます。

  • コストの削減:イベントを定期的にポーリングする必要がなく、不要なオーバーヘッドを回避できます。

订阅ECS.png

シナリオ

  • 特定の ECS イベントをサブスクライブして、DingTalk、ショートメッセージ、またはメールによる通知をトリガーできます。

  • 特定の ECS イベントをインターネットまたは VPC 経由でダウンストリームの HTTP/HTTPS サービスにプッシュできます。

  • 複数の Alibaba Cloud アカウントから発生する ECS イベントを集約できます。

  • 特定の ECS イベントが発生した際に、Function Compute を使用して特定のアクションをトリガーできます。

  • イベント遅延が大きい場合やイベントボリュームが大きい場合に、Simple Message Queue (formerly MNS) に ECS イベントを配信し、サブスクライブできます。

前提条件

ステップ 1:専用の Alibaba Cloud サービスイベントバスの選択

システムイベントバスは、EventBridge が自動的に作成する `default` バスです。Alibaba Cloud サービスはリアルタイムでイベントを `default` バスに配信します。Alibaba Cloud サービスから発生するイベントは、`default` バス上で検索およびサブスクライブできます。

  1. EventBridge コンソール にログインします。左側のナビゲーションウィンドウで、イベントバス をクリックします。

  2. 上部のナビゲーションバーで、リージョンを選択します。

  3. EventBridge ページで、default をクリックします。

ステップ 2:ECS イベントのイベントルールの作成

  1. EventBridge ページで、左側のナビゲーションウィンドウから イベントルール をクリックし、その後 ルールの作成 をクリックします。

  2. ルールの作成 パネルで、以下の手順を実行します。

    1. [基本情報の設定] タブで、名前 テキストボックスに名前を入力し、説明 テキストボックスに説明を入力します。次に、次へ をクリックします。

    2. イベントパターンの設定 タブで、イベントパターンを構成します。その後、次へ をクリックします。

      • Alibaba Cloud サービスイベントソース タブをクリックします。

      • イベントソース のドロップダウンリストから、acs.ecs を選択します。

      • イベントタイプ のドロップダウンリストから、サブスクライブするイベントタイプを選択します。複数のイベントタイプを選択できます。

      • イベントパターンのデバッグ セクションでは、選択したイベントタイプのサンプルを表示できます。たとえば、インスタンスのライフサイクル状態変更のための ecs.Instance.StateChange を選択すると、次のサンプルが表示されます。

        {
          "id": "45ef4dewdwe1-7c35-447a-bd93-fab****",
          "source": "acs.ecs",
          "specversion": "1.0",
          "subject": "acs.ecs:cn-hangzhou:123456789098****:215672",
          "time": "2020-11-19T21:04:41Z",
          "type": "ecs:Instance:StateChange",
          "aliyunaccountid": "123456789098****",
          "aliyunpublishtime": "2020-11-19T21:04:42Z",
          "aliyuneventbusname": "default",
          "aliyunregionid": "cn-hangzhou",
          "aliyunpublishaddr": "172.25.XX.XX",
          "data": {
            "instanceName": "iZ0jl0kyquo46h****",
            "instanceType": "ecs.c6.large",
            "privateIpAddress": "172.21.XX.XX",
            "publicIpAddress": "8.37.XX.XX",
            "resourceId": "i-0jl0kyquo46****",
            "resourceType": "ALIYUN::ECS::Instance",
            "spotStrategy": "SpotWithPriceLimit",
            "state": "Running"
          }
        }
    3. ターゲットの設定 タブで、サービスタイプ を選択し、プッシュシナリオを構成します。

      シナリオ 1: Simple Message Queue (formerly MNS) へのプッシュ

      イベントのレイテンシーが高い、またはイベントのボリュームが大きいシナリオでは、Simple Message Queue (formerly MNS) を使用してイベントをサブスクライブすることができます。Simple Message Queue (formerly MNS) の課金に関する詳細については、「課金」をご参照ください。

      • サービスタイプSimple Message Queue (formerly MNS) を選択します。

      • キュー:作成済みのキューを選択します。

      • メッセージ本文 : **完全なイベント** を選択します。

      • Base64 デコードの有効化はい を選択します。Base64 エンコーディングを有効化すると、Simple Message Queue (formerly MNS) の宛先キューに配信される前にデータがエンコードされます。

      **サービスタイプ** を Simple Message Queue (formerly MNS) に設定した場合、NetworkInterfaceDemo.zip を使用して Simple Message Queue (formerly MNS) からのメッセージをリッスンし、イベントを取得できます。

      シナリオ 2:DingTalk へのプッシュ

      • サービスタイプDingTalk を選択します。

      • アドレス:DingTalk ロボットの Webhook  URL を入力します。

      • 秘密鍵:DingTalk ロボットのキーを入力します。

      • プッシュ内容EventBridge のテンプレート機能を使用して、イベントからパラメーターを抽出し、DingTalk ロボットにプッシュできます。たとえば、ECS インスタンスのインスタンス名(`instanceName`)および実行状態(`state`)をプッシュするには、以下のパラメーターを構成します:

        • Parameters:JSONPath 式を使用して、イベントから取得するフィールドを指定し、変数名を設定します。

          {
            "instanceName":"$.data.instanceName",
            "state":"$.data.state"
          }
        • Template:DingTalk ロボットで必要な形式でテンプレートを定義し、定義した変数を参照します。

          {
            "msgtype": "text",
            "text": {
                "content": "${instanceName} の状態は ${state} です" 
            } 
          }

      シナリオ 3:ダウンストリームの HTTP サービスへのプッシュ

      • サービスタイプhttp または https を選択します。

      • URL:イベントを受信する URL を構成します。

      • Body:イベントコンテンツの形式を構成します。EventBridge はイベントを変換し、必要な形式で HTTP ターゲットにプッシュできます。サポートされる変換形式は、**完全なイベント**、**部分的なイベント**、**静的フィールド**、および **テンプレート** です。詳細については、「イベント変換」をご参照ください。

      • ネットワークタイプ

        • インターネット:インターネット経由でターゲット URL にアクセスします。

        • VPC:ターゲット URL がインターネットに公開されていない場合に選択します。VPC ID、VSwitch ID、セキュリティグループ ID を指定する必要があります。

      シナリオ 4:プッシュ後のアクションのトリガー

      ECS イベント発生時にさらにカスタマイズされたアクションをトリガーしたい場合は、サービスタイプを Function Compute に設定します。イベントを特定の関数にプッシュし、Function Compute 内でコードを記述してカスタムアクションを定義できます。

      • サービスタイプFunction Compute を選択します。

      • サービスFunction Compute で作成したサービスの名前です。

      • 関数Function Compute で作成した関数の名前です。

      • イベント:イベントコンテンツの形式を構成します。EventBridge はイベントを変換し、必要な形式で Function Compute にプッシュできます。サポートされる変換テンプレートは、完全なイベント部分的なイベント静的フィールド、および テンプレート です。詳細については、「イベント変換」をご参照ください。

      • 実行方法

        • 同期: Function Compute がイベントを受信します。関数がイベントを処理した後、リクエストは成功とみなされます。

        • 非同期: Function Compute がイベントを受信した時点で、リクエストは成功とみなされます。

        詳細については、「Function Compute へのルーティング」をご参照ください。

      シナリオ 5:複数の Alibaba Cloud アカウントからの ECS イベントの集約

      EventBridge は、異なるアカウントおよびリージョンから発生する ECS イベントを、単一のアカウントおよびリージョン内のイベントバスに集約できます。これを行うには、サービスタイプを **EventBridge イベントバス** に設定します。

      • ターゲットタイプ

        • 同一アカウントのイベントバス:現在のアカウント内の別のバスにイベントを配信します。

        • クロスアカウントイベントバス:他のアカウント内のバスにイベントを配信します。このオプションを選択した場合、必要な権限を付与する必要があります。詳細については、「EventBridge へのイベントのルーティング」をご参照ください。

      • リージョン:中国本土内のリージョン間、および中国本土以外のリージョン間でのクロスリージョン配信がサポートされています。

      • Event Bus:ターゲットイベントバスの名前です。

      • イベント:デフォルトでは完全なイベントが配信されます。これは変更できません。

      ターゲットの設定 タブの下部で、必要に応じて再試行ポリシーおよびデッドレターキューを構成できます。「再試行およびデッドレターキュー」をご参照ください。

      その他のシナリオについては、「ターゲットサービスタイプ」をご参照ください。

ステップ 3:イベントのトリガー

このトピックでは、インスタンスのライフサイクル状態変更のための ecs.Instance.StateChange イベントタイプを例として使用します。このイベントをトリガーするには、ECS インスタンスの実行状態を変更します。

  1. ECS コンソール にログインします。

  2. 左側のナビゲーションウィンドウで、インスタンス & イメージ > インスタンス を選択します。

  3. 上部のナビゲーションバーで、ターゲットリソースが配置されているリージョンを選択します。

  4. 対象の ECS インスタンスを検索します。操作 列で、image.png > インスタンスステータス を選択し、インスタンスの実行状態を変更します。

ステップ 4:配信結果の確認

  1. ECS イベントが生成されたかどうかを確認します。

    EventBridge を使用すると、時間範囲、イベントタイプ、ルール名、またはイベント ID を指定して ECS イベントを検索できます。イベント ID は ECS イベント ID と同じです。「イベントの照会」をご参照ください。

  2. ECS イベントサブスクリプションの配信結果を確認します。

    前のステップで取得したイベント ID を使用して、イベント追跡 をクリックすることで、イベントのプッシュ追跡を表示できます。操作 列の イベント追跡 をクリックすると、プッシュ先、ステータス、プッシュ回数、時間などの詳細を含む追跡情報が表示されます。image.png

イベントのモニタリングとアラート

EventBridge のモニタリングダッシュボードでは、作成した ECS イベントサブスクリプションタスクの呼び出し回数、プッシュ成功率、およびプッシュ遅延を確認できます。また、ビジネスシナリオに応じてアラートポリシーを構成することもできます。

  1. CloudMonitor コンソール にログインします。

  2. 左側のナビゲーションウィンドウで、リソース監視 > クラウドサービス監視 を選択します。

  3. クラウドサービス監視 ページで、左側のナビゲーションウィンドウから ミドルウェア をクリックします。その後、ミドルウェア セクションで、イベントバス の上にポインターを移動し、イベントバス - EventBus をクリックします。

    Kd6bGuRq7F

  4. イベントバス - EventBus ページで、リージョンを選択します。その後、default バスの 操作 列にある モニタリングチャート をクリックして、モニタリングの詳細を表示します。

    jyijb9Sx6M

モニタリングページでは、EventBridge リソースに対してアラートルールを設定できます。リソースがアラートルールの条件を満たすと、CloudMonitor が自動的にアラート通知を送信します。「アラートルールの設定」をご参照ください。

再試行およびデッドレターキュー

イベントがイベントバスに書き込まれた後、EventBridge は、イベントをダウンストリームサービスに少なくとも 1 回はプッシュすることを保証します。ダウンストリームの受信側がダウンタイム、サービスの利用不可、ネットワークジッターなどの例外によりイベントを受信できない場合、EventBridge は、再試行ポリシー、フォールトトレランスポリシー、デッドレターキューなど、これらの例外を処理するための複数の方法を提供します。ステップ 2:ECS イベントのイベントルールの作成 で再試行およびデッドレターポリシーを構成することで、イベントが正しく配信されることを保証できます。

  • 再試行ポリシー

    ダウンストリームの受信側がイベントを受信できない場合、EventBridge がイベントをプッシュする際に例外が発生します。この場合、EventBridge で再試行ポリシーを構成して、プッシュ成功率を最大化できます。

    • バックオフ再試行:3 回再試行します。再試行間隔は 10~20 秒のランダム値です。

    • 指数減衰再試行:176 回再試行します。再試行間隔は指数関数的に増加し、最大で 512 秒になります。総再試行時間は 1 日です。再試行間隔は 1、2、4、8…と 512 秒まで増加します。

  • デッドレタープロセスポリシー

    最大再試行回数に達してもイベントが配信されない場合、EventBridge はデフォルトでイベントを破棄します。イベントを保持したい場合は、デッドレターキューに送信するように構成できます。EventBridge は、以下のデッドレターキューをサポートしています:ApsaraMQ for RocketMQSimple Message Queue (formerly MNS)ApsaraMQ for Kafka、および EventBridge です。

  • フォールトトレランスポリシー

    イベントを順序通りに処理する必要がある場合、例外が発生したときにタスクを一時停止し、イベントが正常にプッシュされるまで待機する必要があります。そうしないと、イベントが順不同で処理される可能性があります。この場合、フォールトトレランスの禁止を選択します。順序性を必要としないシナリオでは、最大同時プッシュ能力を確保するために、フォールトトレランスの許可を選択することを推奨します。

    • フォールトトレランスの許可:例外が発生した場合、実行はブロックされません。再試行ポリシーが使い果たされた後、メッセージは構成に基づいてデッドレターキューに配信されるか、破棄されます。

    • フォールトトレランスの禁止:例外が発生し、再試行ポリシーが使い果たされた場合、実行がブロックされます。