Visual Studio を使用する Azure Functions の開発Develop Azure Functions using Visual Studio

Visual Studio で、C# クラス ライブラリ関数を開発して、テストし、Azure にデプロイすることができます。Visual Studio lets you develop, test, and deploy C# class library functions to Azure. Azure Functions を初めて使用する場合は、詳細について、「Azure Functions の概要」を参照してください。If this experience is your first with Azure Functions, you can learn more at An introduction to Azure Functions.

Visual Studio には、関数の開発時の利点として次のようなことがあります。Visual Studio provides the following benefits when develop your functions:

  • ローカル開発用コンピューターで関数を編集、作成、および実行できます。Edit, build, and run functions on your local development computer.
  • Azure Functions プロジェクトを Azure に直接発行し、必要に応じて Azure リソースを作成します。Publish your Azure Functions project directly to Azure, and create Azure resources as needed.
  • C# 属性を使用して、C# コードで直接、関数のバインドを宣言できます。Use C# attributes to declare function bindings directly in the C# code.
  • コンパイル済み C# 関数を開発およびデプロイできます。Develop and deploy pre-compiled C# functions. コンパイル済み関数では、C# スクリプト ベースの関数より優れたコールド スタート パフォーマンスが得られます。Pre-complied functions provide a better cold-start performance than C# script-based functions.
  • Visual Studio 開発のすべての利点を得ながら、C# で関数をコーディングできます。Code your functions in C# while having all of the benefits of Visual Studio development.

この記事では、Visual Studio を使って C# クラス ライブラリ関数を開発して Azure に発行する方法に関する詳細情報を提供します。This article provides details about how to use Visual Studio to develop C# class library functions and publish them to Azure. この記事を読む前に、Visual Studio 用の関数クイック スタートに関するページを完了する 必要があります。Before you read this article, you should complete the Functions quickstart for Visual Studio.

特に明記されていない限り、ここで示す手順と例は Visual Studio 2019 のものです。Unless otherwise noted, procedures and examples shown are for Visual Studio 2019.

前提条件Prerequisites

Azure Functions Tools は、Visual Studio 2017 以降の Visual Studio の Azure 開発ワークロードに含まれています。Azure Functions Tools is included in the Azure development workload of Visual Studio starting with Visual Studio 2017. Visual Studio のインストールには、必ず Azure 開発ワークロードを含めてください。Make sure you include the Azure development workload in your Visual Studio installation.

Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。If you don't have an Azure subscription, create a free account before you begin.

Azure Storage アカウントなど、他の必要なリソースは、発行プロセス中にサブスクリプションに作成されます。Other resources that you need, such as an Azure Storage account, are created in your subscription during the publishing process.

注意

Visual Studio 2017 では、Azure 開発ワークロードによって Azure Functions Tools が別個の拡張機能としてインストールされます。In Visual Studio 2017, the Azure development workload installs the Azure Functions Tools as a separate extension. Visual Studio 2017 を更新する場合、Azure Functions ツールの最新バージョンを使用していることも確認してください。When you update your Visual Studio 2017, also make sure that you are using the most recent version of the Azure Functions tools. 以下のセクションでは、Visual Studio 2017 の Azure Functions Tools 拡張機能を確認し、必要に応じて更新する方法について説明します。The following sections show you how to check and (if needed) update your Azure Functions Tools extension in Visual Studio 2017.

Visual Studio 2017 でツールのバージョンを確認するCheck your tools version in Visual Studio 2017

  1. [ツール] メニューの [拡張機能と更新プログラム] を選択します。From the Tools menu, choose Extensions and Updates. [インストール済み] > [ツール] メニューを展開し、 [Azure Functions と Web ジョブ ツール] を選択します。Expand Installed > Tools and choose Azure Functions and Web Jobs Tools.

    Functions ツールのバージョンを確認する

  2. インストールされているバージョンを確認します。Note the installed Version. このバージョンとリリース ノートに記載されている最新バージョンを比較します。You can compare this version with the latest version listed in the release notes.

  3. インストールされているバージョンが古い場合は、次のセクションの説明に従って Visual Studio でツールを更新します。If your version is older, update your tools in Visual Studio as shown in the following section.

Visual Studio 2017 のツールを更新するUpdate your tools in Visual Studio 2017

  1. [拡張機能と更新プログラム] ダイアログで、 [更新プログラム] > [Visual Studio Marketplace] を展開し、 [Azure Functions と Web ジョブ ツール][更新] の順に選択します。In the Extensions and Updates dialog, expand Updates > Visual Studio Marketplace, choose Azure Functions and Web Jobs Tools and select Update.

    Functions ツールのバージョンを更新する

  2. ツールの更新プログラムをダウンロードしたら、Visual Studio を終了し、VSIX インストーラーを使用してツールの更新プログラムを起動します。After the tools update is downloaded, close Visual Studio to trigger the tools update using the VSIX installer.

  3. インストーラーで [OK] を選択して開始し、 [変更] を選択してツールを更新します。In the installer, choose OK to start and then Modify to update the tools.

  4. 更新が完了したら、 [閉じる] を選択して Visual Studio を再起動します。After the update is complete, choose Close and restart Visual Studio.

注意

Visual Studio 2019 以降では、Azure Functions ツールの拡張機能が Visual Studio の一部として更新されます。In Visual Studio 2019 and later, the Azure Functions tools extension is updated as part of Visual Studio.

Azure Functions プロジェクトを作成するCreate an Azure Functions project

Visual Studio の Azure Functions プロジェクト テンプレートでは、Azure の関数アプリに発行できるプロジェクトを作成します。The Azure Functions project template in Visual Studio creates a project that can be published to a function app in Azure. 関数アプリを使用すると、リソースを管理、デプロイ、および共有するための論理ユニットとして関数をグループ化できます。You can use a function app to group functions as a logical unit for management, deployment, and sharing of resources.

  1. Visual Studio の [ファイル] メニューで、 [新規作成] > [プロジェクト] を選択します。In Visual Studio, on the File menu, select New > Project.

  2. [新しいプロジェクトの作成] ダイアログ ボックスで functions を検索して [Azure Functions] テンプレートを選択し、 [次へ] を選択します。In the Create a new project dialog box, search for functions, choose the Azure Functions template, and select Next.

  3. プロジェクトの名前を入力し、 [作成] を選択します。Enter a name for your project, and select Create. 関数アプリ名は、C# 名前空間として有効である必要があります。そのため、アンダースコア、ハイフン、その他の英数字以外の文字は使用しないでください。The function app name must be valid as a C# namespace, so don't use underscores, hyphens, or any other nonalphanumeric characters.

  4. [新しい Azure Functions アプリケーションの作成] で、以下のオプションを使用します。In Create a new Azure Functions application, use the following options:

    • Azure Functions v2 (.NET Core) 1Azure Functions v2 (.NET Core) 1
    • HTTP トリガーHTTP trigger
    • [ストレージ アカウント] : ストレージ エミュレーターStorage Account: Storage Emulator
    • 承認レベル: AnonymousAuthorization level: Anonymous
    オプションOption 推奨値Suggested value 説明Description
    Functions ランタイムFunctions runtime Azure Functions 2.x
    (.NET Core)
    Azure Functions 2.x
    (.NET Core)
    この設定で、.NET Core をサポートする Azure Functions のバージョン 2.x ランタイムを使用する関数プロジェクトが作成されます。This setting creates a function project that uses the version 2.x runtime of Azure Functions, which supports .NET Core. Azure Functions 1.x では、.NET Framework がサポートされます。Azure Functions 1.x supports the .NET Framework. 詳細については、Azure Functions ランタイム バージョンをターゲットにする方法に関するページを参照してください。For more information, see Target Azure Functions runtime version.
    関数テンプレートFunction template HTTP トリガーHTTP trigger この設定で、HTTP 要求によってトリガーされる関数が作成されます。This setting creates a function triggered by an HTTP request.
    ストレージ アカウントStorage Account ストレージ エミュレーターStorage Emulator HTTP トリガーは Azure Storage アカウント接続を使用しません。An HTTP trigger doesn't use the Azure Storage account connection. 他のすべてのトリガーの種類では、有効なストレージ アカウント接続文字列が必要です。All other trigger types require a valid Storage account connection string. Functions にはストレージ アカウントが必要であるため、プロジェクトを Azure に発行するときに割り当てられるか、作成されます。Because Functions requires a storage account, one is assigned or created when you publish your project to Azure.
    承認レベルAuthorization level AnonymousAnonymous 作成される関数を、すべてのクライアントがキーを使用せずにトリガーできます。The created function can be triggered by any client without providing a key. この承認設定により、新しい関数のテストが容易になります。This authorization setting makes it easy to test your new function. キーと承認の詳細については、「Azure Functions における HTTP と webhook のバインド」の「承認キー」をご覧ください。For more information about keys and authorization, see Authorization keys in the HTTP and webhook bindings.

    注意

    承認レベルAnonymous に設定していることを確認します。Make sure you set the Authorization level to Anonymous. Function の既定のレベルを選択した場合、関数エンドポイントにアクセスする要求で、関数キーを提示する必要があります。If you choose the default level of Function, you're required to present the function key in requests to access your function endpoint.

  5. [作成] を選択して、関数プロジェクトと、HTTP でトリガーされる関数を作成します。Select Create to create the function project and HTTP-triggered function.

プロジェクト テンプレートでは、C# プロジェクトの作成、Microsoft.NET.Sdk.Functions NuGet パッケージのインストール、およびターゲット フレームワークの設定が行われます。The project template creates a C# project, installs the Microsoft.NET.Sdk.Functions NuGet package, and sets the target framework. 新しいプロジェクトには次のファイルが含まれます。The new project has the following files:

  • host.json:Functions のホストを構成できます。host.json: Lets you configure the Functions host. これらの設定は、ローカルでの実行時と Azure での実行時の両方に適用されます。These settings apply both when running locally and in Azure. 詳細については、host.json のリファレンスを参照してください。For more information, see host.json reference.

  • local.settings.json:関数をローカルで実行するときに使用される設定を保持します。local.settings.json: Maintains settings used when running functions locally. Azure で実行している場合、これらの設定は使用されません。These settings are not used when running in Azure. 詳細については、「ローカル設定ファイル」を参照してください。For more information, see Local settings file.

    重要

    local.settings.json ファイルにはシークレットを含めることができるため、それをプロジェクト ソース管理から除外する必要があります。Because the local.settings.json file can contain secrets, you must excluded it from your project source control. このファイルの [出力ディレクトリにコピー] 設定は、常に [新しい場合はコピーする] にする必要があります。The Copy to Output Directory setting for this file should always be Copy if newer.

詳細については、「関数クラス ライブラリ プロジェクト」を参照してください。For more information, see Functions class library project.

ローカル設定ファイルLocal settings file

local.settings.json ファイルには、アプリの設定、接続文字列、およびローカルの開発ツールによって使用される設定が格納されます。The local.settings.json file stores app settings, connection strings, and settings used by local development tools. local.settings.json ファイル内の設定は、プロジェクトをローカルで実行している場合にのみ使用されます。Settings in the local.settings.json file are used only when you're running projects locally. ローカル設定ファイルの構造は次のとおりです。The local settings file has this structure:

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "<language worker>",
    "AzureWebJobsStorage": "<connection-string>",
    "AzureWebJobsDashboard": "<connection-string>",
    "MyBindingConnection": "<binding-connection-string>"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*",
    "CORSCredentials": false
  },
  "ConnectionStrings": {
    "SQLConnectionString": "<sqlclient-connection-string>"
  }
}

これらの設定は、プロジェクトをローカルで実行する場合にサポートされます。These settings are supported when you run projects locally:

SettingSetting 説明Description
IsEncrypted この設定を true にすると、すべての値がローカル コンピューターのキーを使用して暗号化されます。When this setting is set to true, all values are encrypted with a local machine key. func settings コマンドと共に使用されます。Used with func settings commands. 既定値は false です。Default value is false.
Values プロジェクトをローカルで実行するときに使用されるアプリケーション設定と接続文字列の配列です。Array of application settings and connection strings used when a project is running locally. これらのキーと値 (文字列と文字列) のペアは、AzureWebJobsStorage など、Azure 内の関数アプリでのアプリケーション設定に対応します。These key-value (string-string) pairs correspond to application settings in your function app in Azure, like AzureWebJobsStorage. 多くのトリガーおよびバインドには、BLOB ストレージ トリガーConnection など、接続文字列アプリ設定を参照するプロパティがあります。Many triggers and bindings have a property that refers to a connection string app setting, like Connection for the Blob storage trigger. これらのプロパティでは、Values 配列にアプリケーション設定を定義する必要があります。For these properties, you need an application setting defined in the Values array.
AzureWebJobsStorage は、HTTP 以外のトリガーに必要なアプリ設定です。AzureWebJobsStorage is a required app setting for triggers other than HTTP.
Functions ランタイムのバージョン 2.x には、[FUNCTIONS_WORKER_RUNTIME] 設定が必要です。これは、Core Tools によってご自分のプロジェクトのために生成されます。Version 2.x of the Functions runtime requires the [FUNCTIONS_WORKER_RUNTIME] setting, which is generated for your project by Core Tools.
Azure ストレージ エミュレーターがローカルにインストールされ、AzureWebJobsStorageUseDevelopmentStorage=true に設定すると、Core Tools ではエミュレーターが使用されます。When you have the Azure storage emulator installed locally and you set AzureWebJobsStorage to UseDevelopmentStorage=true, Core Tools uses the emulator. エミュレーターは開発中には便利ですが、デプロイする前に実際のストレージに接続してテストする必要があります。The emulator is useful during development, but you should test with an actual storage connection before deployment.
値は、JSON オブジェクトまたは配列ではなく文字列である必要があります。Values must be strings and not JSON objects or arrays. 設定名には、コロン (:)、2 つの連続する下線 (__) を含めることはできません。Setting names can't include a colon (:) or a double underline (__). これらの文字はランタイムで予約されています。These characters are reserved by the runtime.
Host このセクションの設定により、ローカルでプロジェクトを実行するときの Functions ホスト プロセスをカスタマイズできます。Settings in this section customize the Functions host process when you run projects locally. これらの設定は、Azure でプロジェクトを実行するときにも適用される、host.json 設定とは別のものです。These settings are separate from the host.json settings, which also apply when you run projects in Azure.
LocalHttpPort ローカルの Functions ホストの実行時に使用される既定のポートを設定します (func host startfunc run)。Sets the default port used when running the local Functions host (func host start and func run). --port コマンド ライン オプションは、この設定より優先されます。The --port command-line option takes precedence over this setting.
CORS クロス オリジン リソース共有 (CORS) で許可されるオリジンを定義します。Defines the origins allowed for cross-origin resource sharing (CORS). スペースなしのコンマ区切りのリストでオリジンを指定します。Origins are supplied as a comma-separated list with no spaces. ワイルドカード値 (*) がサポートされており、これによって任意のオリジンからの要求を許可できます。The wildcard value (*) is supported, which allows requests from any origin.
CORSCredentials true に設定すると、withCredentials 要求が許可されます。When set to true, allows withCredentials requests.
ConnectionStrings コレクションです。A collection. 関数のバインディングで使用される接続文字列にこのコレクションを使用しないでください。Don't use this collection for the connection strings used by your function bindings. このコレクションは、Entity Framework など、構成ファイルの ConnectionStrings セクションから接続文字列を取得するのが一般的なフレームワークでのみ使用されます。This collection is used only by frameworks that typically get connection strings from the ConnectionStrings section of a configuration file, like Entity Framework. このオブジェクト内の接続文字列は、System.Data.SqlClient のプロバイダーの種類と共に、環境に追加されます。Connection strings in this object are added to the environment with the provider type of System.Data.SqlClient. 他のアプリ設定では、このコレクション内の項目は Azure に発行されません。Items in this collection aren't published to Azure with other app settings. ご自分の関数アプリの設定の Connection strings コレクションに、これらの値を明示的に追加する必要があります。You must explicitly add these values to the Connection strings collection of your function app settings. 関数コードで SqlConnection を作成する場合は、接続文字列の値を他の接続と共に、ポータル内のアプリケーション設定に格納する必要があります。If you're creating a SqlConnection in your function code, you should store the connection string value with your other connections in Application Settings in the portal.

プロジェクトを発行しても local.settings.json の設定は自動的にアップロードされません。Settings in local.settings.json are not uploaded automatically when you publish the project. これらの設定が Azure の関数アプリにも確実に存在するようにするには、プロジェクトを発行した後にそれらをアップロードする必要があります。To make sure that these settings also exist in your function app in Azure, you must upload them after you publish your project. 詳細については、「Function App の設定」を参照してください。To learn more, see Function app settings.

ConnectionStrings 内の値は発行されません。Values in ConnectionStrings are never published.

関数アプリの設定値は、コードの中で環境変数として読み込むこともできます。The function app settings values can also be read in your code as environment variables. 詳細については、「環境変数」を参照してください。For more information, see Environment variables.

ローカル開発用のプロジェクトを構成するConfigure the project for local development

Functions ランタイムでは内部的に Azure Storage アカウントを使用します。The Functions runtime uses an Azure Storage account internally. HTTP と webhook 以外のすべてのトリガーの種類については、Values.AzureWebJobsStorage キーを有効な Azure Storage アカウントの接続文字列に設定する必要があります。For all trigger types other than HTTP and webhooks, you must set the Values.AzureWebJobsStorage key to a valid Azure Storage account connection string. 関数アプリで、プロジェクトに必要な AzureWebJobsStorage 接続設定に Azure Storage エミュレーターを使用することもできます。Your function app can also use the Azure storage emulator for the AzureWebJobsStorage connection setting that is required by the project. エミュレーターを使用するには、AzureWebJobsStorage の値を UseDevelopmentStorage=true に設定します。To use the emulator, set the value of AzureWebJobsStorage to UseDevelopmentStorage=true. この設定は、デプロイ前に実際のストレージ アカウント接続文字列に変更します。Change this setting to an actual storage account connection string before deployment.

ストレージ アカウントの接続文字列を設定するには、次のようにします。To set the storage account connection string:

  1. Visual Studio で Cloud Explorer を開き、 [ストレージ アカウント] > [Your Storage Account](ストレージ アカウント) を展開してから、 [プロパティ] タブで [プライマリ接続文字列] 値をコピーします。In Visual Studio, open Cloud Explorer, expand Storage Account > Your Storage Account, then in the Properties tab copy the Primary Connection String value.

  2. プロジェクトで、local.settings.json ファイルを開き、コピーした接続文字列に AzureWebJobsStorage キーの値を設定します。In your project, open the local.settings.json file and set the value of the AzureWebJobsStorage key to the connection string you copied.

  3. 前の手順を繰り返し、関数に必要なその他のすべての接続について、Values 配列に一意のキーを追加します。Repeat the previous step to add unique keys to the Values array for any other connections required by your functions.

プロジェクトに関数を追加するAdd a function to your project

C# クラス ライブラリ関数では、関数で使用されるバインドはコードで属性を適用することで定義されます。In C# class library functions, the bindings used by the function are defined by applying attributes in the code. 提供されているテンプレートから関数トリガーを作成する場合は、トリガー属性が適用されます。When you create your function triggers from the provided templates, the trigger attributes are applied for you.

  1. ソリューション エクスプローラーで、プロジェクト ノードを右クリックし、 [追加] > [新しいアイテム] の順に選択します。In Solution Explorer, right-click on your project node and select Add > New Item. [Azure 関数] を選択し、クラスの [名前] を入力して [追加] をクリックします。Select Azure Function, type a Name for the class, and click Add.

  2. トリガーを選択し、バインドのプロパティを設定して、 [作成] をクリックします。Choose your trigger, set the binding properties, and click Create. 次の例は、Queue Storage によってトリガーされる関数を作成する場合の設定を示しています。The following example shows the settings when creating a Queue storage triggered function.

    キューによってトリガーされる関数の作成

    このトリガーの例では、QueueStorage という名前のキーと共に接続文字列を使用します。This trigger example uses a connection string with a key named QueueStorage. この接続文字列の設定は、local.settings.json ファイルで定義する必要があります。This connection string setting must be defined in the local.settings.json file.

  3. 新しく追加されたクラスを確認します。Examine the newly added class. FunctionName 属性に関連付けられている、静的な Run メソッドが表示されています。You see a static Run method, that is attributed with the FunctionName attribute. この属性は、メソッドが関数のエントリ ポイントであることを示します。This attribute indicates that the method is the entry point for the function.

    たとえば、次の C# クラスは基本的な Queue Storage トリガー関数を表します。For example, the following C# class represents a basic Queue storage triggered function:

    using System;
    using Microsoft.Azure.WebJobs;
    using Microsoft.Azure.WebJobs.Host;
    using Microsoft.Extensions.Logging;
    
    namespace FunctionApp1
    {
        public static class Function1
        {
            [FunctionName("QueueTriggerCSharp")]
            public static void Run([QueueTrigger("myqueue-items", 
                Connection = "QueueStorage")]string myQueueItem, ILogger log)
            {
                log.LogInformation($"C# Queue trigger function processed: {myQueueItem}");
            }
        }
    }
    

    バインド固有の属性は、エントリ ポイント メソッドに指定された各バインド パラメーターに適用されます。A binding-specific attribute is applied to each binding parameter supplied to the entry point method. 属性ではパラメーターとしてバインド情報を取ります。The attribute takes the binding information as parameters. 前の例では、最初のパラメーターに QueueTrigger 属性が適用されています。これは、キューによってトリガーされる関数を意味します。In the previous example, the first parameter has a QueueTrigger attribute applied, indicating queue triggered function. キュー名および接続文字列の設定名は、パラメーターとして QueueTrigger 属性に渡されます。The queue name and connection string setting name are passed as parameters to the QueueTrigger attribute. 詳細については、Azure Functions での Azure Queue ストレージのバインドに関する記事を参照してください。For more information, see Azure Queue storage bindings for Azure Functions.

上記の手順を使用して、複数の関数を関数アプリ プロジェクトに追加できます。You can use the above procedure to add more functions to your function app project. プロジェクト内の各関数で異なるトリガーを使用できますが、1 つの関数には 1 つのトリガーのみを使用する必要があります。Each function in the project can have a different trigger, but a function must have exactly one trigger. 詳しくは、「Azure Functions でのトリガーとバインドの概念」をご覧ください。For more information, see Azure Functions triggers and bindings concepts.

バインドの追加Add bindings

トリガーと同じように、入力バインドと出力バインドも、バインド属性として関数に追加されます。As with triggers, input and output bindings are added to your function as binding attributes. 以下のように、関数にバインドを追加します。Add bindings to a function as follows:

  1. プロジェクトをローカル開発用に構成したことを確認します。Make sure you have configured the project for local development.

  2. 特定のバインディングに適した NuGet 拡張機能パッケージを追加します。Add the appropriate NuGet extension package for the specific binding. 詳細については、「Azure Functions でのトリガーとバインドの概念」の記事の「Visual Studio を使用したローカルでの C# 開発」を参照してください。For more information, see Local C# development using Visual Studio in the Triggers and Bindings article. バインド固有の NuGet パッケージの要件については、バインドの参照記事で確認できます。The binding-specific NuGet package requirements are found in the reference article for the binding. たとえば、Event Hubs トリガーのパッケージ要件については、Event Hubs のバインドの参照記事を参照してください。For example, find package requirements for the Event Hubs trigger in the Event Hubs binding reference article.

  3. バインドが必要なアプリ設定がある場合は、ローカル ファイルの設定Values コレクションに追加します。If there are app settings that the binding needs, add them to the Values collection in the local setting file. 関数がローカルで実行される場合は、これらの値が使用されます。These values are used when the function runs locally. 関数が Azure の関数アプリ で実行される場合は、関数アプリの設定が使用されます。When the function runs in the function app in Azure, the function app settings are used.

  4. 適切なバインド属性をメソッド シグネチャに追加します。Add the appropriate binding attribute to the method signature. 次の例では、キュー メッセージによって関数がトリガーされ、出力バインドによって、同じテキストの新しいキュー メッセージが別のキューに作成されます。In the following example, a queue message triggers the function, and the output binding creates a new queue message with the same text in a different queue.

    public static class SimpleExampleWithOutput
    {
        [FunctionName("CopyQueueMessage")]
        public static void Run(
            [QueueTrigger("myqueue-items-source", Connection = "AzureWebJobsStorage")] string myQueueItem, 
            [Queue("myqueue-items-destination", Connection = "AzureWebJobsStorage")] out string myQueueItemCopy,
            ILogger log)
        {
            log.LogInformation($"CopyQueueMessage function processed: {myQueueItem}");
            myQueueItemCopy = myQueueItem;
        }
    }
    

    Queue Storage への接続は、AzureWebJobsStorage 設定から取得されます。The connection to Queue storage is obtained from the AzureWebJobsStorage setting. 詳しくは、特定のバインドの参照記事をご覧ください。For more information, see the reference article for the specific binding.

この表は、Azure Functions の 2 つのメジャー バージョンのランタイムでサポートされているバインディングを示しています。This table shows the bindings that are supported in the two major versions of the Azure Functions runtime:

TypeType 1.x1.x 2.x12.x1 トリガーTrigger 入力Input OutputOutput
Blob StorageBlob storage
Cosmos DBCosmos DB
Event GridEvent Grid
Event HubsEvent Hubs
HTTP と WebhookHTTP & webhooks
Microsoft Graph
Excel テーブル
Microsoft Graph
Excel tables
Microsoft Graph
OneDrive ファイル
Microsoft Graph
OneDrive files
Microsoft Graph
Outlook メール
Microsoft Graph
Outlook email
Microsoft Graph
イベント
Microsoft Graph
events
Microsoft Graph
Auth トークン
Microsoft Graph
Auth tokens
Mobile AppsMobile Apps
Notification HubsNotification Hubs
Queue StorageQueue storage
SendGridSendGrid
Service BusService Bus
SignalRSignalR
Table StorageTable storage
TimerTimer
TwilioTwilio

1 2.x では、HTTP と Timer を除くすべてのバインドを登録する必要があります。1 In 2.x, all bindings except HTTP and Timer must be registered. バインディング拡張機能を登録する」を参照してください。See Register binding extensions.

関数のテストTesting functions

Azure Functions Core Tools を使用すると、ローカルの開発用コンピューター上で Azure Functions プロジェクトを実行できます。Azure Functions Core Tools lets you run Azure Functions project on your local development computer. Visual Studio から初めて関数を開始すると、これらのツールをインストールするよう求めるメッセージが表示されます。You are prompted to install these tools the first time you start a function from Visual Studio.

関数をテストするには、F5 キーを押します。To test your function, press F5. メッセージが表示されたら、Visual Studio からの要求に同意し、Azure Functions Core (CLI) ツールをダウンロードしてインストールします。If prompted, accept the request from Visual Studio to download and install Azure Functions Core (CLI) tools. また、ツールで HTTP 要求を処理できるようにファイアウォールの例外を有効にすることが必要になる場合もあります。You may also need to enable a firewall exception so that the tools can handle HTTP requests.

プロジェクトを実行して、デプロイ済みの関数をテストする場合と同じように、コードをテストできます。With the project running, you can test your code as you would test deployed function. 詳細については、「Azure Functions のコードをテストするための戦略」を参照してください。For more information, see Strategies for testing your code in Azure Functions. デバッグ モードで実行している場合は、予期したとおりに Visual Studio でブレークポイントがヒットします。When running in debug mode, breakpoints are hit in Visual Studio as expected.

Azure Functions Core Tools の使用の詳細については、「Azure Functions をローカルでコーディングしてテストする」を参照してください。To learn more about using the Azure Functions Core Tools, see Code and test Azure functions locally.

Azure に発行するPublish to Azure

Visual Studio から発行するときは、2 つのデプロイ方法のいずれかが使用されます。When publishing from Visual Studio, one of two deployment methods are used:

次の手順を使用して、プロジェクトを Azure 内の関数アプリに発行します。Use the following steps to publish your project to a function app in Azure.

  1. ソリューション エクスプローラーで、プロジェクトを右クリックし、 [発行] を選択します。In Solution Explorer, right-click the project and select Publish.

  2. [発行先を選択] ダイアログで、画像の下の表に指定されているように発行オプションを使用します。In the Pick a publish target dialog, use the publish options as specified in the table below the image:

    発行先の選択

    オプションOption 説明Description
    Azure Functions 従量課金プランAzure Functions Consumption plan 従量課金プランで実行される関数アプリにプロジェクトを発行する場合は、関数アプリの実行に対してのみ課金されます。When you publish your project to a function app that runs in a Consumption plan, you only pay for executions of your functions app. 他のホスティング プランでは、コストが高くなります。Other hosting plans incur higher costs. 詳細については、「Azure Functions のスケールとホスティング」を参照してください。To learn more, see Azure Functions scale and hosting.
    新規作成Create new 新しい関数アプリと関連リソースが、Azure に作成されます。A new function app, with related resources, is created in Azure. [既存のものを選択] を選択すると、Azure の既存の関数アプリ内のすべてのファイルがローカル プロジェクトのファイルによって上書きされます。When you choose Select Existing, all files in the existing function app in Azure are overwritten by files from the local project. このオプションは、既存の関数アプリへの更新を再発行する場合にのみ使用します。Only use this option when republishing updates to an existing function app.
    パッケージ ファイルから実行しますRun from package file 関数アプリは、Zip Deploy を使用して、Run-From-Package モードが有効な状態でデプロイされます。Your function app is deployed using Zip Deploy with Run-From-Package mode enabled. これは、関数を実行するために推奨される方法であり、パフォーマンスが向上します。This is the recommended way of running your functions, which results in better performance.
  3. [発行] を選択します。Select Publish. まだ Visual Studio から Azure アカウントにサインインしていない場合は、 [サインイン] を選択します。If you haven't already signed-in to your Azure account from Visual Studio, select Sign-in. 無料の Azure アカウントを作成することもできます。You can also create a free Azure account.

  4. App Service の [新規作成] ダイアログで、画像の下の表に指定されているようにホスティング設定を使用してください。In the App Service: Create new dialog, use the Hosting settings as specified in the table below the image:

    [App Service の作成] ダイアログ

    SettingSetting 推奨値Suggested value DescriptionDescription
    NameName グローバルに一意の名前Globally unique name 新しい関数アプリを一意に識別する名前。Name that uniquely identifies your new function app. 有効な文字は、a-z0-9、および - です。Valid characters are a-z, 0-9, and -.
    サブスクリプションSubscription サブスクリプションの選択Choose your subscription 使用する Azure サブスクリプション。The Azure subscription to use.
    リソース グループResource Group myResourceGroupmyResourceGroup 関数アプリを作成するリソース グループの名前。Name of the resource group in which to create your function app. 新しいリソース グループを作成する場合は、 [新規] を選択します。Choose New to create a new resource group.
    ホスティング プランHosting Plan 従量課金プランConsumption plan [新規] を選択してサーバーレス プランを作成した後は、必ず [サイズ] の下の [従量課金プラン] を選択します。Make sure to choose the Consumption under Size after you select New to create a serverless plan. また、[地域] で、自分に近いか、または自分の関数がアクセスする他のサービスに近い [場所] を選択します。Also, choose a Location in a region near you or near other services your functions access. [従量課金プラン] 以外のプランで実行する場合は、関数アプリのスケーリングを管理する必要があります。When you run in a plan other than Consumption, you must manage the scaling of your function app.
    Azure StorageAzure Storage 汎用ストレージ アカウントGeneral-purpose storage account Functions ランタイムには Azure Storage アカウントが必要です。An Azure storage account is required by the Functions runtime. [新規] を選択して汎用ストレージ アカウントを作成します。Select New to create a general-purpose storage account. または、ストレージ アカウントの要件を満たす既存のアカウントを使用することもできます。You can also use an existing account that meets the storage account requirements.
  5. [作成] を選択して、これらの設定で Azure に関数アプリと関連リソースを作成し、関数プロジェクト コードをデプロイします。Select Create to create a function app and related resources in Azure with these settings and deploy your function project code.

  6. デプロイが完了したら、 [サイトの URL] の値を書き留めておきます。これが Azure における関数アプリのアドレスになります。After the deployment is complete, make a note of the Site URL value, which is the address of your function app in Azure.

    発行成功のメッセージ

Function App の設定Function app settings

Local.settings.json で追加したすべての設定は、Azure の関数アプリにも追加する必要があります。Any settings you added in the local.settings.json must be also added to the function app in Azure. プロジェクトを発行するとき、これらの設定は自動的にアップロードされません。These settings are not uploaded automatically when you publish the project.

Azure の関数アプリに必要な設定をアップロードする最も簡単な方法として、プロジェクトが正常に発行された後に表示される [アプリケーション設定の管理] リンクを使用できます。The easiest way to upload the required settings to your function app in Azure is to use the Manage Application Settings... link that is displayed after you successfully publish your project.

これにより、関数アプリの [アプリケーションの設定] ダイアログが表示され、ここで新しいアプリケーション設定を追加したり、既存の設定を変更したりできます。This displays the Application Settings dialog for the function app, where you can add new application settings or modify existing ones.

[ローカル] は local.settings.json ファイル内の設定値を表し、 [リモート] は Azure での関数アプリにおける現在の設定です。Local represents a setting value in the local.settings.json file, and Remote is the current setting in the function app in Azure. 新しいアプリ設定を作成するには、 [設定の追加] を選択します。Choose Add setting to create a new app setting. [ローカルから値を挿入する] リンクを使用して、設定値を [リモート] フィールドにコピーします。Use the Insert value from Local link to copy a setting value to the Remote field. [OK] を選択すると、保留中の変更がローカル設定ファイルと関数アプリに書き込まれます。Pending changes are written to the local settings file and the function app when you select OK.

以下のいずれかの方法を使用して、アプリケーション設定を管理することもできます。You can also manage application settings in one of these other ways:

関数の監視Monitoring functions

関数の実行を監視するための推奨される方法は、関数アプリを Azure Application Insights と統合することです。The recommended way to monitor the execution of your functions is by integrating your function app with Azure Application Insights. Azure Portal で関数アプリを作成する場合、この統合は、既定で自動的に行われます。When you create a function app in the Azure portal, this integration is done for you by default. ただし、Visual Studio の発行中に関数アプリを作成する場合は、Azure で関数アプリの統合は実行されません。However, when you create your function app during Visual Studio publishing, the integration in your function app in Azure isn't done.

関数アプリ用に Application Insights を有効にするには:To enable Application Insights for your function app:

Functions を使用すると、Azure portal から関数アプリに Application Insights 統合を簡単に追加できます。Functions makes it easy to add Application Insights integration to a function app from the Azure portal.

  1. ポータル で、 [すべてのサービス] > [Function App] を選択し、関数アプリを選択してから、ウィンドウの上部にある Application Insights バナーを選択しますIn the portal, select All services > Function Apps, select your function app, and then select the Application Insights banner at the top of the window

    ポータルから Application Insights を有効にする

  2. 画像の下の表に指定されている設定を使用して、Application Insights リソースを作成します。Create an Application Insights resource by using the settings specified in the table below the image.

    Application Insights リソースの作成

    SettingSetting 推奨値Suggested value DescriptionDescription
    NameName 一意のアプリ名Unique app name 関数アプリと同じ名前を使用するのが最も簡単です。この名前は、サブスクリプション内で一意である必要があります。It's easiest to use the same name as your function app, which must be unique in your subscription.
    LocationLocation 西ヨーロッパWest Europe 可能であれば、お使いの関数アプリと同じリージョン、または近隣のリージョンを使用してください。If possible, use the same region as your function app, or one that's close to that region.
  3. [OK] を選択します。Select OK. Application Insights リソースは、関数アプリと同じリソース グループおよびサブスクリプションに作成されます。The Application Insights resource is created in the same resource group and subscription as your function app. リソースが作成されたら、Application Insights ウィンドウを閉じます。After the resource is created, close the Application Insights window.

  4. 対象の関数アプリに戻り、 [アプリケーション設定] を選択し、 [アプリケーション設定] まで下にスクロールします。Back in your function app, select Application settings, and then scroll down to Application settings. APPINSIGHTS_INSTRUMENTATIONKEY という設定が表示された場合は、Azure で実行されている関数アプリに対して Application Insights 統合が有効になっています。If you see a setting named APPINSIGHTS_INSTRUMENTATIONKEY, Application Insights integration is enabled for your function app running in Azure.

詳細については、「Azure Functions を監視する」を参照してください。To learn more, see Monitor Azure Functions.

次の手順Next steps

Azure Functions Core Tools の詳細については、「Azure Functions をローカルでコーディングしてテストする」を参照してください。To learn more about the Azure Functions Core Tools, see Code and test Azure functions locally.

.NET クラス ライブラリとしての関数の開発の詳細については、「Azure Functions C# developer reference (Azure Functions C# 開発者向けリファレンス)」を参照してください。To learn more about developing functions as .NET class libraries, see Azure Functions C# developer reference. この記事は、Azure Functions でサポートされる各種バインドを宣言するための属性の使用例にもリンクしています。This article also links to examples of how to use attributes to declare the various types of bindings supported by Azure Functions.