クイック スタート:Azure CLI を使用してストレージ イベントを Web エンドポイントにルーティングするQuickstart: Route storage events to web endpoint with Azure CLI

Azure Event Grid は、クラウドのイベント処理サービスです。Azure Event Grid is an eventing service for the cloud. この記事では、Azure CLI を使用して Blob Storage のイベントをサブスクライブし、イベントをトリガーして結果を表示します。In this article, you use the Azure CLI to subscribe to Blob storage events, and trigger the event to view the result.

通常は、イベント データを処理し、アクションを実行するエンドポイントにイベントを送信します。Typically, you send events to an endpoint that processes the event data and takes actions. ただし、この記事では、単純化するために、メッセージを収集して表示する Web アプリにイベントを送信します。However, to simplify this article, you send the events to a web app that collects and displays the messages.

この記事の手順の最後に、イベント データが Web アプリに送信済みであることを確認できます。When you complete the steps described in this article, you see that the event data has been sent to the web app.

Web アプリに送信されたイベント データを表示する Azure Event Grid ビューアーのスクリーンショット。

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

前提条件Prerequisites

  • Bash 環境で Azure Cloud Shell を使用します。Use Azure Cloud Shell using the bash environment.

    埋め込みの起動Embed launch

  • 必要に応じて、Azure CLI をインストールして、CLI リファレンス コマンドを実行します。If you prefer, install Azure CLI to run CLI reference commands.

    • ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI でサインインします。If you're using a local install, sign in with Azure CLI by using the az login command. 認証プロセスを完了するには、ターミナルに表示される手順に従います。To finish the authentication process, follow the steps displayed in your terminal. 追加のサインイン オプションについては、「Azure CLI を使用してサインインする」を参照してください。See Sign in with Azure CLI for additional sign-in options.
    • 初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。When you're prompted, install Azure CLI extensions on first use. 拡張機能の詳細については、「Azure CLI で拡張機能を使用する」を参照してください。For more information about extensions, see Use extensions with Azure CLI.
    • az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。Run az version to find the version and dependent libraries that are installed. 最新バージョンにアップグレードするには、az upgrade を実行します。To upgrade to the latest version, run az upgrade.
  • この記事では、Azure CLI のバージョン 2.0.70 以降が必要です。This article requires version 2.0.70 or later of the Azure CLI. Azure Cloud Shell を使用している場合は、最新バージョンが既にインストールされています。If using Azure Cloud Shell, the latest version is already installed.

リソース グループを作成するCreate a resource group

Event Grid のトピックは Azure リソースであり、Azure リソース グループに配置する必要があります。Event Grid topics are Azure resources, and must be placed in an Azure resource group. リソース グループは、Azure リソースをまとめてデプロイして管理するための論理上のコレクションです。The resource group is a logical collection into which Azure resources are deployed and managed.

az group create コマンドを使用して、リソース グループを作成します。Create a resource group with the az group create command.

次の例では、<resource_group_name> という名前のリソース グループを場所 westcentralus に作成します。The following example creates a resource group named <resource_group_name> in the westcentralus location. <resource_group_name> を、リソース グループの一意の名前に置き換えます。Replace <resource_group_name> with a unique name for your resource group.

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

ストレージ アカウントの作成Create a storage account

Blob Storage のイベントは、汎用 v2 ストレージ アカウントおよび BLOB ストレージ アカウントで使用できます。Blob storage events are available in general-purpose v2 storage accounts and Blob storage accounts. 汎用 v2 ストレージ アカウントでは、BLOB、ファイル、キュー、テーブルをはじめとするすべてのストレージ サービスに対するすべての機能がサポートされます。General-purpose v2 storage accounts support all features for all storage services, including Blobs, Files, Queues, and Tables. BLOB ストレージ アカウント とは、Azure Storage に BLOB (オブジェクト) として非構造化データを格納するための特殊なストレージ アカウントです。A Blob storage account is a specialized storage account for storing your unstructured data as blobs (objects) in Azure Storage. Blob Storage アカウントは、汎用ストレージ アカウントと同様に、現在使われているすべての優れた耐久性、可用性、スケーラビリティ、およびパフォーマンス機能を共有します。たとえば、ブロック BLOB と追加 BLOB の 100% の API 整合性などです。Blob storage accounts are like general-purpose storage accounts and share all the great durability, availability, scalability, and performance features that you use today including 100% API consistency for block blobs and append blobs. 詳細については、「Azure ストレージ アカウントの概要」を参照してください。For more information, see Azure storage account overview.

<storage_account_name> は、ご利用のストレージ アカウントの一意の名前に、<resource_group_name> は、先ほど作成したリソース グループに置き換えてください。Replace <storage_account_name> with a unique name for your storage account, and <resource_group_name> with the resource group you created earlier.

az storage account create \
  --name <storage_account_name> \
  --location westcentralus \
  --resource-group <resource_group_name> \
  --sku Standard_LRS \
  --kind BlobStorage \
  --access-tier Hot

メッセージ エンドポイントの作成Create a message endpoint

トピックをサブスクライブする前に、イベント メッセージ用のエンドポイントを作成しましょう。Before subscribing to the topic, let's create the endpoint for the event message. 通常、エンドポイントは、イベント データに基づくアクションを実行します。Typically, the endpoint takes actions based on the event data. このクイック スタートを簡素化するために、イベント メッセージを表示する構築済みの Web アプリをデプロしします。To simplify this quickstart, you deploy a pre-built web app that displays the event messages. デプロイされたソリューションには、App Service プラン、App Service Web アプリ、および GitHub からのソース コードが含まれています。The deployed solution includes an App Service plan, an App Service web app, and source code from GitHub.

<your-site-name> は、Web アプリの一意の名前に置き換えてください。Replace <your-site-name> with a unique name for your web app. Web アプリ名は、DNS エントリの一部であるため、一意である必要があります。The web app name must be unique because it's part of the DNS entry.

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/master/azuredeploy.json" \
  --parameters siteName=$sitename hostingPlanName=viewerhost

デプロイが完了するまでに数分かかる場合があります。The deployment may take a few minutes to complete. デプロイが成功した後で、Web アプリを表示して、実行されていることを確認します。After the deployment has succeeded, view your web app to make sure it's running. Web ブラウザーで https://<your-site-name>.azurewebsites.net にアクセスしますIn a web browser, navigate to: https://<your-site-name>.azurewebsites.net

現在表示されているメッセージがないサイトが表示されます。You should see the site with no messages currently displayed.

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

Azure サブスクリプションで Event Grid を使用したことがない場合は、Event Grid リソース プロバイダーを登録する必要がある可能性があります。If you haven't previously used Event Grid in your Azure subscription, you might need to register the Event Grid resource provider. 以下のプロバイダーを登録するコマンドを実行します。Run the following command to register the provider:

az provider register --namespace Microsoft.EventGrid

登録完了まで少し時間がかかることがあります。It might take a moment for the registration to finish. 状態をチェックするには、次を実行します。To check the status, run:

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

registrationStateRegistered になったら、次に進めることができます。When registrationState is Registered, you're ready to continue.

ストレージ アカウントをサブスクライブするSubscribe to your storage account

どのイベントを追跡し、どこにイベントを送信するかは、トピックをサブスクライブすることによって Event Grid に伝えます。You subscribe to a topic to tell Event Grid which events you want to track and where to send those events. 次の例では、作成したストレージ アカウントをサブスクライブし、Web アプリからの URL をイベント通知のエンドポイントとして渡します。The following example subscribes to the storage account you created, and passes the URL from your web app as the endpoint for event notification. <event_subscription_name> をイベント サブスクリプションの名前に置き換えます。Replace <event_subscription_name> with a name for your event subscription. <resource_group_name><storage_account_name> には、先ほど作成した値を使用します。For <resource_group_name> and <storage_account_name>, use the values you created earlier.

Web アプリのエンドポイントには、サフィックス /api/updates/ が含まれている必要があります。The endpoint for your web app must include the suffix /api/updates/.

storageid=$(az storage account show --name <storage_account_name> --resource-group <resource_group_name> --query id --output tsv)
endpoint=https://$sitename.azurewebsites.net/api/updates

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

Web アプリをもう一度表示し、その Web アプリにサブスクリプションの検証イベントが送信されたことに注目します。View your web app again, and notice that a subscription validation event has been sent to it. 目のアイコンを選択してイベント データを展開します。Select the eye icon to expand the event data. Event Grid は検証イベントを送信するので、エンドポイントはイベント データを受信することを確認できます。Event Grid sends the validation event so the endpoint can verify that it wants to receive event data. Web アプリには、サブスクリプションを検証するコードが含まれています。The web app includes code to validate the subscription.

サブスクリプション イベントの表示

Blob Storage からのイベントのトリガーTrigger an event from Blob storage

では、イベントをトリガーして、Event Grid がメッセージをエンドポイントに配信するようすを見てみましょう。Now, let's trigger an event to see how Event Grid distributes the message to your endpoint. まず、ストレージ アカウントの名前とキーを構成します。次にコンテナーを作成し、ファイルを作成してアップロードします。First, let's configure the name and key for the storage account, then we create a container, then create and upload a file. ここでも、<storage_account_name><resource_group_name> には、先ほど作成した値を使用します。Again, use the values for <storage_account_name> and <resource_group_name> you created earlier.

export AZURE_STORAGE_ACCOUNT=<storage_account_name>
export AZURE_STORAGE_ACCESS_KEY="$(az storage account keys list --account-name <storage_account_name> --resource-group <resource_group_name> --query "[0].value" --output tsv)"

az storage container create --name testcontainer

touch testfile.txt
az storage blob upload --file testfile.txt --container-name testcontainer --name testfile.txt

以上でイベントがトリガーされ、そのメッセージが、Event Grid によってサブスクライブ時に構成したエンドポイントに送信されました。You've triggered the event, and Event Grid sent the message to the endpoint you configured when subscribing. Web アプリを表示して、送信したイベント確認します。View your web app to see the event you just sent.

[{
  "topic": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myrg/providers/Microsoft.Storage/storageAccounts/myblobstorageaccount",
  "subject": "/blobServices/default/containers/testcontainer/blobs/testfile.txt",
  "eventType": "Microsoft.Storage.BlobCreated",
  "eventTime": "2017-08-16T20:33:51.0595757Z",
  "id": "4d96b1d4-0001-00b3-58ce-16568c064fab",
  "data": {
    "api": "PutBlockList",
    "clientRequestId": "d65ca2e2-a168-4155-b7a4-2c925c18902f",
    "requestId": "4d96b1d4-0001-00b3-58ce-16568c000000",
    "eTag": "0x8D4E4E61AE038AD",
    "contentType": "text/plain",
    "contentLength": 0,
    "blobType": "BlockBlob",
    "url": "https://myblobstorageaccount.blob.core.windows.net/testcontainer/testblob1.txt",
    "sequencer": "00000000000000EB0000000000046199",
    "storageDiagnostics": {
      "batchId": "dffea416-b46e-4613-ac19-0371c0c5e352"
    }
  },
  "dataVersion": "",
  "metadataVersion": "1"
}]

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

引き続きこのストレージ アカウントとイベント サブスクリプションを使用する場合は、この記事で作成したリソースをクリーンアップしないでください。If you plan to continue working with this storage account and event subscription, do not clean up the resources created in this article. 引き続き使用する予定がない場合は、次のコマンドを使用して、この記事で作成したリソースを削除します。If you do not plan to continue, use the following command to delete the resources you created in this article.

<resource_group_name> は、先ほど作成したリソース グループに置き換えます。Replace <resource_group_name> with the resource group you created above.

az group delete --name <resource_group_name>

次のステップNext steps

トピックを作成し、イベントをサブスクライブする方法がわかったら、Blob Storage のイベントについて、また Event Grid でできることについて、さらに情報を収集しましょう。Now that you know how to create topics and event subscriptions, learn more about Blob storage Events and what Event Grid can help you do: