建立前置和後置事件
本文內容
適用於: ✔️ Windows VM ✔️ Linux VM ✔️ 內部部署環境 ✔️ 已啟用 Azure Arc 的伺服器 ✔️ Azure VM。
前置和後置事件可讓您在排程維護設定之前和之後執行使用者定義的動作。 如需詳細資訊,請瀏覽 Azure 更新管理員中的前置和後置事件工作 。
本文說明如何在 Azure 更新管理員中建立維護前和維護後。
排程維護設定中的事件方格
Azure 更新管理員會利用事件方格來建立及管理前置和後置事件。 如需詳細資訊,請瀏覽事件方格的概觀 。 若要在排程維護期間的之前或之後觸發事件,您需要下列項目:
排程維護設定 - 您可以在 Azure 更新管理員中建立排程維護設定的前置和後置事件。 如需詳細資訊,請參閱使用維護設定排程更新 。
在前置或後置事件中要執行的動作 - 您可以使用事件方格支援的事件處理常式 (端點) 來定義動作或工作。 以下是如何透過 Webhook 和 Azure Functions 建立 Azure 自動化 Runbook 的範例。 在這些事件處理程式/端點內,您必須定義應該在前置和後置事件期間執行的動作。
Webhook - 建立 PowerShell 7.2 Runbook (部分機器翻譯) 並將 Runbook 連結至 Webhook (部分機器翻譯)。
Azure 函式 - 建立 Azure 函式 。
前置和後置事件 - 您可以遵循下一節中共用的步驟,建立排程維護設定的前置和後置事件。 若要深入了解事件方格 [基本] 索引標籤中使用的字詞,請參閱事件方格 字詞。
建立前置和後置事件
建立新的排程維護設定時,建立維護前和維護後事件
登入 [Azure 入口網站] ,然後移至 [Azure 更新管理員] 。
在 [管理] 底下,選取 [電腦] 。
從頂端的功能區選取 [排程更新] 。
在 [建立維護設定] 頁面中,選取 [事件] 索引標籤。
選取 [+ 事件訂用帳戶] 以建立維護前/維護後事件。
在 [新增事件訂用帳戶] 頁面上,輸入下列詳細資料:在 [事件訂用帳戶詳細資料] 區段中,提供適當的名稱。
將結構描述保留為 [事件方格結構描述] 。
輸入您在此維護設定中所建立第一個事件的 [系統主題名稱] 。 系統會針對後續事件自動填入相同的系統主題名稱。
在 [事件類型] 區段的 [篩選至事件類型] 中,選取您想要推送至端點或目的地的事件類型。 您可以在 [維護前事件] 和/或 [維護後事件] 之間選取。 若要深入了解排程維護設定的特定事件類型,請參閱 Azure 事件類型 。
在 [端點詳細資料] 區段中,選取您要接收回應的來源端點。
選取 [新增] 以在其建立時建立排程的維護前和維護後事件。
注意
在上述流程中,Webhook 和 Azure Functions 是您可以選擇的兩個事件處理常式/端點。 當您選取 [新增] 時,不會建立事件訂用帳戶,但會新增至維護設定。 事件訂用帳戶會隨著排程維護設定一起建立。
依照此處 所列的步驟建立維護設定。
# Obtain the Maintenance Configuration ID from Step 1 and assign it to MaintenanceConfigurationResourceId variable
$MaintenanceConfigurationResourceId = "/subscriptions/<subId>/resourceGroups/<Resource group>/providers/Microsoft.Maintenance/maintenanceConfigurations/<Maintenance configuration Name>"
# Use the same Resource Group that you used to create maintenance configuration in Step 1
$ResourceGroupForSystemTopic = "<Resource Group for System Topic>"
$SystemTopicName = "<System topic name>"
$TopicType = "Microsoft.Maintenance.MaintenanceConfigurations"
$SystemTopicLocation = "<System topic location>"
# System topic creation
New-AzEventGridSystemTopic -ResourceGroupName $ResourceGroupForSystemTopic -Name $SystemTopicName -Source $MaintenanceConfigurationResourceId -TopicType $TopicType -Location $SystemTopicLocation
# Event subscription creation
$IncludedEventTypes = @("Microsoft.Maintenance.PreMaintenanceEvent")
# Webhook
$EventSubscriptionName = "PreEventWebhook"
$PreEventWebhookEndpoint = "<Webhook URL>"
New-AzEventGridSystemTopicEventSubscription -ResourceGroupName $ResourceGroupForSystemTopic -SystemTopicName $SystemTopicName -EventSubscriptionName $EventSubscriptionName -Endpoint $PreEventWebhookEndpoint -IncludedEventType $IncludedEventTypes
# Azure Function
$dest = New-AzEventGridAzureFunctionEventSubscriptionDestinationObject -ResourceId "<Azure Function Resource Id>"
New-AzEventGridSystemTopicEventSubscription -ResourceGroupName $ResourceGroupForSystemTopic -SystemTopicName $SystemTopicName -EventSubscriptionName $EventSubscriptionName -Destination $dest -IncludedEventType $IncludedEventTypes
依照此處 所列的步驟建立維護設定。
SystemTopicName="<System topic name>
# Use the same Resource Group that you used to create maintenance configuration in Step 1
ResourceGroupName="<Resource Group mentioned in Step 1>"
# Obtain the Maintenance Configuration ID from Step 1 and assign it to Source variable
Source="/subscriptions/<subId>/resourceGroups/<Resource group>/providers/Microsoft.Maintenance/maintenanceConfigurations/<Maintenance configuration Name>"
TopicType="Microsoft.Maintenance.MaintenanceConfigurations"
Location="<System topic location> "
# System topic creation
az eventgrid system-topic create --name $SystemTopicName --resource-group $ResourceGroupName --source $Source --topic-type $TopicType --location $Location
# Event subscription creation
IncludedEventTypes='("Microsoft.Maintenance.PreMaintenanceEvent")'
# Webhook
az eventgrid system-topic event-subscription create --name "<Event subscription name>" --resource-group $ResourceGroupName --system-topic-name $SystemTopicName --endpoint-type webhook --endpoint "<webhook URL>" --included-event-types IncludedEventTypes
# Azure Function
az eventgrid system-topic event-subscription create –name "<Event subscription name>" --resource-group $ResourceGroupName --system-topic-name $SystemTopicName --endpoint-type azurefunction --endpoint "<Azure Function ResourceId>" --included-event-types IncludedEventTypes
依照此處 所列的步驟建立維護設定。
# 系統主題建立 深入了解
PUT /subscriptions/<subscription Id>/resourceGroups/<resource group name>/providers/Microsoft.EventGrid/systemTopics/<system topic name>?api-version=2022-06-15
要求本文:
{
"properties": {
"source": "/subscriptions/<subscription Id>/resourceGroups/<resource group>/providers/Microsoft.Maintenance/maintenanceConfigurations/<maintenance configuration name> ",
"topicType": "Microsoft.Maintenance.MaintenanceConfigurations"
},
"location": "<location>"
}
# 事件訂用帳戶建立 深入了解
允許的事件類型 - Microsoft.Maintenance.PreMaintenanceEvent, Microsoft.Maintenance.PostMaintenanceEvent
Webhook
PUT /subscriptions/<subscription Id>/resourceGroups/<resource group name>/providers/Microsoft.EventGrid/systemTopics/<system topic name>/eventSubscriptions/<Event Subscription name>?api-version=2022-06-15
要求本文:
{
"properties": {
"destination": {
"endpointType": "WebHook",
"properties": {
"endpointUrl": "<Webhook URL>"
}
},
"filter": {
"includedEventTypes": [
"Microsoft.Maintenance.PreMaintenanceEvent"
]
}
}
}
Azure 函式
PUT /subscriptions/<subscription Id>/resourceGroups/<resource group name>/providers/Microsoft.EventGrid/systemTopics/<system topic name>/eventSubscriptions/<Event Subscription name>?api-version=2022-06-15
要求本文
{
"properties": {
"destination": {
"endpointType": "AzureFunction",
"properties": {
"resourceId": "<Azure Function Resource Id>"
}
}
},
"filter": {
"includedEventTypes": [
"Microsoft.Maintenance.PostMaintenanceEvent"
]
}
}
在現有排程維護設定上,建立維護前和維護後事件
登入 [Azure 入口網站] ,然後移至 [Azure 更新管理員] 。
在 [管理] 底下,選取 [機器] 、[維護設定] 。
在 [維護設定] 頁面中,選取您要對其新增維護前和維護後事件的維護設定。
在選取的 [維護設定] 頁面中,選取 [設定] 底下的 [事件] 。 或者,在 [概觀] 底下,選取 [建立維護事件] 卡片。
選取 [+ 事件訂用帳戶] 以建立維護前/後的事件。
在 [建立事件訂用帳戶] 頁面上,輸入下列詳細資料:
在 [事件訂用帳戶詳細資料] 區段中,提供適當的名稱。
將結構描述保留為 [事件方格結構描述] 。
在 [主題詳細資料] 區段中,為 [系統主題名稱] 提供適當名稱。
在 [事件類型] 區段的 [篩選至事件類型] 中,選取您想要推送至端點或目的地的事件類型。 您可以在 [維護前事件] 與 [維護後事件] 之間選取。 若要深入了解排程維護設定的特定事件類型,請參閱 Azure 事件類型 。
在 [端點詳細資料] 區段中,選取您要接收回應的來源端點。
選取 [建立] 以在現有排程上設定前置和後置事件。
$MaintenanceConfigurationResourceId = "/subscriptions/<subId>/resourceGroups/<Resource group>/providers/Microsoft.Maintenance/maintenanceConfigurations/<Maintenance configuration Name>"
$ResourceGroupForSystemTopic = "<Resource Group for System Topic>"
$SystemTopicName = "<System topic name>"
$TopicType = "Microsoft.Maintenance.MaintenanceConfigurations"
$SystemTopicLocation = "<System topic location>"
# System topic creation
New-AzEventGridSystemTopic -ResourceGroupName $ResourceGroupForSystemTopic -Name $SystemTopicName -Source $MaintenanceConfigurationResourceId -TopicType $TopicType -Location $SystemTopicLocation
# Event subscription creation
$IncludedEventTypes = @("Microsoft.Maintenance.PreMaintenanceEvent")
# Webhook
$EventSubscriptionName = "PreEventWebhook"
$PreEventWebhookEndpoint = "<Webhook URL>"
New-AzEventGridSystemTopicEventSubscription -ResourceGroupName $ResourceGroupForSystemTopic -SystemTopicName $SystemTopicName -EventSubscriptionName $EventSubscriptionName -Endpoint $PreEventWebhookEndpoint -IncludedEventType $IncludedEventTypes
# Azure Function
$dest = New-AzEventGridAzureFunctionEventSubscriptionDestinationObject -ResourceId "<Azure Function Resource Id>"
New-AzEventGridSystemTopicEventSubscription -ResourceGroupName $ResourceGroupForSystemTopic -SystemTopicName $SystemTopicName -EventSubscriptionName $EventSubscriptionName -Destination $dest -IncludedEventType $IncludedEventTypes
SystemTopicName="<System topic name>
ResourceGroupName="<Resource Group for System Topic>"
Source="/subscriptions/<subId>/resourceGroups/<Resource group>/providers/Microsoft.Maintenance/maintenanceConfigurations/<Maintenance configuration Name>"
TopicType="Microsoft.Maintenance.MaintenanceConfigurations"
Location="<System topic location> "
# System topic creation
az eventgrid system-topic create --name $SystemTopicName --resource-group $ResourceGroupName --source $Source --topic-type $TopicType --location $Location
# Event subscription creation
IncludedEventTypes='("Microsoft.Maintenance.PreMaintenanceEvent")'
# Webhook
az eventgrid system-topic event-subscription create --name "<Event subscription name>" --resource-group $ResourceGroupName --system-topic-name $SystemTopicName --endpoint-type webhook --endpoint "<webhook URL>" --included-event-types IncludedEventTypes
# Azure Function
az eventgrid system-topic event-subscription create –name "<Event subscription name>" --resource-group $ResourceGroupName --system-topic-name $SystemTopicName --endpoint-type azurefunction --endpoint "<Azure Function ResourceId>" --included-event-types IncludedEventTypes
# 系統主題建立 深入了解
PUT /subscriptions/<subscription Id>/resourceGroups/<resource group name>/providers/Microsoft.EventGrid/systemTopics/<system topic name>?api-version=2022-06-15
要求本文:
{
"properties": {
"source": "/subscriptions/<subscription Id>/resourceGroups/<resource group>/providers/Microsoft.Maintenance/maintenanceConfigurations/<maintenance configuration name> ",
"topicType": "Microsoft.Maintenance.MaintenanceConfigurations"
},
"location": "<location>"
}
# 事件訂用帳戶建立 深入了解
允許的事件類型 - Microsoft.Maintenance.PreMaintenanceEvent, Microsoft.Maintenance.PostMaintenanceEvent
Webhook
PUT /subscriptions/<subscription Id>/resourceGroups/<resource group name>/providers/Microsoft.EventGrid/systemTopics/<system topic name>/eventSubscriptions/<Event Subscription name>?api-version=2022-06-15
要求本文:
{
"properties": {
"destination": {
"endpointType": "WebHook",
"properties": {
"endpointUrl": "<Webhook URL>"
}
},
"filter": {
"includedEventTypes": [
"Microsoft.Maintenance.PreMaintenanceEvent"
]
}
}
}
Azure 函式
PUT /subscriptions/<subscription Id>/resourceGroups/<resource group name>/providers/Microsoft.EventGrid/systemTopics/<system topic name>/eventSubscriptions/<Event Subscription name>?api-version=2022-06-15
要求本文
{
"properties": {
"destination": {
"endpointType": "AzureFunction",
"properties": {
"resourceId": "<Azure Function Resource Id>"
}
}
},
"filter": {
"includedEventTypes": [
"Microsoft.Maintenance.PostMaintenanceEvent"
]
}
}
下一步
如需 Azure Update Manager 中前置和後置事件的概觀,請參閱這裡 。
若要了解如何管理維護前和維護後事件或取消排程執行,請參閱維護前和維護後事件維護設定 。
若要了解如何使用維護前和維護後事件,透過 Webhook 來開啟和關閉 VM,請參閱這裡 。
若要了解如何使用維護前和維護後事件,透過 Azure Functions 來開啟和關閉 VM,請參閱這裡 。