사전 및 사후 이벤트 만들기
이 문서의 내용
적용 대상: ✔️ Windows VM ✔️ Linux VM ✔️ 온-프레미스 환경 ✔️ Azure Arc 지원 서버 ✔️ Azure VM.
사전 및 사후 이벤트를 사용하면 예약된 유지 관리 구성 전후에 사용자 정의 작업을 실행할 수 있습니다. 자세한 내용은 Azure 업데이트 관리자의 사전 및 사후 이벤트 작업 을 참조하세요.
이 문서에서는 Azure Update Manager에서 사전 및 게시 이벤트를 만드는 방법을 설명합니다.
일정 유지 관리 구성의 Event Grid
Azure 업데이트 관리자는 Event Grid를 활용하여 사전 및 사후 이벤트를 만들고 관리합니다. 자세한 내용은 Event Grid 개요 를 참조하세요. 일정 유지 관리 기간 전후에 이벤트를 트리거하려면 다음이 필요합니다.
일정 유지 관리 구성 - Azure 업데이트 관리자에서 일정 유지 관리 구성을 위한 사전 및 사후 이벤트를 만들 수 있습니다. 자세한 내용은 유지 관리 구성을 사용하여 업데이트 예약 을 참조하세요.
이벤트 전 또는 사후 이벤트 수행할 작업 - Event Grid에서 지원하는 이벤트 처리기 (엔드포인트)를 사용하여 작업 또는 작업을 정의할 수 있습니다. 다음은 Webhooks 및 Azure Functions를 통해 Azure Automation Runbook을 만드는 방법에 대한 예입니다. 이러한 이벤트 처리기/엔드포인트 내에서 사전 및 사후 이벤트의 일부로 수행되어야 하는 작업을 정의해야 합니다.
웹후크 - PowerShell 7.2 Runbook 만들기 및 Runbook을 웹후크 연결 .
Azure Function - Azure Function 만들기 .
사전 및 사후 이벤트 - 다음 섹션에 공유된 단계에 따라 일정 유지 관리 구성을 위한 사전 및 사후 이벤트를 만들 수 있습니다. Event Grid의 기본 사항 탭에서 사용되는 용어에 대한 자세한 내용은 Event Grid 용어를 참조하세요.
사전 및 사후 이벤트 만들기
새 일정 유지 관리 구성을 만드는 동안 사전 및 게시 이벤트 만들기
Azure Portal 에 로그인하고 Azure 업데이트 관리자 로 이동합니다.
관리 에서 컴퓨터 를 선택합니다.
위쪽의 리본에서 업데이트 예약 을 선택합니다.
유지 관리 구성 만들기 페이지에서 이벤트 탭을 선택합니다.
+이벤트 구독 을 선택하여 사전/사후 이벤트를 만듭니다.
이벤트 구독 추가 페이지에서 다음 세부 정보를 입력합니다. 이벤트 구독 세부 정보 섹션에서 적절한 이름을 입력합니다.
스키마를 Event Grid 스키마 로 유지합니다.
이 유지 관리 구성에서 만든 첫 번째 이벤트에 대한 시스템 토픽 이름 을 입력합니다. 결과 이벤트에 대해 동일한 시스템 토픽 이름이 자동으로 채워집니다.
이벤트 유형 섹션인 이벤트 유형으로 필터링 에서 엔드포인트나 대상으로 푸시할 이벤트 유형을 선택합니다. 유지 관리 전 이벤트 또는 유지 관리 후 이벤트 중 하나 또는 둘 다 선택할 수 있습니다. 유지 관리 구성 예약과 관련된 이벤트 유형에 대한 자세한 내용은 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>"
$dest = New-AzEventGridWebHookEventSubscriptionDestinationObject -EndpointUrl $PreEventWebhookEndpoint
New-AzEventGridSystemTopicEventSubscription -ResourceGroupName $ResourceGroupForSystemTopic -SystemTopicName $SystemTopicName -EventSubscriptionName $EventSubscriptionName -Endpoint $PreEventWebhookEndpoint -IncludedEventType $IncludedEventTypes -Destination $dest
# 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
웹후크
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 Portal 에 로그인하고 Azure Update Manager 로 이동합니다.
관리 에서 컴퓨터 , 유지 관리 구성 을 선택합니다.
유지 관리 구성 페이지에서 사전 및 사후 이벤트를 추가할 유지 관리 구성을 선택합니다.
선택한 유지 관리 구성 페이지의 설정 에서 이벤트 를 선택합니다. 또는 개요 에서 유지 관리 이벤트 만들기 카드를 선택합니다.
사전/사후 유지 관리 이벤트를 만들려면 +이벤트 구독 을 선택합니다.
이벤트 구독 만들기 페이지에서 다음 세부 정보를 입력합니다.
이벤트 구독 세부 정보 섹션에 적절한 이름을 입력합니다.
스키마를 Event Grid 스키마 로 유지합니다.
항목 세부 정보 섹션에서 시스템 토픽 이름 에 적절한 이름을 제공합니다.
이벤트 유형 섹션인 이벤트 유형으로 필터링 에서 엔드포인트나 대상으로 푸시할 이벤트 유형을 선택합니다. 사전 유지 관리 이벤트 와 사후 유지 관리 이벤트 중에서 선택할 수 있습니다. 유지 관리 구성 예약과 관련된 이벤트 유형에 대한 자세한 내용은 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>"
$dest = New-AzEventGridWebHookEventSubscriptionDestinationObject -EndpointUrl $PreEventWebhookEndpoint
New-AzEventGridSystemTopicEventSubscription -ResourceGroupName $ResourceGroupForSystemTopic -SystemTopicName $SystemTopicName -EventSubscriptionName $EventSubscriptionName -Endpoint $PreEventWebhookEndpoint -IncludedEventType $IncludedEventTypes -Destination $dest
# 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
웹후크
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 업데이트 관리자의 사전 및 사후 이벤트에 대한 개요는 여기 를 참조하세요.
사전 및 사후 이벤트를 관리하는 방법이나 일정 실행을 취소하는 방법을 알아보려면 사전 및 사후 유지 관리 구성 이벤트 를 참조하세요.
웹후크를 사용하여 사전 및 사후 이벤트를 사용하여 VM을 켜고 끄는 방법을 알아보려면 여기 를 참조하세요.
Azure Functions를 사용하여 사전 및 사후 이벤트를 사용하여 VM을 켜고 끄는 방법을 알아보려면 여기 를 참조하세요.