次の方法で共有


Visual Studioを使用して関数をAzure Storageに接続する

Azure Functionsを使用すると、独自の統合コードを記述することなく、Azure サービスやその他のリソースを関数に接続できます。 これらのバインドは、入力と出力の両方を表し、関数定義内で宣言されます。 バインドからのデータは、パラメーターとして関数に提供されます。 "トリガー" は、特殊な種類の入力バインドです。 関数はトリガーを 1 つしか持てませんが、複数の入力および出力バインドを持つことができます。 詳細については、「Azure Functions トリガーとバインドの概念を参照してください。

この記事では、Visual Studioを使用して、をAzure Storageに接続する方法について説明します。 この関数に追加する出力バインドは、HTTP 要求から Azure Queue storage キュー内のメッセージにデータを書き込みます。

ほとんどのバインディングには、バインドされたサービスにアクセスするために Functions が使用する格納された接続文字列が必要です。 簡単にするために、関数アプリで作成したStorage アカウントを使用します。 このアカウントへの接続は、既に AzureWebJobsStorage という名前のアプリ設定に保存されています。

前提条件

この記事を読み始める前に、以下を用意する必要があります。

  • Visual Studio クイック スタートのパート 1 完了
  • Azure Storage Explorerをインストールします。 Storage Explorerは、出力バインディングによって生成されたキュー メッセージを調べるのに使用するツールです。 Storage Explorerは、macOS、Windows、Linux ベースのオペレーティング システムでサポートされています。
  • Visual StudioからAzure サブスクリプションにサインインします。

関数アプリの設定をダウンロードする

前のクイック スタート記事では、必要なStorage アカウントと共にAzureに関数アプリを作成しました。 このアカウントのconnection stringは、Azureのアプリ設定に安全に保存されます。 この記事では、同じアカウントのStorage キューにメッセージを書き込みます。 関数をローカルで実行するときにStorage アカウントに接続するには、アプリ設定を local.settings.json ファイルにダウンロードする必要があります。

  1. Solution Explorer で、projectを右クリックし、Publish を選択します。

  2. [Publish] タブの [Hosting で、3 つのドット (...) を選択し、Manage Azure App Service settings を選択します。

    アプリケーション設定の編集

  3. [AzureWebJobsStorage] で、[リモート] の文字列値を [ローカル] にコピーし、[OK] を選択します。

接続にAzureWebJobsStorage設定を使用するストレージ バインドは、ローカル環境で実行する際にキュー ストレージに接続できるようになりました。

バインディング拡張機能を登録する

キュー ストレージ出力バインディングを使用しているため、プロジェクトを実行する前にストレージ バインド拡張機能をインストールする必要があります。 HTTP トリガーとタイマー トリガーを除き、バインドは拡張機能パッケージとして実装されます。

  1. Tools メニューから、NuGet Package Manager>Package Manager Console を選択します。

  2. コンソールで、次の Install-Package コマンドを実行して、Storage拡張機能をインストールします。

    Install-Package Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues
    

これで、ストレージ出力バインディングをプロジェクトに追加できるようになりました。

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

C# projectでは、バインドは関数メソッドのバインド属性として定義されます。 具体的な定義は、お使いのアプリがインプロセス (C# クラス ライブラリ) で実行されるのか、分離ワーカー プロセスで実行されるのかによって異なります。

HttpExample.cs project ファイルを開き、次の MultiResponse クラスを追加します。

public class MultiResponse
{
    [QueueOutput("outqueue", Connection = "AzureWebJobsStorage")]
    public string[] Messages { get; set; }
    public IActionResult HttpResponse { get; set; }
}

MultiResponse クラスを使用すると、outqueue という名前のstorage キューと HTTP 成功メッセージに書き込むことができます。 QueueOutput 属性は文字列配列に適用されるので、複数のメッセージをキューに送信できます。

Connection プロパティは、storage アカウントのconnection stringを設定します。 この場合、既定のstorage アカウントを既に使用しているため、Connection を省略できます。

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

バインドが定義されたら、バインドのnameを使用して、関数シグネチャの属性としてアクセスできます。 出力バインドを使用することで、認証、キュー参照の取得、データの書き込みに Azure Storage SDK コードを使用する必要はありません。 Functions ランタイムおよびキューの出力バインドが、ユーザーに代わってこれらのタスクを処理します。

既存の Run メソッドを次のコードに置き換えます。

[Function("HttpExample")]
public MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)
{
    _logger.LogInformation("C# HTTP trigger function processed a request.");

    var message = "Welcome to Azure Functions!";

    // Return a response to both HTTP trigger and storage output binding.
    return new MultiResponse()
    {
        // Write a single message.
        Messages = new string[] { message },
        HttpResponse = new OkObjectResult(message)
    };
}

関数をローカルで実行する

  1. 関数を実行するには、Visual Studioで F5 キーを押します。 ツールで HTTP 要求を処理できるように、ファイアウォールの例外を有効にすることが必要になる場合があります。 承認レベルは、ローカルで関数を実行するときには適用されません。

  2. Azure Functionsランタイム出力から関数の URL をコピーします。

    Azure local runtime

  3. HTTP 要求の URL をブラウザーのアドレス バーに貼り付けて、要求を実行します。 次の図は、関数によって返されるローカル GET 要求に対するブラウザーでの応答です。

    ブラウザーでの関数 localhost の応答

  4. デバッグを停止するには、Visual Studioで Shift+F5 を押します。

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

Storage Explorerをアカウントに接続する

Azure Storage Explorerを既にインストールし、Azure アカウントに接続している場合は、このセクションをスキップします。

  1. Azure Storage Explorer ツールを実行し、左側の接続アイコンを選択し、 アカウントの追加を選択します。

    Azure アカウントを Microsoft Azure Storage Explorer に追加する方法のスクリーンショット

  2. [Connect ダイアログで、 Azure アカウントの追加を選択し、Azure環境を選択し、Sign in... を選択します。

    Azure アカウント ウィンドウへのサインインのスクリーンショット.

アカウントに正常にサインインすると、アカウントに関連付けられているすべてのAzureサブスクリプションが表示されます。 サブスクリプションを選択し、[エクスプローラーを開く] を選択します。

出力キューを確認する

  1. Storage Explorerで、Queues ノードを展開し、outqueue という名前のキューを選択します。

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

    Azure Storage Explorer に表示されているキュー メッセージのスクリーンショット

  2. 関数を再度実行し、別の要求を送信すると、キューに新しいメッセージが表示されます。

次に、更新された関数アプリをAzureに再発行します。

更新したアプリを再デプロイして検証する

  1. Solution Explorer で、projectを右クリックし、Publish を選択し、 Publish を選択して、Azureするprojectを再発行します。

  2. デプロイが完了したら、もう一度ブラウザーを使用して、再デプロイされた関数をテストすることができます。 前のように、URL にクエリ文字列 &name=<yourname> を追加します。

  3. storage キュー内のメッセージを確認し出力バインドによってキューに新しいメッセージが再度生成されることを確認します。

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

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

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

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

  1. Azure portalで、Resource グループ ページに移動します。

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

    関数アプリのページから削除するリソース グループの選択を示すスクリーンショット。

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

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

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

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

次のステップ

HTTP トリガーの関数を更新して、データをストレージ キューに書き込むようにしました。 Functions の開発の詳細については、「develop Azure Functions using Visual Studio」を参照してください。

次に、関数アプリに対して Application Insights の監視を有効にする必要があります。