本文為您介紹如何通過事件匯流排EventBridge的投遞功能,將配置審計投遞至輕量訊息佇列(原 MNS)的投遞事件發送至DingTalk。
前提條件
請確保您已開通事件匯流排EventBridge。具體操作,請參見開通事件匯流排EventBridge並授權。
請確保您已開通輕量訊息佇列(原 MNS)。具體操作,請參見開通輕量訊息佇列(原 MNS)並授權。
重要當您使用輕量訊息佇列(原 MNS)的主題和隊列時,會產生相關費用。更多資訊,請參見輕量訊息佇列(原 MNS)計費說明。
背景資訊
配置審計支援的投遞渠道包括:Log ServiceSLS、Object Storage Service和輕量訊息佇列(原 MNS)。如果您需要將審計事件(例如:資源配置變更歷史或資源不合規事件)按照指定內容格式投遞至更多渠道(例如:DingTalk、訊息佇列、Function Compute、簡訊服務、郵箱服務等),可以基於事件匯流排EventBridge提供的事件處理及投遞功能來實現。本文以資源不合規事件投遞為例,使用事件匯流排EventBridge的事件流,將檢測不合規的資源進行事件轉化,並按照指定的事件格式發送至DingTalk。
步驟一:建立輕量訊息佇列(原 MNS)的主題和隊列
建立輕量訊息佇列(原 MNS)的主題。
具體操作,請參見建立主題。
建立輕量訊息佇列(原 MNS)的隊列。
具體操作,請參見建立隊列。
為輕量訊息佇列(原 MNS)的主題建立訂閱,將發送到該主題的訊息都推送到訂閱該主題的隊列中。
具體操作,請參見建立訂閱。
如果您已在輕量訊息佇列(原 MNS)中建立相應的主題和隊列,則跳過當前步驟。
步驟二:設定配置審計投遞事件至輕量訊息佇列(原 MNS)
建立配置審計的規則。
設定投遞事件至輕量訊息佇列(原 MNS)。
具體操作,請參見設定投遞資料到輕量訊息佇列(原 MNS)。
如果您已在配置審計中建立規則,且設定了資料投遞至輕量訊息佇列(原 MNS),則跳過當前步驟。
步驟三:建立事件匯流排EventBridge並設定事件投遞
在左側導覽列,單擊事件匯流排。
在控制台頂部,選擇目標事件匯流排的地區。
在自訂事件匯流排地區,單擊快速建立。
在建立自訂事件匯流排面板,配置相關參數。
在匯流排頁面,填寫自訂事件匯流排名稱及描述,單擊下一步。
在事件來源頁面,先配置如下參數,然後單擊下一步。
填寫事件來源名稱,例如:
noncompliant.event。在事件提供方下拉式清單中選擇輕量訊息佇列(原 MNS)。
選擇MNS訊息佇列的隊列名稱。
選中開啟Base64解碼單選框。
在規則頁面,先配置如下參數,然後單擊下一步。
填寫規則名稱,例如:
noncompliant-resource-rule。配置事件匯流排的模式內容,用於過濾無關事件。
以下配置表示僅向事件目標投遞名稱為noncompliant.event的事件。具體操作,請參見事件模式。
{ "source": [ "noncompliant.event" ] }
在目標頁面,先配置如下參數,然後單擊建立。
在服務類型下拉式清單中選擇DingTalkacs.dingtalk。
配置DingTalk群的WebHook地址和加簽密鑰。
配置推送內容。
將事件按照指定的內容範本進行轉換,然後推送至事件目標。以下配置表示從不合規事件中解析出資源ARN及規則名稱推送至DingTalk。具體操作,請參見事件內容轉換。
/** 變數配置 **/ { "resourceArn": "$.data.messageBody.evaluationResultIdentifier.evaluationResultQualifier.resourceArn", "configRuleName": "$.data.messageBody.evaluationResultIdentifier.evaluationResultQualifier.configRuleName" }/** 模板配置 **/ { "msgtype": "text", "text": { "content": "資源不合規通知: 資源${resourceArn}, 規則名稱${configRuleName}" } }
步驟四:校正執行結果
登入配置審計控制台。
在左側導覽列,選擇。
在規則頁面,先單擊目標規則對應操作列的
表徵圖,再單擊重新審計。進入步驟三配置的DingTalk群,查詢DingTalk群機器人通知。
如果DingTalk群存在資源不合規通知,則表示配置完成。
常見問題
在配置審計控制台建立輕量訊息佇列(原 MNS)投遞時使用的主題可以作為事件匯流排EventBridge的事件來源嗎?
不可以,因為事件匯流排EventBridge對於輕量訊息佇列(原 MNS)的事件來源僅支援隊列。您可以為輕量訊息佇列(原 MNS)的主題添加隊列類型的訂閱,並將此隊列作為輕量訊息佇列(原 MNS)事件來源。
配置了事件匯流排EventBridge的事件流,且已在配置審計控制台執行手動審計,為什麼DingTalk群未收到通知?
在配置審計控制台排查,確儲存在不合規資源。
登入配置審計控制台。
在左側導覽列,選擇合規審計 > 規則。
查看規則的審計結果,確儲存在不合規資源。
在事件匯流排EventBridge控制台排查,確保事件投遞成功。
在左側導覽列,單擊事件匯流排。
在事件匯流排頁面,單擊目標事件匯流排對應操作列的事件追蹤。
按時間範圍查詢事件,確保事件來源存在資料。
單擊目標事件對應操作列事件軌跡。
在事件軌跡對話方塊,確保事件投遞成功。
如何處理事件匯流排EventBridge的事件投遞失敗問題?
當提示
[500]java.lang.RuntimeExceptionjava.lang.RuntimeExceptionjava.lang.RuntimeException缺少參數JSON時,解決方案如下:請您確保事件內容的對象
$.data的KV對中不存在引號,否則當變數替換後,原始的JSON就會被變數中的雙引號截斷,不再是合法的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開放平台限制了自訂機器人發送訊息的頻率,每個機器人每分鐘最多發送20條訊息到DingTalk群。如果DingTalk訊息超出20條,則會限流10分鐘。如果有大量發送訊息的情境(例如:系統監控警示),您可以將這些訊息進行整合,通過Markdown訊息以摘要的形式發送到DingTalk群。