全部產品
Search
文件中心

Elastic Compute Service:使用EventBridge和CloudMonitor訂閱雲助手事件

更新時間:Dec 24, 2025

通過訂閱雲助手事件,可以構建自動化的營運響應流程。例如,在自動化任務(如安裝軟體、執行巡檢指令碼)失敗時立即接收警示,從而替代高成本、高延遲的手動輪詢檢查。

操作步驟

操作步驟以訂閱雲助手任務狀態事件為例,更多資訊,請參見雲助手事件說明

使用EventBridge訂閱雲助手事件

操作前,請確認已開通事件匯流排EventBridge並授權

  1. 登入事件匯流排EventBridge控制台,在左側導覽列,單擊事件匯流排

  2. 在頂部功能表列,選擇地區。

  3. 事件匯流排頁面,單擊default

  4. 事件匯流排頁面,單擊左側導覽列的事件規則,然後單擊建立規則

  5. 配置基本資料頁簽,在名稱文字框輸入規則名稱,在描述文字框輸入規則的描述,然後單擊下一步

  6. 配置事件模式頁簽,完成以下配置,然後單擊下一步

    1. 事件來源下拉式清單中選擇acs.ecs

    2. 事件類型下拉式清單中選擇需要訂閱的雲助手事件類型。

      雲助手任務狀態事件:ecs:CloudAssistant:TaskCompleted

    3. 事件模式調試中,查看訂閱的事件類型的樣本。

      {
          "id": "45ef4dewdwe1-7c35-447a-bd93-fab****",
          "source": "acs.ecs",
          "specversion": "1.0",
          "subject": "acs.ecs:cn-hangzhou:123456789098****:215672",
          "time": "2020-11-19T21:04:41+08:00",
          "type": "ecs:CloudAssistant:TaskCompleted",
          "aliyunaccountid": "123456789098****",
          "aliyunpublishtime": "2020-11-19T21:04:42Z",
          "aliyuneventbusname": "default",
          "aliyunregionid": "cn-hangzhou",
          "aliyunpublishaddr": "172.25.XX.XX",
          "data": {
              "commandId": "c-hz045**********",
              "commandName": "hello-linux.sh",
              "exitCode": "0",
              "finishTime": "2023-12-14T07:39:48Z",
              "instanceId": "i-bp114***************",
              "invocationStatus": "Success",
              "invokeId": "t-hz045**********",
              "ownerId": "158*************",
              "playerUid": "256***************",
              "repeatMode": "Once",
              "repeats": "1",
              "startTime": "2023-12-14T07:39:48Z",
              "errorCode": "0",
              "errorDesc": ""
          }
      }
    4. 在樣本下方,單擊測試類比事件觸發。如果顯示匹配通過,事件可正常被觸發,表示事件可正常觸發。

  7. 配置事件目標,選擇不同的服務類型,設定推送情境。

    更多推送情境說明,請參見設定推送情境

使用CloudMonitor訂閱雲助手事件

  1. 登入CloudMonitor控制台

  2. 在左側導覽列,選擇事件中心 > 事件訂閱

  3. 訂閱策略頁簽,單擊建立訂閱策略

  4. 建立訂閱策略頁面,設定訂閱雲助手事件的相關參數。

    本樣本僅展示雲助手事件的相關參數,更多參數說明,請參見訂閱策略參數說明
    • 訂閱類型:選擇系統事件

    • 訂閱範圍

      • 產品:選擇Elastic Compute Service

      • 事件類型:選擇通知

      • 事件名稱:選擇雲助手任務狀態事件

  5. 設定完成後,單擊提交

    當相關事件觸發時,將會收到相關事件的通知。您也可以通過調用DescribeSystemEventAttribute查詢系統事件詳情。

雲助手事件說明

雲助手任務狀態事件

事件描述

命令或指令碼運行需要一定時間,雲助手任務狀態事件用於加強對任務完成情況的感知,可以利用該事件達到以下目的:

  • 在任務失敗或任務處於完成狀態時,可獲得通知,以便設定警示、處理任務等。

  • 使用輪詢會佔用使用者的API調用額度,通過事件訂閱的方式可以避免該問題。

  • 輪詢的過程較長,容易被應用發布所打斷。使用事件規避狀態中斷,可以降低使用者的複雜度。

事件觸發條件&限制

事件觸發條件:使用者使用RunCommand/InvokeCommand觸發任務執行,雲助手內部監聽任務完成狀態,處於完成狀態的任務則發出該事件。

事件使用限制:

  • 僅在雲助手在執行個體上的任務執行狀態(InvocationStatus)變為以下狀態時,才會觸發發送事件。

    • Aborted:任務下發失敗

    • Success:任務執行成功

    • Failed:任務執行失敗

    • Invalid:任務內容非法

    • Timeout:任務執行逾時

    • Cancelled:任務執行取消

    • Terminated:任務執行被終止

  • 在OpenAPI(DescribeInvocations/DescribeInvocationResults)中,事件查詢的返回資料格式為array<object>。在本事件中,上報的是一個任務在單個執行個體上的執行狀態,而不是多個任務。

事件欄位說明

欄位

說明

樣本值

instanceId

執行個體ID。

i-bp114***************

invokeId

命令執行ID。

t-hz045**********

commandId

命令ID。

c-hz045**********

commandName

命令名稱。

ACS-ECS-ResetPassword-for-linux.sh

ownerUid

執行命令的執行個體歸屬帳號。

158*************

playerUid

角色扮演者帳號ID。

256***************

repeatMode

命令執行的方式。如果同時設定了InstanceId參數,則不生效。取值範圍:

  • Once:立即執行命令。

  • Period:定時執行命令。

  • NextRebootOnly:當執行個體下一次啟動時,自動執行命令。

  • EveryReboot:執行個體每一次啟動都將自動執行命令。

Once

repeats

命令在該執行個體上執行的次數。

  • 若執行方式為立即執行,則值為0或1。

    • 0:命令下發失敗,命令指令碼未啟動執行。

    • 1:命令下發成功,命令第一次在此執行個體上執行。

  • 若執行方式為定時執行,則值為執行過多少次。

0

invocationStatus

命令執行的狀態。

  • Invalid:指定命令類型或參數錯誤。

  • Aborted:向執行個體發送命令失敗。執行個體必須在運行中,且命令可以在1分鐘內發送完成。

  • Success:

    • 單次執行的命令:命令執行完成,且退出碼為0。

    • 定時執行的命令:上一次執行成功且退出碼為0,且指定的執行時間已結束。

  • Failed:

    • 單次執行的命令:命令執行完成,且退出碼非0。

    • 定時執行的命令:上一次執行成功且退出碼非0,且指定的執行時間將被中止。

  • Timeout:命令執行逾時。

  • Cancelled:命令的執行動作已經取消,命令未曾啟動。

  • Terminated:命令執行時被終止。

Success

exitCode

命令進程的退出碼。

0

startTime

任務開始時間。

2023-12-20T06:15:55Z

finishTime

任務結束時間。

2023-12-20T06:15:59Z

errorCode

命令下發失敗或執行失敗原因code。

0

errorDesc

命令下發失敗或執行失敗的原因詳情。

-

雲助手首次心跳事件

事件描述

雲助手的心跳是判定執行個體作業系統狀態的手段之一。其中,首次心跳可以用來判斷作業系統真正啟動的時間,作為執行個體健康狀態、下發雲助手命令等情境的參考。

相比通過輪詢DescribeCloudAssistantStatus的方式查看心跳是否上報,雲助手首次心跳事件可以規避以下問題:

  • 輪詢查詢DescribeCloudAssistantStatus狀態是否變為true,實現比較複雜。如果間隔不當,可能產生過多請求,造成流控或對系統造成壓力。

  • 由於執行個體作業系統真正的啟動時間差別較大,部分Windows執行個體偶爾需要5分鐘才能啟動完成,輪詢不容易控制總時間長度。

  • DescribeCloudAssistantStatus對狀態的判斷有一定的滯後性,從有心跳到無心跳會有2分鐘的滯後,所以對於重啟執行個體的情境,DescribeCloudAssistantStatus不容易識別。

事件觸發條件&限制

事件觸發條件:在雲助手心跳上報時,當判定為首次心跳時觸發事件,由雲助手服務端發送雲助手用戶端啟動後的首次心跳事件。

雲助手版本限制:

  • Windows執行個體:雲助手版本必須高於1.0.0.149。

  • Linux執行個體:雲助手版本必須高於1.0.2.569。

低版本雲助手不會通過每分鐘一次的心跳上報介面上報心跳,或不會上報index欄位,因此不能準確識別出啟動後的首次心跳,暫時不對這些低版本做支援。

事件欄位說明

欄位

說明

樣本值

bizEventId

事件ID。

ea33c3e2-aaf0-****-****-5d49b1ecce99

vmName

事件關聯的執行個體ID。

i-bp19****************

extensions

業務擴充資訊。

-

azone

可用性區域。

cn-shenzhen-e

region

地區。

cn-shenzhen

agentVersion

雲助手Agent版本。

2.2.3.529

uptime

作業系統已啟動的時間(毫秒)

19000

雲助手任務執行Output投遞結果事件

事件描述

  • 執行命令時,命令執行輸出結果最多保留24 KB,超出部分會自動截斷。

  • 當期望擷取完整的執行Output,或需要持久化儲存執行Output時,可以配置命令執行達到終態時,將輸出結果投遞到的OSS路徑。

  • 利用該事件達到以下目的:

    • 擷取Output投遞結果的通知與投遞詳情,收到投遞成功的事件通知時,可以從對應OSS中下載Output檔案,避免輪詢調用DescribeInvocations擷取結果,提升效率。

    • 當投遞失敗時,從事件中獲得投遞失敗的詳細原因。

事件觸發條件&限制

事件觸發條件:使用者使用RunCommand/InvokeCommand觸發任務執行,指定了合法的OssOutputDelivery參數,處於完成狀態的任務則發出該事件。

事件使用限制:

  • 僅在雲助手在執行個體上的任務執行狀態(InvocationStatus)變為以下狀態時,才會觸發發送事件。

    • Aborted:任務下發失敗

    • Success:任務執行成功

    • Failed:任務執行失敗

    • Invalid:任務內容非法

    • Timeout:任務執行逾時

    • Cancelled:任務執行取消

    • Terminated:任務執行被終止

雲助手版本限制:

  • Windows執行個體:雲助手版本必須高於2.1.4.1007。

  • Linux執行個體:雲助手版本必須高於2.2.4.1007。

事件欄位說明

欄位

說明

instanceId

執行個體ID。

invokeId

命令執行ID。

ownerUid

執行命令的執行個體歸屬帳號。

playerUid

角色扮演者帳號id。

repeatMode

命令執行的方式,取值範圍:

  • Once:立即執行命令。

  • Period:定時執行命令。

  • NextRebootOnly:當執行個體下一次啟動時,自動執行命令。

  • EveryReboot:執行個體每一次啟動都將自動執行命令。

repeats

命令在該執行個體上執行的次數。

  • 若執行方式為立即執行,則值為0或1。

    • 0:命令下發失敗,命令指令碼未啟動執行。

    • 1:命令下發成功,命令第一次在此執行個體上執行。

  • 若執行方式為定時執行,則值為執行過多少次。

ossOutputDelivery

命令執行輸出結果投遞OSS配置。

ossOutputUri

命令執行輸出結果投遞到OSS的檔案URI地址。

status

投遞結果狀態。

  • InProgress:投遞中。

  • Finished:投遞完成。

  • Failed:投遞失敗。

statusCode

投遞狀態代碼,僅在status為Failed時返回。

errorCode

投遞失敗時的錯誤碼,僅在status為Failed時返回。可能值:

  • UnsupportedInvocationStatus:命令發送失敗、命令校正失敗。

  • ClientNeedUpgrade:雲助手版本不支援投遞功能。

  • 投遞到OSS失敗,請參考錯誤碼

  • 網路不通時返回對應網路程式庫錯誤碼。

errorInfo

投遞失敗時的錯誤詳情,僅在status為Failed時返回。

應用於生產環境建議

  • 等冪性:事件系統可能因為網路或重試導致同一事件被多次投遞,處理邏輯需要具備等冪性,即多次處理同一事件和一次處理的結果相同。可以利用事件中的iddata.bizEventId作為唯一標識,在處理前檢查該ID是否已被處理過。

  • 重試與無效信件佇列:在配置EventBridge事件目標時,強烈建議配置重試策略無效信件佇列。當處理函數暫時失敗時,EventBridge會自動重試;如果最終依然失敗,事件將被發送到無效信件佇列(如MNS隊列)中,供後續手動排查和恢複,避免事件丟失。

  • 監控與警示:對事件處理函數本身進行監控。監控其執行成功率、耗時和錯誤記錄檔,並設定警示。當處理邏輯出現持久性失敗時,可以第一時間介入。

常見問題

使用EventBridge訂閱雲助手事件後,無法收到事件通知?

  1. 檢查前置條件:確認雲助手版本是否滿足要求。

  2. 檢查EventBridge規則

    • 登入EventBridge控制台,確認規則的事件模式是否正確,source應為acs.ecstype應為正確的事件類型。

    • 使用事件模式調試功能,用一個真實的事件JSON樣本測試規則是否能匹配。

  3. 檢查事件目標健康度

    • EventBridge控制台事件規則詳情頁,查看事件目標的調用記錄和錯誤記錄檔。

    • 確認目標服務(如Function Compute、Webhook)本身是否在正常運行,以及網路是否可達。