Azure Functions の Event Grid トリガーのローカル デバッグAzure Function Event Grid Trigger Local Debugging

この記事では、ストレージ アカウントによって発生した Azure Event Grid イベントを処理するローカル関数をデバッグする方法を示します。This article demonstrates how to debug a local function that handles an Azure Event Grid event raised by a storage account.

前提条件Prerequisites

  • 既存の関数アプリを作成または使用するCreate or use an existing function app
  • 既存のストレージ アカウントを作成または使用するCreate or use an existing storage account
  • ngrok をダウンロードして、Azure でローカル関数を呼び出せるようにするDownload ngrok to allow Azure to call your local function

新しい関数を作成するCreate a new function

Visual Studio で関数アプリを開き、ソリューション エクスプローラーでプロジェクト名を右クリックし、 [追加] > [新しい Azure 関数] の順にクリックします。Open your function app in Visual Studio and, right-click on the project name in the Solution Explorer and click Add > New Azure Function.

[新しい Azure 関数] ウィンドウで、 [Event Grid トリガー] 選択し、 [OK] をクリックします。In the New Azure Function window, select Event Grid trigger and click OK.

新しい関数の作成

関数が作成されたら、コード ファイルを開いて、ファイルの上部にコメント アウトされた URL をコピーします。Once the function is created, open the code file and copy the URL commented out at the top of the file. この場所は、Event Grid トリガーを構成するときに使用されます。This location is used when configuring the Event Grid trigger.

コピーの場所

次に、log.LogInformation で始まる行にブレークポイントを設定します。Then, set a breakpoint on the line that begins with log.LogInformation.

ブレークポイントの設定

次に、F5 キーを押してデバッグ セッションを開始します。Next, press F5 to start a debugging session.

Azure でローカル関数を呼び出せるようにするAllow Azure to call your local function

マシン上でデバッグ中の関数を中断するには、Azure でクラウドからローカル関数と通信する方法を有効にする必要があります。To break into a function being debugged on your machine, you must enable a way for Azure to communicate with your local function from the cloud.

ngrok ユーティリティでは、マシンで実行されている関数を Azure で呼び出すことができます。The ngrok utility provides a way for Azure to call the function running on your machine. 次のコマンドを使用して ngrok を起動します。Start ngrok using the following command:

ngrok http -host-header=localhost 7071

ユーティリティがセットアップされると、次のスクリーンショットのようなコマンド ウィンドウが表示されます。As the utility is set up, the command window should look similar to the following screenshot:

ngrok を起動する

ngrok が実行されたときに生成される HTTPS URL をコピーします。Copy the HTTPS URL generated when ngrok is run. この値は、Event Grid イベント エンドポイントを構成するときに使用されます。This value is used when configuring the event grid event endpoint.

ストレージ イベントを追加するAdd a storage event

Azure portal を開き、ストレージ アカウントに移動し、 [イベント] オプションをクリックします。Open the Azure portal and navigate to a storage account and click on the Events option.

ストレージ アカウント イベントを追加する

[イベント] ウィンドウで、 [イベント サブスクリプション] ボタンをクリックします。In the Events window, click on the Event Subscription button. [イベント サブスクリプション] ウィンドウで、 [エンドポイントの種類] ドロップダウンを選択し、 [Webhook] を選択します。In the Even Subscription window, click on the Endpoint Type dropdown and select Web Hook.

サブスクリプションの種類を選択する

エンドポイントの種類が構成されたら、 [エンドポイントを選択する] をクリックしてエンドポイント値を構成します。Once the endpoint type is configured, click on Select an endpoint to configure the endpoint value.

エンドポイントの種類を選択する

[サブスクライバー エンドポイント] の値は 3 つの異なる値から構成されます。The Subscriber Endpoint value is made up from three different values. プレフィックスは、ngrok によって生成される HTTPS URL です。The prefix is the HTTPS URL generated by ngrok. URL の残りの部分は、関数コード ファイルにある関数名から取得され、末尾に関数名が付加されます。The remainder of the URL comes from the URL found in the function code file, with the function name added at the end. 関数コード ファイルの URL 以降では、ngrok URL が http://localhost:7071 に置き換えられ、関数名が {functionname} に置き換えられます。Starting with the URL from the function code file, the ngrok URL replaces http://localhost:7071 and the function name replaces {functionname}.

次のスクリーンショットは、最後の URL がどのように表示されるかを示しています。The following screenshot shows how the final URL should look:

エンドポイントの選択

適切な値を入力したら、 [選択内容の確認] をクリックします。Once you've entered the appropriate value, click Confirm Selection.

重要

ngrok を起動するたびに、HTTPS URL が再生成され、値が変更されます。Every time you start ngrok, the HTTPS URL is regenerated and the value changes. そのため、ngrok を使用して Azure に関数を公開するたびに、新しいイベント サブスクリプションを作成する必要があります。Therefore you must create a new Event Subscription each time you expose your function to Azure via ngrok.

ファイルをアップロードするUpload a file

これで、ストレージ アカウントにファイルをアップロードして、ローカル関数で処理する Event Grid イベントをトリガーすることができます。Now you can upload a file to your storage account to trigger an Event Grid event for your local function to handle.

Storage Explorer を開いて、ストレージ アカウントに接続します。Open Storage Explorer and connect to the your storage account.

  • BLOB コンテナーを展開しますExpand Blob Containers
  • 右クリックし、 [BLOB コンテナーの作成] を選択します。Right-click and select Create Blob Container.
  • コンテナーに test という名前を付けますName the container test
  • test コンテナーを選択しますSelect the test container
  • [アップロード] ボタンをクリックしますClick the Upload button
  • [ファイルのアップロード] をクリックしますClick Upload Files
  • ファイルを選択して、BLOB コンテナーにアップロードしまSelect a file and upload it to the blob container

関数をデバッグするDebug the function

新しいファイルがストレージ コンテナーにアップロードされることを Event Grid が認識すると、ローカル関数でブレークポイントがヒットします。Once the Event Grid recognizes a new file is uploaded to the storage container, the break point is hit in your local function.

ngrok を起動する

リソースのクリーンアップClean up resources

この記事で作成したリソースをクリーンアップするには、ストレージ アカウント内の test コンテナーを削除します。To clean up the resources created in this article, delete the test container in your storage account.

次の手順Next steps