EventBridge を使用して、Simple Message Queue (旧称:MNS) からのリソースコンプライアンスイベントを DingTalk グループに転送します。
前提条件
-
EventBridge が有効化されました。 EventBridge を有効化して権限を付与する。
-
SMQ は有効化されています。 SMQ を有効化し、RAM ユーザーに SMQ へのアクセスを許可する。
重要SMQ トピックとキューには料金が発生します。課金。
概要
Cloud Config は、Simple Log Service、Object Storage Service (OSS)、または SMQ にイベントを配信します。 EventBridge を使用すると、これらのイベントを DingTalk、Message Queue、Function Compute、Short Message Service、または Alibaba Mail などの追加のチャネルにルーティングできます。 このトピックでは、リソースの非準拠イベントを例に挙げます。EventBridge のイベントフローは、非準拠の検出をイベントに変換し、指定された形式で DingTalk に送信します。
ステップ 1:SMQ トピックとキューの作成
-
SMQ トピックを作成します。
-
SMQ キューを作成します。
-
トピックに送信されたメッセージがキューにプッシュされるように、キューを SMQ トピックにサブスクライブします。
すでに SMQ トピックとキューがある場合は、このステップをスキップできます。
ステップ 2:SMQ へのイベント配信の設定
-
Cloud Config ルールを作成します。
-
SMQ へのイベント配信を設定します。
すでに SMQ 配信が設定された Cloud Config ルールがある場合は、このステップをスキップできます。
ステップ 3:EventBridge イベントバスの作成とイベント配信の設定
-
EventBridge コンソールにログインします。
-
左側のナビゲーションペインで、EventBridge をクリックします。
-
上部メニューで、リージョンを選択します。
-
input タブで、[クイック作成] をクリックします。
-
[カスタムイベントバスの作成] パネルで、パラメーターを設定します。
-
[イベントバス] ページで、カスタムイベントバスの名前と説明を入力し、Next をクリックします。
-
イベント源 ページで、次のパラメーターを設定し、Next をクリックします。
-
[イベントソース名] を指定します。 この例では、
noncompliant.eventを入力します。 -
[イベントプロバイダー] ドロップダウンリストから、軽量メッセージ キュー (以前の MNS) を選択します。
-
QueueNameを選択します。
-
[Base64 デコードを有効にする] を選択します。
-
-
[ルール] ページで、次のパラメーターを設定し、Next をクリックします。
-
Rule Name には、
noncompliant-resource-ruleなどの名前を入力します。 -
イベントをフィルターするには、[パターンコンテンツ]を設定します。
以下の設定では、ソースが noncompliant.event であるイベントのみをイベントターゲットに配信します。 イベントパターン。
{ "source": [ "noncompliant.event" ] }
-
-
ターゲット ページで、次のパラメーターを設定し、作成 をクリックします。
-
サービスタイプドロップダウンリストから、[acs.dingtalk] を選択します。
-
DingTalk グループの Webhookアドレス と [シークレットキー] を設定します。
-
[プッシュコンテンツ] パラメーターを設定します。
次のテンプレートは、非準拠イベントからリソースの 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:結果の確認
Cloud Configコンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
-
ルール ページで、目的のルールを見つけ、Actions 列の
アイコンをクリックし、Re-evaluate をクリックします。 -
ステップ 3 で設定した DingTalk グループに移動し、チャットボット通知を確認します。
グループにリソース非準拠通知が表示されている場合、設定は成功しています。
よくある質問
イベント配信用に設定した SMQ トピックをイベントバスのイベントソースとして使用できますか?
いいえ。EventBridge イベントバスは、イベントソースとして SMQ キューのみをサポートしています。SMQ トピックのキューを設定し、そのキューをイベントソースとして使用してください。
EventBridge イベントフローを設定して手動で評価を実行した後、DingTalk が通知を受信しないのはなぜですか?
-
非準拠リソースが存在しない場合、通知は送信されません。Cloud Config コンソールで非準拠リソースが存在することを確認してください。
-
Cloud Config コンソールにログインします。
-
左側のナビゲーションペインで、[コンプライアンスと監査 > ルール] の順に選択します。
ルール評価結果で非準拠リソースを確認します。
-
-
EventBridge コンソールでイベント配信を確認します。
-
[EventBridge コンソール]にログオンします。
-
左側のナビゲーションペインで、EventBridge をクリックします。
-
EventBridge ページで、イベントバスを見つけ、Actions 列の [イベント追跡] をクリックします。
時間範囲でイベントをクエリし、イベントソースにデータが存在することを確認します。
-
対象のイベントを見つけ、Actions 列の [イベントトレース] をクリックします。
[イベントトレース] ダイアログボックスで、イベントが配信されたことを確認します。
-
EventBridge のイベント配信が失敗した場合はどうすればよいですか?
-
エラーメッセージ
[500]java.lang.RuntimeExceptionjava.lang.RuntimeExceptionjava.lang.RuntimeException is missing parameter JSONが表示される場合は、次の手順を実行します。$.dataオブジェクトのキーと値のペアに、エスケープされていない引用符が含まれていないことを確認してください。エスケープされていない引用符は、変数置換後に JSON 文字列を切り捨てます。引用符を含む可能性のある変数を処理するには、ルールテンプレートで組み込みのjsonEscapeツールを使用してください。次の例では、jsonEscapeがconfigRuleName変数をエスケープします。// 変数 { "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 メッセージのレート制限があります。この制限を超えると、10 分間のスロットリングが適用されます。監視アラートなどの大量のメッセージを送信するには、それらを 1 つの Markdown メッセージに統合してください。