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

Cloud Config:EventBridge を使用して、SMQ に配信されたイベントを DingTalk に送信する

最終更新日:Apr 07, 2025

このトピックでは、EventBridge を使用して、Simple Message Queue (旧称 MNS) に配信されたイベントを DingTalk に送信する方法について説明します。

前提条件

背景情報

Cloud Config イベントは、Simple Log Service、Object Storage Service (OSS)、および SMQ の各チャンネルに配信できます。EventBridge が提供するイベント処理および配信機能を使用して、評価イベントを指定された形式で他のチャンネルに配信できます。たとえば、リソースの構成変更イベントや非準拠イベントを DingTalk、Message Queue、Function Compute、ショートメッセージサービス、または Alibaba Mail に配信できます。このトピックでは、リソースの非準拠イベントが配信されます。EventBridge イベントフローを使用して、検出された非準拠リソースをイベントに変換し、指定された形式で DingTalk に送信します。

ステップ 1: SMQ トピックとキューを作成する

  1. SMQ トピックを作成します。

    詳細については、「トピックベースのメッセージングの使用開始」をご参照ください。

  2. SMQ キューを作成します。

    詳細については、「トピックベースのメッセージングの使用開始」をご参照ください。

  3. SMQ トピックのサブスクリプションを作成します。これにより、トピックに送信されたメッセージは、トピックをサブスクライブしているキューにプッシュされます。

    詳細については、「トピックベースのメッセージングの使用開始」をご参照ください。

説明

SMQ トピックとキューをすでに作成している場合は、このステップをスキップしてください。

ステップ 2: SMQ にイベントを配信するための設定を構成する

  1. Cloud Config のルールを作成します。

    詳細については、「マネージドルールに基づいてルールを作成する」または「Function Compute に基づいてカスタムルールを作成する」をご参照ください。

  2. SMQ にイベントを配信するための設定を構成します。

    詳細については、「リソースデータを MNS トピックに配信する」をご参照ください。

説明

Cloud Config でルールを作成し、SMQ へのデータ配信を構成している場合は、このステップをスキップしてください。

ステップ 3: EventBridge イベントバスを作成し、イベント配信を構成する

  1. EventBridge コンソール にログオンします。

  2. 左側のナビゲーションウィンドウで、[イベントバス] をクリックします。

  3. 上部のナビゲーションウィンドウで、リージョンを選択します。

  4. [カスタムイベントバス] セクションで、[クイック作成] をクリックします。

  5. [カスタムイベントバスの作成] パネルで、パラメータを構成します。

    1. [イベントバス] ステップで、カスタムイベントバスの名前と説明を入力し、[次のステップ] をクリックします。

    2. [イベントソース] ステップで、次のパラメータを構成し、[次のステップ] をクリックします。

      1. [イベントソース名] を指定します。この例では、noncompliant.event と入力します。

      2. [イベントプロバイダー] ドロップダウンリストから、[message Service (MNS)] を選択します。

      3. [キュー名] ドロップダウンリストから値を選択します。

      4. [base64 デコードを有効にする] を選択します。

    3. イベントルール ステップで、次のパラメーターを構成し、[次のステップ] をクリックします。

      1. [イベントルール名] を指定します。この例では、noncompliant-resource-rule と入力します。

      2. 無関係なイベントを除外するために、イベントバスの [パターンコンテンツ] を構成します。

        次のパターンコンテンツは、noncompliant.event という名前のイベントのみが宛先イベントに配信されることを示しています。詳細については、「イベントパターン」をご参照ください。

        {
            "source": [
                "noncompliant.event"
            ]
        }
    4. [イベントターゲット] ステップで、次のパラメータを構成し、[作成] をクリックします。

      1. [サービスタイプ] ドロップダウンリストから、[dingtalk Acs.dingtalk] を選択します。

      2. DingTalk グループの [アドレス] パラメータと [秘密鍵] パラメータを指定します。

      3. [プッシュされたコンテンツ] パラメータを構成します。

        イベントを変換して宛先イベントにプッシュするためのテンプレートを構成します。次のパラメータとテンプレートは、リソースの Alibaba Cloud Resource Name (ARN) とルール名が非準拠イベントから解析され、DingTalk にプッシュされることを示しています。詳細については、「イベント変換」をご参照ください。

      /**変数**/
      {
        "resourceArn": "$.data.messageBody.evaluationResultIdentifier.evaluationResultQualifier.resourceArn",
        "configRuleName": "$.data.messageBody.evaluationResultIdentifier.evaluationResultQualifier.configRuleName"
      }
      /**テンプレート**/
      {
        "msgtype": "text", 
        "text": {
            "content": "リソース非準拠通知: リソース: ${resourceArn}。ルール名: ${configRuleName}"
        }
      }

ステップ 4: 結果を確認する

  1. Cloud Config コンソール にログオンします。

  2. 左側のナビゲーションウィンドウで、[コンプライアンスと監査] > [ルール] を選択します。

  3. [ルール] ページで、目的のルールを見つけ、image..pngActions 列の [再評価] アイコンをクリックし、 をクリックします。

  4. ステップ 3 で構成した DingTalk グループに移動し、チャットボット通知を表示します。

    DingTalk グループにリソース非準拠通知が表示された場合は、構成は完了です。

FAQ

SMQ へのイベント配信を構成するときに使用する SMQ トピックを、イベントバスのイベントソースとして設定できますか?

いいえ。EventBridge イベントバスは、SMQ キューのみをイベントソースとして使用できます。SMQ トピックのキューを構成し、そのキューを SMQ イベントソースとして使用できます。

EventBridge イベントフローを構成し、Cloud Config コンソールで手動で評価を実行しました。DingTalk グループが通知を受信できないのはなぜですか?

  1. 非準拠リソースが存在しない場合、DingTalk グループは通知を受信できません。この問題を解決するには、次の手順を実行して Cloud Config コンソールで問題のトラブルシューティングを行い、非準拠リソースが存在することを確認します。

    1. Cloud Config コンソール にログオンします。

    2. 左側のナビゲーションウィンドウで、[コンプライアンス & 監査 > ルール] を選択します。

      ルールの評価結果を表示し、非準拠リソースが存在しないことを確認します。

  2. 次の手順を実行して EventBridge コンソールで問題のトラブルシューティングを行い、イベントが配信されていることを確認します。

    1. EventBridge コンソール にログオンします。

    2. 左側のナビゲーションウィンドウで、[イベントバス] をクリックします。

    3. [イベントバス] ページで、目的のイベントバスを見つけ、[操作] 列の [イベント追跡] をクリックします。

      時間範囲でイベントをクエリし、イベントソースにデータが存在することを確認します。

    4. 目的のイベントを見つけ、[操作] 列の [イベントトレース] をクリックします。

      [イベントトレース] ダイアログボックスで、イベントが配信されていることを確認します。

EventBridge イベントが配信されない場合はどうすればよいですか?

  • エラーメッセージ [500]java.lang.RuntimeExceptionjava.lang.RuntimeExceptionjava.lang.RuntimeException is missing parameter JSON が表示された場合は、次の手順を実行します。

    イベントコンテンツの $.data オブジェクトのキーと値のペアに引用符が含まれていないことを確認します。含まれている場合、変数が置き換えられた後、元の JSON 文字列は引用符によって切り捨てられ、無効になります。システムが提供するエスケープツール jsonEscape を使用して、ルールテンプレートの構成を変更できます。次の例では、変数 configRuleName の値に引用符が含まれており、jsonEscape がテンプレートのエスケープ文字として使用されています。

    /**変数**/
    {
      "resourceArn": "$.data.messageBody.evaluationResultIdentifier.evaluationResultQualifier.resourceArn",
      "configRuleName": "$.data.messageBody.evaluationResultIdentifier.evaluationResultQualifier.configRuleName"
    }
    /**テンプレート**/
    {
      "msgtype": "text", 
      "text": {
          "content": "リソース非準拠通知: リソース: ${resourceArn}。ルール名: ${jsonEscape(configRuleName)}"
      }
    }
  • エラーメッセージ [500]java.lang.RuntimeExceptionjava.lang.RuntimeExceptionjava.lang.RuntimeExceptionsendtoofast,exceed20timesperminute が表示された場合は、次の手順を実行して問題のトラブルシューティングを行います。

    DingTalk は、カスタムチャットボットがメッセージを送信できる頻度に制限を設けています。各チャットボットは、1 分あたり最大 20 件のメッセージを DingTalk グループチャットに送信できます。DingTalk メッセージの数が 20 件を超えると、10 分間速度制限が有効になります。システム監視アラートなど、アラートがトリガーされた後に多数のメッセージが送信される場合は、これらのメッセージを統合し、Markdown を使用して概要の形式で DingTalk グループチャットに送信できます。