PowerShell を使用したリソース グループのイベントのサブスクライブとリソースのフィルタリングSubscribe to events for a resource group and filter for a resource with PowerShell

このスクリプトは、リソース グループのイベントに対する Event Grid サブスクリプションを作成します。This script creates an Event Grid subscription to the events for a resource group. そのリソース グループ内の特定のリソースのイベントだけを取得するために、フィルターが使用されます。It uses a filter to get only events for a specified resource in the resource group.

Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。If you don't have an Azure subscription, create a free account before you begin.

サンプル スクリプト - 安定版Sample script - stable

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

# Provide an endpoint for handling the events. Must be formatted "https://your-endpoint-URL"
$myEndpoint = "<your-endpoint-URL>"

# Provide the name of the resource group to create. It will contain the network security group.
# You will subscribe to events for this resource group.
$myResourceGroup = "<resource-group-name>"

# Provide a name for the network security group to create.
$nsgName = "<your-nsg-name>"

# Create the resource group
New-AzResourceGroup -Name $myResourceGroup -Location westus2

# Create a network security group. You will filter events to only those that are related to this resource.
New-AzNetworkSecurityGroup -Name $nsgName -ResourceGroupName $myResourceGroup  -Location westus2

# Get the resource ID to filter events. The name of the network security group must not be the same as the other resource names.
$resourceId = (Get-AzResource -ResourceName $nsgName -ResourceGroupName $myResourceGroup).ResourceId

# Subscribe to the resource group. Provide the name of the resource group you want to subscribe to.
New-AzEventGridSubscription `
  -Endpoint $myEndpoint `
  -EventSubscriptionName demoSubscriptionToResourceGroup `
  -ResourceGroupName $myResourceGroup `
  -SubjectBeginsWith $resourceId

サンプル スクリプト - プレビュー モジュールSample script - preview module

重要

PowerShell からこの Azure 機能を使用するには、AzureRM モジュールをインストールする必要があります。Using this Azure feature from PowerShell requires the AzureRM module installed. これはもう新しい機能が追加されることのない古いモジュールであり、Windows PowerShell 5.1 でのみ使用可能です。This is an older module only available for Windows PowerShell 5.1 that no longer receives new features. 同じバージョンの PowerShell でインストールした場合、AzAzureRM のモジュールは同時に使用 "できません"。The Az and AzureRM modules are not compatible when installed for the same versions of PowerShell. 両方のバージョンが必要な場合:If you need both versions:

  1. PowerShell 5.1 セッションで Az モジュールをアンインストールしますUninstall the Az module from a PowerShell 5.1 session.
  2. PowerShell 5.1 セッションで AzureRM モジュールをインストールしますInstall the AzureRM module from a PowerShell 5.1 session.
  3. PowerShell Core 6.x 以降をダウンロードしてインストールしますDownload and install PowerShell Core 6.x or later.
  4. PowerShell Core セッションで Az モジュールをインストールしますInstall the Az module in a PowerShell Core session.

プレビュー版サンプル スクリプトには、Event Grid モジュールが必要です。The preview sample script requires the Event Grid module. インストールするには、Install-Module -Name AzureRM.EventGrid -AllowPrerelease -Force -Repository PSGallery を実行しますTo install, run Install-Module -Name AzureRM.EventGrid -AllowPrerelease -Force -Repository PSGallery

# You must have the latest version of the Event Grid PowerShell module.
# To install:
# Install-Module -Name AzureRM.EventGrid -AllowPrerelease -Force -Repository PSGallery

# Provide an endpoint for handling the events. Must be formatted "https://your-endpoint-URL"
$myEndpoint = "<your-endpoint-URL>"

# Provide the name of the custom topic to create
$topicName = "<your-topic-name>"

# Provide the name of the resource group to create. It will contain the custom topic.
$myResourceGroup= "<resource-group-name>"

# Create the resource group
New-AzResourceGroup -Name $myResourceGroup -Location westus2

# Create custom topic
New-AzEventGridTopic -ResourceGroupName $myResourceGroup -Location westus2 -Name $topicName

# Get resource ID of custom topic
$topicid = (Get-AzEventGridTopic -ResourceGroupName $myResourceGroup -Name $topicName).Id

# Set the operator type, field and values for the filtering
$AdvFilter1=@{operator="StringIn"; key="Data.color"; Values=@('blue', 'red', 'green')}

# Subscribe to the custom topic. Filter based on a value in the event data.
New-AzEventGridSubscription `
  -ResourceId $topicid `
  -EventSubscriptionName demoSubWithFilter `
  -Endpoint $myEndpoint `
  -AdvancedFilter @($AdvFilter1)

スクリプトの説明Script explanation

このスクリプトは、次のコマンドを使用してイベント サブスクリプションを作成します。This script uses the following command to create the event subscription. 表内の各コマンドは、それぞれのドキュメントにリンクされています。Each command in the table links to command-specific documentation.

commandCommand メモNotes
New-AzEventGridSubscriptionNew-AzEventGridSubscription Event Grid のサブスクリプションを作成する。Create an Event Grid subscription.

次の手順Next steps