クイックスタート: PowerShell を使用して Azure Cache for Redis のイベントを Web エンドポイントにルーティングする

Azure Event Grid は、クラウドのイベント処理サービスです。 このクイックスタートでは、Azure PowerShell を使用して Azure Cache for Redis のイベントをサブスクライブし、イベントをトリガーして結果を表示します。

通常は、イベント データを処理し、アクションを実行するエンドポイントにイベントを送信します。 ただし単純化するために、このクイックスタートではメッセージを収集して表示する Web アプリにイベントを送信します。 このクイックスタートの手順の最後に、イベント データが Web アプリに送信済みであることを確認できます。

セットアップ

このクイックスタートでは、Azure PowerShell の最新バージョンを実行していることを前提にしています。 インストールまたはアップグレードする必要がある場合は、Azure PowerShell モジュールのインストールと構成に関するページを参照してください。

Azure にサインインする

Connect-AzAccount コマンドで Azure サブスクリプションにサインインし、画面上の指示に従って認証を行います。

Connect-AzAccount

この例では、westus2 を使って、全体で使用される 1 つの変数に選択肢を格納しています。

$location = "westus2"

リソース グループを作成する

Event Grid のトピックは、個々の Azure リソースとしてデプロイされるため、Azure リソース グループにプロビジョニングする必要があります。 リソース グループは、Azure リソースをまとめてデプロイして管理するための論理上のコレクションです。

New-AzResourceGroup コマンドでリソース グループを作成します。

次の例では、gridResourceGroup という名前のリソース グループを westus2 の場所に作成します。

$resourceGroup = "gridResourceGroup"
New-AzResourceGroup -Name $resourceGroup -Location $location

Azure Cache for Redis インスタンスを作成する

New-AzRedisCache
   -ResourceGroupName <String>
   -Name <String>
   -Location <String>
   [-Size <String>]
   [-Sku <String>]
   [-RedisConfiguration <Hashtable>]
   [-EnableNonSslPort <Boolean>]
   [-TenantSettings <Hashtable>]
   [-ShardCount <Int32>]
   [-MinimumTlsVersion <String>]
   [-SubnetId <String>]
   [-StaticIP <String>]
   [-Tag <Hashtable>]
   [-Zone <String[]>]
   [-DefaultProfile <IAzureContextContainer>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

PowerShell でのキャッシュ インスタンスの作成について詳しくは、Azure PowerShell リファレンスを参照してください。

メッセージ エンドポイントの作成

トピックをサブスクライブする前に、イベント メッセージ用のエンドポイントを作成しましょう。 通常、エンドポイントは、イベント データに基づくアクションを実行します。 このクイック スタートを簡素化するために、イベント メッセージを表示する構築済みの Web アプリをデプロしします。 デプロイされたソリューションには、App Service プラン、App Service Web アプリ、および GitHub からのソース コードが含まれています。

<your-site-name> は、Web アプリの一意の名前に置き換えてください。 Web アプリ名は、DNS エントリの一部であるため、一意である必要があります。

$sitename="<your-site-name>"

New-AzResourceGroupDeployment `
  -ResourceGroupName $resourceGroup `
  -TemplateUri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/main/azuredeploy.json" `
  -siteName $sitename `
  -hostingPlanName viewerhost

デプロイが完了するまでに数分かかる場合があります。 デプロイが成功した後で、Web アプリを表示して、実行されていることを確認します。 Web ブラウザーで https://<your-site-name>.azurewebsites.net にアクセスします

現在表示されているメッセージがないサイトが表示されます。

Empty Event Grid Viewer site.

Azure Cache for Redis イベントをサブスクライブする

この手順では、トピックをサブスクライブすることによって、追跡するイベントを Event Grid に伝えます。次の例では、作成したキャッシュ インスタンスをサブスクライブし、Web アプリの URL をイベント通知のエンドポイントとして渡しています。 Web アプリのエンドポイントには、サフィックス /api/updates/ が含まれている必要があります。

$cacheId = (Get-AzRedisCache -ResourceGroupName $resourceGroup -Name $cacheName).Id
$endpoint="https://$sitename.azurewebsites.net/api/updates"

New-AzEventGridSubscription `
  -EventSubscriptionName <event_subscription_name> `
  -Endpoint $endpoint `
  -ResourceId $cacheId

Web アプリをもう一度表示し、その Web アプリにサブスクリプションの検証イベントが送信されたことに注目します。 目のアイコンを選択してイベント データを展開します。 Event Grid は検証イベントを送信するので、エンドポイントはイベント データを受信することを確認できます。 Web アプリには、サブスクリプションを検証するコードが含まれています。

Azure Event Grid Viewer.

Azure Cache for Redis からイベントをトリガーする

では、イベントをトリガーして、Event Grid がメッセージをエンドポイントに配信するようすを見てみましょう。

Import-AzRedisCache
      [-ResourceGroupName <String>]
      -Name <String>
      -Files <String[]>
      [-Format <String>]
      [-Force]
      [-PassThru]
      [-DefaultProfile <IAzureContextContainer>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]

PowerShell でのインポートについて詳しくは、Azure PowerShell リファレンスを参照してください。

以上でイベントがトリガーされ、そのメッセージが、Event Grid によってサブスクライブ時に構成したエンドポイントに送信されました。 Web アプリを表示して、送信したイベント確認します。

[{
"id": "e1ceb52d-575c-4ce4-8056-115dec723cff",
  "eventType": "Microsoft.Cache.ImportRDBCompleted",
  "topic": "/subscriptions/{subscription_id}/resourceGroups/{resource_group_name}/providers/Microsoft.Cache/Redis/{cache_name}",
  "data": {
    "name": "ImportRDBCompleted",
    "timestamp": "2020-12-10T18:07:54.4937063+00:00",
    "status": "Succeeded"
  },
  "subject": "ImportRDBCompleted",
  "dataversion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2020-12-10T18:07:54.4937063+00:00"
}]

リソースをクリーンアップする

引き続きこの Azure Cache for Redis インスタンスとイベント サブスクリプションを使用する場合は、このクイックスタートで作成したリソースをクリーンアップしないでください。 引き続き使用する予定がない場合は、次のコマンドを使用して、このクイックスタートで作成したリソースを削除します。

Remove-AzResourceGroup -Name $resourceGroup

次のステップ

これで、トピックを作成し、イベントをサブスクライブする方法がわかったので、Azure Cache for Redis のイベントについて、また Event Grid でできることについて、さらに情報を収集しましょう。