Functions を使用して Azure Storage キューにメッセージを追加する

Azure Functions では、入力および出力バインディングによって、外部サービスからのデータをコードに使用できるようにする宣言方法が提供されます。 このクイックスタートでは、出力バインディングを使用して、関数が HTTP 要求によってトリガーされたときにキューにメッセージを作成します。 関数で作成するキュー メッセージを表示するには、Azure ストレージ コンテナーを使用します。

前提条件

このクイック スタートを完了するには、以下が必要です。

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

  • Azure Portal で初めての関数を作成する」の指示に従い、「リソースのクリーンアップ」の手順は実行しないでください。 ここで使用する関数と Function App は、そのクイックスタートで作成します。

出力バインディングを追加する

このセクションでは、Portal UI を使用して、前に作成した関数にキュー ストレージの出力バインディングを追加します。 このバインディングにより、最小限のコードの記述でキューにメッセージを作成できるようになります。 ストレージ接続のオープン、キューの作成、キューへの参照の取得などのタスクのためにコードを記述する必要はありません。 Azure Functions ランタイムおよびキューの出力バインディングが、ユーザーに代わってこれらのタスクを処理します。

  1. Azure Portal で、「Azure Portal で初めての関数を作成する」で作成した Function App の Function App ページを開きます。 ページを開くには、関数アプリを検索して選択します。 次に、関数アプリを選択します。

  2. 関数アプリを選択し、前のクイックスタートで作成した関数を選択します。

  3. [統合] を選択し、 [+ 出力を追加する] を選択します。

    Create an output binding for your function.

  4. [Azure Queue Storage] というバインディングの種類を選択して、このスクリーンショットの次の表で指定されている設定を追加します。

    Add a Queue storage output binding to a function in the Azure portal.

    設定 提案された値 説明
    メッセージ パラメーター名 outputQueueItem 出力バインディング パラメーターの名前。
    キュー名 outqueue ストレージ アカウント内の接続先のキューの名前。
    ストレージ アカウント接続 AzureWebJobsStorage Function App によって既に使用されているストレージ アカウント接続を使用するか、新しく作成できます。
  5. [OK] を選択して、バインディングを追加します。

出力バインディングが定義されたので、コードを更新し、バインディングを使用して、メッセージをキューに追加する必要があります。

出力バインディングを使用するコードを追加する

このセクションでは、出力キューにメッセージを書き込むコードを追加します。 メッセージには、クエリ文字列の HTTP トリガーに渡される値が含まれています。 たとえば、クエリ文字列に name=Azure が含まれる場合、キュー メッセージは「Name passed to the function: Azure」(関数に渡された名前: Azure) になります。

  1. 関数で、 [Code + Test](コード + テスト) を選択して、エディターに関数コードを表示します。

  2. 関数の言語に応じて関数コードを更新します。

    次の例で示すように、outputQueueItem パラメーターをメソッド シグネチャに追加します。

    public static async Task<IActionResult> Run(HttpRequest req,
        ICollector<string> outputQueueItem, ILogger log)
    {
        ...
    }
    

    return ステートメントの直前の関数の本体で、パラメーターを使用してキュー メッセージを作成するコードを追加します。

    outputQueueItem.Add("Name passed to the function: " + name);
    
  3. [保存] を選択して変更を保存します。

関数をテストする

  1. コードの変更が保存されたら、 [テスト] を選択します。

  2. テストが下の画像と一致することを確認し、 [実行] を選択します。

    Test the queue storage binding in the Azure portal.

    要求本文nameAzure が含まれていることに注意してください。 この値は、関数が呼び出されたときに作成されるキュー メッセージに表示されます。

    ここで [実行] を選択する代わりに、ブラウザーで URL を入力してクエリ文字列に name 値を指定することで、関数を呼び出すことができます。 このブラウザーの方法は、前のクイック スタートで示されています。

  3. ログを確認して、関数が成功したことを確認します。

出力バインディングを最初に使用するときに、outqueue という名前の新しいキューが、Functions ランタイムによってストレージ アカウントに作成されます。 キューとその中のメッセージが作成されたことを確認するには、ストレージ アカウントを使用します。

AzureWebJobsStorage に接続されているストレージ アカウントを検索します。

  1. 関数アプリに移動して、 [構成] を選択します。

  2. [アプリケーション設定] で、 [AzureWebJobsStorage] を選択します。

    Screenshot shows the Configuration page with AzureWebJobsStorage selected.

  3. アカウント名を検索してメモします。

    Locate the storage account connected to AzureWebJobsStorage.

出力キューを確認する

  1. 関数アプリのリソース グループで、このクイックスタートに使用するストレージ アカウントを選択します。

  2. [Queue サービス] で、 [キュー] を選択し、outqueue という名前のキューを選択します。

    このキューには、HTTP によってトリガーされる関数を実行したときにキューの出力バインディングが作成されたというメッセージが含まれます。 Azure の既定の name 値で関数を呼び出した場合、キュー メッセージは「Name passed to the function: Azure」(関数に渡された名前: Azure) になります。

  3. 関数を再度実行すると、キューに新しいメッセージが表示されます。

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

このコレクションの他のクイックスタートは、このクイックスタートに基づいています。 クイック スタート、チュートリアル、またはこのクイック スタートで作成したサービスのいずれかでの作業を引き続き行う場合は、リソースをクリーンアップしないでください。

Azure の "リソース" とは、関数アプリ、関数、ストレージ アカウントなどのことを指します。 これらは "リソース グループ" に分類されており、グループを削除することでグループ内のすべてのものを削除できます。

これで、これらのクイックスタートを完了するためのリソースが作成されました。 アカウントの状態サービスの価格によっては、これらのリソースに対して課金される可能性があります。 リソースの必要がなくなった場合にそれらを削除する方法を、次に示します。

  1. Azure Portal で、 [リソース グループ] ページに移動します。

    関数アプリ ページからこのページに移動するには、[概要] タブを選択し、[リソース グループ] の下にあるリンクを選択します。

    Screenshot that shows select the resource group to delete from the function app page.

    ダッシュボードからこのページに移動するには、 [リソース グループ] を選択してから、この記事用に使用したリソース グループを選択します。

  2. [リソース グループ] ページで、含まれているリソースの一覧を確認し、削除するものであることを確認します。

  3. [リソース グループの削除] を選択し、指示に従います。

    削除には数分間かかることがあります。 実行されると、通知が数秒間表示されます。 ページの上部にあるベルのアイコンを選択して、通知を表示することもできます。

次のステップ

このクイックスタートでは、既存の関数に出力バインディングを追加しました。 Queue Storage へのバインディングの詳細については、「Azure Functions における Storage キュー バインド」を参照してください。