通過EventBridge將輕量消息隊列(原 MNS)投遞事件發(fā)送至釘釘
本文為您介紹如何通過事件總線EventBridge的投遞功能,將配置審計投遞至輕量消息隊列(原 MNS)的投遞事件發(fā)送至釘釘。
前提條件
請確保您已開通事件總線EventBridge。具體操作,請參見開通事件總線EventBridge并授權(quán)。
請確保您已開通輕量消息隊列(原 MNS)。具體操作,請參見開通輕量消息隊列(原 MNS)并授權(quán)。
重要當(dāng)您使用輕量消息隊列(原 MNS)的主題和隊列時,會產(chǎn)生相關(guān)費用。更多信息,請參見輕量消息隊列(原 MNS)計費說明。
背景信息
配置審計支持的投遞渠道包括:日志服務(wù)SLS、對象存儲OSS和輕量消息隊列(原 MNS)。如果您需要將審計事件(例如:資源配置變更歷史或資源不合規(guī)事件)按照指定內(nèi)容格式投遞至更多渠道(例如:釘釘、消息隊列、函數(shù)計算、短信服務(wù)、郵箱服務(wù)等),可以基于事件總線EventBridge提供的事件處理及投遞功能來實現(xiàn)。本文以資源不合規(guī)事件投遞為例,使用事件總線EventBridge的事件流,將檢測不合規(guī)的資源進(jìn)行事件轉(zhuǎn)化,并按照指定的事件格式發(fā)送至釘釘。
步驟一:創(chuàng)建輕量消息隊列(原 MNS)的主題和隊列
創(chuàng)建輕量消息隊列(原 MNS)的主題。
具體操作,請參見創(chuàng)建主題。
創(chuàng)建輕量消息隊列(原 MNS)的隊列。
具體操作,請參見創(chuàng)建隊列。
為輕量消息隊列(原 MNS)的主題創(chuàng)建訂閱,將發(fā)送到該主題的消息都推送到訂閱該主題的隊列中。
具體操作,請參見創(chuàng)建訂閱。
如果您已在輕量消息隊列(原 MNS)中創(chuàng)建相應(yīng)的主題和隊列,則跳過當(dāng)前步驟。
步驟二:設(shè)置配置審計投遞事件至輕量消息隊列(原 MNS)
創(chuàng)建配置審計的規(guī)則。
具體操作,請參見從模板創(chuàng)建規(guī)則或自定義創(chuàng)建規(guī)則。
設(shè)置投遞事件至輕量消息隊列(原 MNS)。
具體操作,請參見設(shè)置投遞數(shù)據(jù)到輕量消息隊列(原 MNS)。
如果您已在配置審計中創(chuàng)建規(guī)則,且設(shè)置了數(shù)據(jù)投遞至輕量消息隊列(原 MNS),則跳過當(dāng)前步驟。
步驟三:創(chuàng)建事件總線EventBridge并設(shè)置事件投遞
在左側(cè)導(dǎo)航欄,單擊事件總線。
在控制臺頂部,選擇目標(biāo)事件總線的地域。
在自定義事件總線區(qū)域,單擊快速創(chuàng)建。
在創(chuàng)建自定義事件總線面板,配置相關(guān)參數(shù)。
在總線頁面,填寫自定義事件總線名稱及描述,單擊下一步。
在事件源頁面,先配置如下參數(shù),然后單擊下一步。
填寫事件源名稱,例如:
noncompliant.event
。在事件提供方下拉列表中選擇輕量消息隊列(原 MNS)。
選擇MNS消息隊列的隊列名稱。
選中開啟Base64解碼單選框。
在規(guī)則頁面,先配置如下參數(shù),然后單擊下一步。
填寫規(guī)則名稱,例如:
noncompliant-resource-rule
。配置事件總線的模式內(nèi)容,用于過濾無關(guān)事件。
以下配置表示僅向事件目標(biāo)投遞名稱為noncompliant.event的事件。具體操作,請參見事件模式。
{ "source": [ "noncompliant.event" ] }
在目標(biāo)頁面,先配置如下參數(shù),然后單擊創(chuàng)建。
在服務(wù)類型下拉列表中選擇釘釘acs.dingtalk。
配置釘釘群的WebHook地址和加簽密鑰。
獲取WebHook地址的方法,請參見自定義機器人接入。
配置推送內(nèi)容。
將事件按照指定的內(nèi)容模板進(jìn)行轉(zhuǎn)換,然后推送至事件目標(biāo)。以下配置表示從不合規(guī)事件中解析出資源ARN及規(guī)則名稱推送至釘釘。具體操作,請參見事件內(nèi)容轉(zhuǎn)換。
/** 變量配置 **/ { "resourceArn": "$.data.messageBody.evaluationResultIdentifier.evaluationResultQualifier.resourceArn", "configRuleName": "$.data.messageBody.evaluationResultIdentifier.evaluationResultQualifier.configRuleName" }
/** 模板配置 **/ { "msgtype": "text", "text": { "content": "資源不合規(guī)通知: 資源${resourceArn}, 規(guī)則名稱${configRuleName}" } }
步驟四:校驗執(zhí)行結(jié)果
登錄配置審計控制臺。
在左側(cè)導(dǎo)航欄,選擇
。在規(guī)則頁面,先單擊目標(biāo)規(guī)則對應(yīng)操作列的圖標(biāo),再單擊重新審計。
進(jìn)入步驟三配置的釘釘群,查詢釘釘群機器人通知。
如果釘釘群存在資源不合規(guī)通知,則表示配置完成。
常見問題
在配置審計控制臺創(chuàng)建輕量消息隊列(原 MNS)投遞時使用的主題可以作為事件總線EventBridge的事件源嗎?
不可以,因為事件總線EventBridge對于輕量消息隊列(原 MNS)的事件源僅支持隊列。您可以為輕量消息隊列(原 MNS)的主題添加隊列類型的訂閱,并將此隊列作為輕量消息隊列(原 MNS)事件源。
配置了事件總線EventBridge的事件流,且已在配置審計控制臺執(zhí)行手動審計,為什么釘釘群未收到通知?
在配置審計控制臺排查,確保存在不合規(guī)資源。
登錄配置審計控制臺。
在左側(cè)導(dǎo)航欄,選擇合規(guī)審計 > 規(guī)則。
查看規(guī)則的審計結(jié)果,確保存在不合規(guī)資源。
在事件總線EventBridge控制臺排查,確保事件投遞成功。
在左側(cè)導(dǎo)航欄,單擊事件總線。
在事件總線頁面,單擊目標(biāo)事件總線對應(yīng)操作列的事件追蹤。
按時間范圍查詢事件,確保事件源存在數(shù)據(jù)。
單擊目標(biāo)事件對應(yīng)操作列事件軌跡。
在事件軌跡對話框,確保事件投遞成功。
如何處理事件總線EventBridge的事件投遞失敗問題?
當(dāng)提示
[500]java.lang.RuntimeExceptionjava.lang.RuntimeExceptionjava.lang.RuntimeException缺少參數(shù)JSON
時,解決方法如下:請您確保事件內(nèi)容的對象
$.data
的KV對中不存在引號,否則當(dāng)變量替換后,原始的JSON就會被變量中的雙引號截斷,不再是合法的JSON格式。您可以使用系統(tǒng)提供的轉(zhuǎn)義工具jsonEscape
對規(guī)則模板的配置進(jìn)行修改,以下示例的變量配置中變量configRuleName
對應(yīng)值存在引號,在模板中使用jsonEscape
進(jìn)行轉(zhuǎn)義。/** 變量配置 **/ { "resourceArn": "$.data.messageBody.evaluationResultIdentifier.evaluationResultQualifier.resourceArn", "configRuleName": "$.data.messageBody.evaluationResultIdentifier.evaluationResultQualifier.configRuleName" }
/** 模板配置 **/ { "msgtype": "text", "text": { "content": "資源不合規(guī)通知: 資源${resourceArn}, 規(guī)則名稱${jsonEscape(configRuleName)}" } }
當(dāng)提示
[500]java.lang.RuntimeExceptionjava.lang.RuntimeExceptionjava.lang.RuntimeExceptionsendtoofast,exceed20timesperminute
時,解決方法如下:釘釘開放平臺限制了自定義機器人發(fā)送消息的頻率,每個機器人每分鐘最多發(fā)送20條消息到釘釘群。如果釘釘消息超出20條,則會限流10分鐘。如果有大量發(fā)送消息的場景(例如:系統(tǒng)監(jiān)控報警),您可以將這些消息進(jìn)行整合,通過Markdown消息以摘要的形式發(fā)送到釘釘群。具體操作,請參見自定義機器人接入。