API Management から Event Grid にイベントを送信する

適用対象: すべての API Management レベル

他のサービスにイベント通知を送信して、ダウンストリームのプロセスをトリガーできるように、API Management は Azure Event Grid と統合されています。 Event Grid は、パブリッシュ/サブスクライブ モデルを使用する、フル マネージドのイベント ルーティング サービスです。 Event Grid は、Azure FunctionsAzure Logic Apps などの Azure s サービスの組み込みサポートを備えており、webhook を使って Azure 以外のサービスにイベント アラートを配信できます。

たとえば、Event Grid との統合を使用して、API Management インスタンスにユーザーが追加されるたびにデータベースを更新し、課金アカウントを作成し、メール通知を送信するアプリケーションを構築できます。

この記事では、API Management インスタンスの Event Grid イベントをサブスクライブし、イベントをトリガーし、データを処理するエンドポイントにイベントを送信します。 シンプルにするため、メッセージを収集して表示する 1 つのサンプル Web アプリにイベントを送信します。

Event Grid ビューアーの API Management イベント

前提条件

  • Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。

  • CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。

    • ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。

    • 初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。

    • az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。

イベント エンドポイントの作成

このセクションでは、Resource Manager テンプレートを使用して、構築済みのサンプル Web アプリケーションを Azure App Service にデプロイします。 その後、API Management インスタンスの Event Grid イベントをサブスクライブし、このアプリを、イベントの送信先エンドポイントとして指定します。

サンプル アプリをデプロイするには、Azure CLI、Azure PowerShell、または Azure portal を利用できます。 次の例では、Azure CLI の az deployment group create コマンドを使用します。

  • RESOURCE_GROUP_NAME を、既存のリソース グループの名前に設定します

  • SITE_NAME を、Web アプリの一意の名前に設定します

    サイト名は Web アプリの完全修飾ドメイン名 (FQDN) の一部であるため、Azure 内で一意にする必要があります。 後のセクションで、Web ブラウザーを使用してアプリの FQDN に移動し、イベントを表示します。

RESOURCE_GROUP_NAME=<your-resource-group-name>
SITE_NAME=<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=$SITE_NAME hostingPlanName=$SITE_NAME-plan

デプロイが成功したら (数分をかかる場合があります)、ブラウザーを開いて、ご自身の Web アプリに移動し、アプリが実行中であることを確認します。

https://<your-site-name>.azurewebsites.net

サンプル アプリが、イベント メッセージなしでレンダリングされているはずです。

Event Grid リソース プロバイダーを登録する

これまでに Event Grid を使用したことがない場合は、Event Grid リソース プロバイダーを登録する必要があります。 Event Grid を使用したことがある場合は、次のセクションに進んでください。

Azure portal で、次の手順を実行します。

  1. 左側のメニューで [サブスクリプション] を選択します。

  2. サブスクリプションの一覧から Event Grid に使用するサブスクリプションを選択します。

  3. [サブスクリプション] ページで、左側のメニューの [設定] の下の [リソース プロバイダー] を選択します。

  4. Microsoft.EventGrid を検索し、[状態][未登録] であることを確認します。

  5. プロバイダーの一覧で [Microsoft.EventGrid] を選択します。

  6. コマンド バーの [登録] を選択します。

    Microsoft.EventGrid プロバイダーを Azure サブスクリプションに登録するイメージ。

  7. 最新の情報に更新して、Microsoft.EventGrid の状態が [登録済み] に変更されたことを確認します。

    Microsoft.EventGrid プロバイダーを Azure サブスクリプションに正常に登録されたことを示すイメージ。

API Management イベントをサブスクライブする

Event Grid では、"トピック" をサブスクライブすることで、どのイベントを追跡し、どこにイベントを送信するかをその Event Grid に伝えます。 ここでは、API Management インスタンス内のイベントのサブスクリプションを作成します。

  1. Azure portal で、API Management インスタンスに移動します。

  2. [イベント] > [+ イベント サブスクリプション] を選びます。

  3. [基本] タブで次の操作を行います。

    • イベント サブスクリプションのわかりやすい [名前] を入力します。
    • [イベントの種類] で、Event Grid に送信する 1 つ以上の API Management イベントの種類を選択します。 この記事の例では、少なくとも Microsoft.APIManagement.ProductCreated を選択します。
    • [エンドポイントの詳細] で、 [Web Hook] イベントの種類を選択し、 [エンドポイントの選択] をクリックして、Web アプリの URL を入力し、それに api/updates を付加します。 例: https://myapp.azurewebsites.net/api/updates.
    • [選択の確認] を選択します。
  4. 残りのタブの設定は既定値のままにして、 [作成] を選択します。

    Azure portal でのイベント サブスクリプションの作成

イベントをトリガーおよび表示する

サンプル アプリが稼働し、Event Grid で API Management インスタンスをサブスクライブしたら、いつでもイベントを生成できます。

たとえば、API Management インスタンスで製品を作成します。 イベント サブスクリプションに Microsoft.APIManagement.ProductCreated イベントが含まれる場合、製品を作成すると、Web アプリ エンドポイントにプッシュされるイベントがトリガーされます。

Event Grid ビューアー Web アプリに移動すると、ProductCreated イベントが表示されています。 イベントの横にあるボタンを選択して、詳細を表示します。

Event Grid ビューアーの製品の作成イベント

Event Grid イベント スキーマ

API Management イベントのデータには、resourceUri が含まれています。これにより、イベントをトリガーする API Management リソースが識別されます。 API Management イベントのメッセージ スキーマの詳細については、Event Grid のドキュメントを参照してください。

API Management 用の Azure Event Grid イベント スキーマ

次のステップ