クイック スタート: 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.

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

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

Azure Cloud Shell を使用するUse Azure Cloud Shell

Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Cloud Shell では、bashPowerShell のいずれかを使用して Azure サービスを操作できます。Cloud Shell lets you use either bash or PowerShell to work with Azure services. ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。You can use the Cloud Shell pre-installed commands to run the code in this article without having to install anything on your local environment.

Azure Cloud Shell を起動するには:To launch Azure Cloud Shell:

オプションOption 例とリンクExample/Link
コード ブロックの右上隅にある [使ってみる] を選択します。Select Try It in the upper-right corner of a code block. [試してみる] を選択しても、コードは Cloud Shell に自動的にコピーされません。Selecting Try It doesn't automatically copy the code to Cloud Shell. Azure Cloud Shell の [使ってみる] の例
https://shell.azure.com に移動するか、 [Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。Go to https://shell.azure.com or select the Launch Cloud Shell button to open Cloud Shell in your browser. 新しいウィンドウで Cloud Shell を起動するLaunch Cloud Shell in a new window
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。Select the Cloud Shell button on the top-right menu bar in the Azure portal. Azure Portal の [Cloud Shell] ボタン

Azure Cloud Shell でこの記事のコードを実行するには:To run the code in this article in Azure Cloud Shell:

  1. Cloud Shell を起動します。Launch Cloud Shell.
  2. [コピー] ボタンを選択して、コード ブロックをコードにコピーします。Select the Copy button on a code block to copy the code.
  3. Windows と Linux では Ctrl + Shift + V キー、macOS では Cmd + Shift + V キーを使用して、コードを Cloud Shell セッションに貼り付けます。Paste the code into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS.
  4. Enter キーを押して、コードを実行します。Press Enter to run the code.

CLI をローカルにインストールして使用することを選択した場合、この記事では、最新バージョンの Azure CLI (2.0.24 以降) が実行されている必要があります。If you choose to install and use the CLI locally, this article requires that you're running the latest version of Azure CLI (2.0.24 or later). バージョンを確認するには、az --version を実行します。To find the version, run az --version. インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。If you need to install or upgrade, see Install Azure CLI.

Cloud Shell を使用していない場合は、先に az login でサインインする必要があります。If you aren't using Cloud Shell, you must first sign in using az login.

リソース グループの作成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 group deployment 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 Event Grid resource provider

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

az provider register --namespace Microsoft.EventGrid

登録完了まで少し時間がかかることがあります。It may 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 \
  --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: