Visual Studio Code を使用して関数を Azure Storage に接続するConnect functions to Azure Storage using Visual Studio Code

Azure Functions を使用すると、独自の統合コードを記述しなくても、Azure サービスやその他のリソースに関数を接続できます。Azure Functions lets you connect functions to Azure services and other resources without having to write your own integration code. これらのバインドは、入力と出力の両方を表し、関数定義内で宣言されます。These bindings, which represent both input and output, are declared within the function definition. バインドからのデータは、パラメーターとして関数に提供されます。Data from bindings is provided to the function as parameters. トリガーは、特殊な種類の入力バインドです。A trigger is a special type of input binding. 関数はトリガーを 1 つしか持てませんが、複数の入力および出力バインドを持つことができます。While a function has only one trigger, it can have multiple input and output bindings. 詳細については、「Azure Functions でのトリガーとバインドの概念」を参照してください。To learn more, see Azure Functions triggers and bindings concepts.

この記事では、Visual Studio Code を使用して、前のクイックスタートの記事で作成した関数を Azure Storage に接続する方法を説明します。This article shows you how to use Visual Studio Code to connect the function you created in the previous quickstart article to Azure Storage. この関数に追加する出力バインドは、HTTP 要求のデータを Azure Queue storage キュー内のメッセージに書き込みます。The output binding that you add to this function writes data from the HTTP request to a message in an Azure Queue storage queue.

ほとんどのバインドでは、バインドされているサービスにアクセスするために関数が使用する、保存されている接続文字列が必要です。Most bindings require a stored connection string that Functions uses to access the bound service. 作業を簡単にするために、関数アプリで作成したストレージ アカウントを使用します。To make it easier, you use the Storage account that you created with your function app. このアカウントへの接続は、既に AzureWebJobsStorage という名前のアプリ設定に保存されています。The connection to this account is already stored in an app setting named AzureWebJobsStorage.

前提条件Prerequisites

この記事を始める前に、以下の要件を満たす必要があります。Before you start this article, you must meet the following requirements:

この記事では、Visual Studio Code から Azure サブスクリプションに既にサインインしていることを前提としています。This article assumes that you are already signed in to your Azure subscription from Visual Studio Code. コマンド パレットから Azure: Sign In を実行するとサインインできます。You can sign in by running Azure: Sign In from the command palette.

関数アプリの設定をダウンロードするDownload the function app settings

前のクイックスタートの記事では、必要なストレージ アカウントと共に Azure で関数アプリを作成しました。In the previous quickstart article, you created a function app in Azure along with the required Storage account. このアカウントの接続文字列は、Azure のアプリ設定に安全に格納されています。The connection string for this account is stored securely in app settings in Azure. この記事では、同じアカウントのストレージ キューにメッセージを書き込みます。In this article, you write messages to a Storage queue in the same account. 関数をローカルで実行しているときにストレージ アカウントに接続するには、アプリ設定を local.settings.json ファイルにダウンロードする必要があります。To connect to your Storage account when running the function locally, you must download app settings to the local.settings.json file.

  1. F1 キーを押してコマンド パレットを開き、コマンド Azure Functions: Download Remote Settings.... を検索して実行します。Press the F1 key to open the command palette, then search for and run the command Azure Functions: Download Remote Settings.....

  2. 前の記事で作成した関数アプリを選択します。Choose the function app you created in the previous article. [すべてはい] を選択して既存のローカル設定を上書きします。Select Yes to all to overwrite the existing local settings.

    重要

    local.settings.json ファイルは、機密情報が含まれているため、公開されることはなく、ソース管理から除外されます。Because it contains secrets, the local.settings.json file never gets published, and is excluded from source control.

  3. ストレージ アカウントの接続文字列値のキーである AzureWebJobsStorage をコピーします。Copy the value AzureWebJobsStorage, which is the key for the Storage account connection string value. この接続を使用して、出力バインドが期待どおりに動作することを確認します。You use this connection to verify that the output binding works as expected.

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

Queue storage の出力バインドを使用しているため、このプロジェクトを実行する前に Storage のバインド拡張機能をインストールしておく必要があります。Because you are using a Queue storage output binding, you must have the Storage bindings extension installed before you run the project.

バインド拡張機能をインストールする最も簡単な方法は、拡張機能のバンドルを有効にすることです。The easiest way to install binding extensions is to enable extension bundles. バンドルを有効にすると、事前定義された一連の拡張機能パッケージが自動的にインストールされます。When you enable bundles, a predefined set of extension packages is automatically installed.

拡張機能のバンドルを有効にするには、host.json ファイルを開き、その内容を次のコードに合わせて更新します。To enable extension bundles, open the host.json file and update its contents to match the following code:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[1.*, 2.0.0)"
    }
}

これで、Storage の出力バインドをプロジェクトに追加できるようになります。Now, you can add the storage output binding to your project.

出力バインディングを追加するAdd an output binding

Functions では、各種のバインドで、directiontype、および固有の name が function.json ファイル内で定義される必要があります。In Functions, each type of binding requires a direction, type, and a unique name to be defined in the function.json file. これらの属性を定義する方法は、関数アプリの言語によって異なります。The way you define these attributes depends on the language of your function app.

バインドの属性は、function.json ファイルで直接定義されています。Binding attributes are defined directly in the function.json file. バインドの種類によっては、追加のプロパティが必要になることもあります。Depending on the binding type, additional properties may be required. キュー出力構成では、Azure Storage キュー バインドに必要なフィールドについて説明されています。The queue output configuration describes the fields required for an Azure Storage queue binding. この拡張機能により、バインドを簡単に function.json ファイルに追加できます。The extension makes it easy to add bindings to the function.json file.

バインドを作成するには、HttpTrigger フォルダー内の function.json ファイルを右クリック (macOS では Ctrl キーを押しながらクリック) して、 [バインドの追加] を選択します。プロンプトに従って、新しいバインドの次のバインド プロパティを定義します。To create a binding, right-click (Ctrl+click on macOS) the function.json file in your HttpTrigger folder and choose Add binding.... Follow the prompts to define the following binding properties for the new binding:

PromptPrompt Value 説明Description
Select binding direction (バインド方向を選択する)Select binding direction out バインドは出力バインドです。The binding is an output binding.
Select binding with direction... (方向を使用してバインドを選択する...)Select binding with direction... Azure Queue Storage バインドは Azure Storage キュー バインドです。The binding is an Azure Storage queue binding.
コードでこのバインドの特定に使用する名前The name used to identify this binding in your code msg コードで参照されているバインド パラメーターを識別する名前。Name that identifies the binding parameter referenced in your code.
The queue to which the message will be sent (メッセージの送信先のキュー)The queue to which the message will be sent outqueue バインドが書き込むキューの名前。The name of the queue that the binding writes to. queueName が存在しない場合は、バインドによって最初に使用されるときに作成されます。When the queueName doesn't exist, the binding creates it on first use.
Select setting from "local.setting.json" ("local.setting.json" から設定を選択する)Select setting from "local.setting.json" AzureWebJobsStorage ストレージ アカウントの接続文字列を含むアプリケーション設定の名前。The name of an application setting that contains the connection string for the Storage account. AzureWebJobsStorage 設定には、関数アプリで作成したストレージ アカウントの接続文字列が含まれています。The AzureWebJobsStorage setting contains the connection string for the Storage account you created with the function app.

バインドは、function.json ファイルの bindings 配列に追加されます。このファイルは次の例のようになります。A binding is added to the bindings array in your function.json file, which should now look like the following example:

{
   ...

  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "$return"
    },
    {
      "type": "queue",
      "direction": "out",
      "name": "msg",
      "queueName": "outqueue",
      "connection": "AzureWebJobsStorage"
    }
  ]
}

出力バインディングを使用するコードを追加するAdd code that uses the output binding

バインドが定義されたら、そのバインドの name を使用して、関数シグネチャの属性としてアクセスできます。After the binding is defined, you can use the name of the binding to access it as an attribute in the function signature. 出力バインドを使用すると、認証、キュー参照の取得、またはデータの書き込みに、Azure Storage SDK のコードを使用する必要がなくなります。By using an output binding, you don't have to use the Azure Storage SDK code for authentication, getting a queue reference, or writing data. Functions ランタイムおよびキューの出力バインドが、ユーザーに代わってこれらのタスクを処理します。The Functions runtime and queue output binding do those tasks for you.

context.bindingsmsg 出力バインド オブジェクトを使用してキュー メッセージを作成するコードを追加します。Add code that uses the msg output binding object on context.bindings to create a queue message. このコードを context.res ステートメントの前に追加します。Add this code before thecontext.res statement.

// Add a message to the Storage queue.
context.bindings.msg = "Name passed to the function: " + 
(req.query.name || req.body.name);

この時点で、関数は次のようになります。At this point, your function should look as follows:

module.exports = async function (context, req) {
    context.log('JavaScript HTTP trigger function processed a request.');

    if (req.query.name || (req.body && req.body.name)) {
        // Add a message to the Storage queue.
        context.bindings.msg = "Name passed to the function: " + 
        (req.query.name || req.body.name);
        context.res = {
            // status: 200, /* Defaults to 200 */
            body: "Hello " + (req.query.name || req.body.name)
        };
    }
    else {
        context.res = {
            status: 400,
            body: "Please pass a name on the query string or in the request body"
        };
    }
};

関数をローカルで実行するRun the function locally

Azure Functions Core Tools を使用すると、ローカルの開発用コンピューター上で Azure Functions プロジェクトを実行できます。Azure Functions Core Tools lets you run an Azure Functions project on your local development computer.

  1. 関数をテストするには、関数コードにブレークポイントを設定し、F5 キーを押して関数アプリ プロジェクトを開始します。To test your function, set a breakpoint in the function code and press F5 to start the function app project. Core Tools からの出力がターミナル パネルに表示されます。Output from Core Tools is displayed in the Terminal panel.

  2. ターミナル パネルで、HTTP によってトリガーされる関数の URL エンドポイントをコピーします。In the Terminal panel, copy the URL endpoint of your HTTP-triggered function.

    Azure のローカル出力

  3. HTTP 要求の URL をブラウザーのアドレス バーに貼り付けます。Paste the URL for the HTTP request into your browser's address bar. この URL にクエリ文字列 ?name=<yourname> を追加して、要求を実行します。Append the query string ?name=<yourname> to this URL and execute the request. ブレークポイントに到達すると、実行が一時停止されます。Execution is paused when the breakpoint is hit.

  4. 実行を続行したときの、GET 要求に対するブラウザーの応答を次に示します。When you continue the execution, the following shows the response in the browser to the GET request:

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

  5. デバッグを停止するには、Shift キーを押しながら F5 キーを押します。To stop debugging, press Shift + F5.

出力バインディングを最初に使用するときに、outqueue という名前の新しいキューが、Functions ランタイムによってストレージ アカウントに作成されます。A new queue named outqueue is created in your storage account by the Functions runtime when the output binding is first used. このキューが新しいメッセージと共に作成されたことを確認するために、Storage Explorer を使用します。You'll use Storage Explorer to verify that the queue was created along with the new message.

ストレージ エクスプローラーをアカウントに接続するConnect Storage Explorer to your account

既に Azure Storage Explorer をインストールして Azure アカウントに接続している場合は、このセクションをスキップしてください。Skip this section if you have already installed Azure Storage Explorer and connected it to your Azure account.

  1. Azure Storage Explorer ツールを実行し、左側の接続アイコンを選択して、 [アカウントの追加] を選択します。Run the Azure Storage Explorer tool, select the connect icon on the left, and select Add an account.

    Microsoft Azure Storage Explorer に Azure アカウントを追加する

  2. [接続] ダイアログで、 [Add an Azure account](Azure アカウントを追加する) を選択し、お使いの Azure 環境を選択して、 [サインイン] を選択します。In the Connect dialog, choose Add an Azure account, choose your Azure environment, and select Sign in....

    Azure アカウントへのサインイン

自分のアカウントへのサインインが成功すると、そのアカウントに関連付けられている Azure サブスクリプションがすべて表示されます。After you successfully sign in to your account, you see all of the Azure subscriptions associated with your account.

出力キューを確認するExamine the output queue

  1. Visual Studio Code で、F1 キーを押してコマンド パレットを開き、コマンド Azure Storage: Open in Storage Explorer を検索して実行し、自分のストレージ アカウント名を選択します。In Visual Studio Code, press the F1 key to open the command palette, then search for and run the command Azure Storage: Open in Storage Explorer and choose your Storage account name. Azure Storage Explorer で自分のストレージ アカウントが開きます。Your storage account opens in Azure Storage Explorer.

  2. [キュー] ノードを展開して、outqueue という名前のキューを選択します。Expand the Queues node, and then select the queue named outqueue.

    このキューには、HTTP によってトリガーされる関数を実行したときにキューの出力バインディングが作成されたというメッセージが含まれます。The queue contains the message that the queue output binding created when you ran the HTTP-triggered function. Azure の既定の name 値で関数を呼び出した場合、キュー メッセージは「Name passed to the function: Azure」(関数に渡された名前: Azure) になります。If you invoked the function with the default name value of Azure, the queue message is Name passed to the function: Azure.

    Azure Storage Explorer に表示されたキュー メッセージ

  3. 関数を再度実行し、別の要求を送信すると、キューに新しいメッセージが表示されます。Run the function again, send another request, and you'll see a new message appear in the queue.

ここで、更新された関数アプリを Azure に再発行します。Now, it's time to republish the updated function app to Azure.

更新したアプリを再デプロイして検証するRedeploy and verify the updated app

  1. Visual Studio Code で、F1 キーを押してコマンド パレットを開きます。In Visual Studio Code, press F1 to open the command palette. コマンド パレットで、Azure Functions: Deploy to function app... を検索して選択します。In the command palette, search for and select Azure Functions: Deploy to function app....

  2. 最初の記事で作成した関数アプリを選択します。Choose the function app that you created in the first article. 同じアプリにプロジェクトを再デプロイしているため、 [デプロイ] を選択して、ファイルの上書きに関する警告を無視します。Because you are redeploying your project to the same app, select Deploy to dismiss the warning about overwriting files.

  3. デプロイが完了したら、もう一度 curl またはブラウザーを使用して、再デプロイされた関数をテストすることができます。After deployment completes, you can again use cURL or a browser to test the redeployed function. 次の例のように、前の手順と同様にクエリ文字列 &name=<yourname> を URL に追加します。As before, append the query string &name=<yourname> to the URL, as in the following example:

    curl https://myfunctionapp.azurewebsites.net/api/httptrigger?code=cCr8sAxfBiow548FBDLS1....&name=<yourname>
    
  4. もう一度ストレージ キューのメッセージを表示して、出力バインドによってキューに新しいメッセージが再生成されていることを確認します。Again view the message in the storage queue to verify that the output binding again generates a new message in the queue.

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

Azure のリソースとは、Function App、関数、ストレージ アカウントなどのことを指します。Resources in Azure refers to function apps, functions, storage accounts, and so forth. これらはリソース グループに分類されており、グループを削除することでグループ内のすべてのものを削除できます。They are grouped into resource groups, and you can delete everything in a group by deleting the group.

これらのクイックスタートを完了するためにリソースを作成しました。You created resources to complete these quickstarts. これらのリソースには、アカウントの状態サービスの価格に応じて課金される場合があります。You may be billed for these resources, depending on your account status and service pricing. リソースの必要がなくなった場合にそれらを削除する方法を、次に示します。If you don't need the resources anymore, here's how to delete them:

  1. Visual Studio Code で、F1 キーを押してコマンド パレットを開きます。In Visual Studio Code, press F1 to open the command palette. コマンド パレットで、Azure Functions: Open in portal を検索して選択します。In the command palette, search for and select Azure Functions: Open in portal.

  2. 関数アプリを選択し、Enter キーを押します。Choose your function app, and press Enter. その関数アプリのページが Azure portal で開きます。The function app page is opened in the Azure portal.

  3. [概要] タブの [リソース グループ] で名前付きリンクを選択します。In the Overview tab, select the named link under Resource group.

    Function App ページから削除するリソース グループを選択します。

  4. [リソース グループ] ページで、含まれているリソースの一覧を確認し、削除するものであることを確認します。In the Resource group page, review the list of included resources, and verify that they are the ones you want to delete.

  5. [リソース グループの削除] を選択し、指示に従います。Select Delete resource group, and follow the instructions.

    削除には数分かかることがあります。Deletion may take a couple of minutes. 実行されると、通知が数秒間表示されます。When it's done, a notification appears for a few seconds. ページの上部にあるベルのアイコンを選択して、通知を表示することもできます。You can also select the bell icon at the top of the page to view the notification.

次の手順Next steps

HTTP によってトリガーされる関数を、ストレージ キューにデータを書き込むように更新しました。You've updated your HTTP triggered function to write data to a Storage queue. Functions の開発の詳細については、「Visual Studio Code を使用して Azure Functions を開発する」を参照してください。To learn more about developing Functions, see Develop Azure Functions using Visual Studio Code.

次に、関数アプリに対して Application Insights の監視を有効にする必要があります。Next, you should enable Application Insights monitoring for your function app: