次の方法で共有


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

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

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

Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。

Azure Cloud Shell

Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。 Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。 ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。

Azure Cloud Shell を開始するには、以下のようにします。

オプション 例とリンク
コードまたはコマンド ブロックの右上隅にある [使ってみる] を選択します。 [使ってみる] を選択しても、コードまたはコマンドは Cloud Shell に自動的にはコピーされません。 Azure Cloud Shell の [使ってみる] の例を示すスクリーンショット。
https://shell.azure.com に移動するか、[Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。 Azure Cloud Shell を起動するボタン。
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。 Azure portal の [Cloud Shell] ボタンを示すスクリーンショット

Azure Cloud Shell を使用するには、以下のようにします。

  1. Cloud Shell を開始します。

  2. コード ブロック (またはコマンド ブロック) の [コピー] ボタンを選択し、コードまたはコマンドをコピーします。

  3. Windows と Linux では Ctrl+Shift+V キーを選択し、macOS では Cmd+Shift+V キーを選択して、コードまたはコマンドを Cloud Shell セッションに貼り付けます。

  4. Enter キーを選択して、コードまたはコマンドを実行します。

CLI をローカルにインストールして使用することを選択した場合、このクイックスタートでは、最新バージョンの Azure CLI (2.0.70 以降) が実行されている必要があります。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。

Cloud Shell を使用していない場合は、先に az login でサインインする必要があります。

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

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

az group create コマンドを使用して、リソース グループを作成します。

次の例では、<resource_group_name> という名前のリソース グループを場所 westcentralus に作成します。 <resource_group_name> を、リソース グループの一意の名前に置き換えます。

az group create --name <resource_group_name> --location westcentralus

キャッシュ インスタンスの作成

#/bin/bash

# Create a Basic C0 (256 MB) Azure Cache for Redis instance
az redis create --name <cache_name> --resource-group <resource_group_name> --location westcentralus --sku Basic --vm-size C0

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

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

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

sitename=<your-site-name>

az deployment group create \
  --resource-group <resource_group_name> \
  --template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/main/azuredeploy.json" \
  --parameters siteName=$sitename hostingPlanName=viewerhost

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

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

Event Grid リソース プロバイダーを有効にする

  1. Azure サブスクリプションで Event Grid を使用したことがない場合は、Event Grid リソース プロバイダーを登録する必要がある可能性があります。 以下のプロバイダーを登録するコマンドを実行します。

    az provider register --namespace Microsoft.EventGrid
    
  2. 登録完了まで少し時間がかかることがあります。 状態を確認するには、次のコマンドを実行します。

    az provider show --namespace Microsoft.EventGrid --query "registrationState"
    

    registrationStateRegistered になったら、次に進めることができます。

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

この手順では、トピックをサブスクライブすることによって、追跡するイベントとそれらのイベントの送信先を Event Grid に伝えます。 次の例では、Azure Cache for Redis インスタンスをサブスクライブし、Web アプリの URL をイベント通知のエンドポイントとして渡しています。 <event_subscription_name> をイベント サブスクリプションの名前に置き換えます。 <resource_group_name><cache_name> には、先ほど作成した値を使用します。

Web アプリのエンドポイントには、サフィックス /api/updates/ が含まれている必要があります。

cacheId=$(az redis show --name <cache_name> --resource-group <resource_group_name> --query id --subscription <subscription_id> --output tsv)
endpoint=https://$sitename.azurewebsites.net/api/updates

az eventgrid event-subscription create \
  --source-resource-id $cacheId \
  --name <event_subscription_name> \
  --endpoint $endpoint

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

Azure Event Grid ビューアー。

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

では、イベントをトリガーして、Event Grid がメッセージをエンドポイントに配信するようすを見てみましょう。 Azure Cache for Redis インスタンスに格納されたデータをエクスポートしてみます。 ここでも、{cache_name}{resource_group_name} には、先ほど作成した値を使用します。

az redis export  --ids '/subscriptions/{subscription_id}/resourceGroups/{resource_group_name}/providers/Microsoft.Cache/Redis/{cache_name}' \
    --prefix '<prefix_for_exported_files>' \
    --container '<SAS_url>'  

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

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

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

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

<resource_group_name> は、先ほど作成したリソース グループに置き換えます。

az group delete --name <resource_group_name>

次のステップ

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