Visual Studio を使用して初めての関数を作成するCreate your first function using Visual Studio

Azure Functions を使用すると、最初に VM を作成したり Web アプリケーションを発行したりしなくても、サーバーレス環境でコードを実行できます。Azure Functions lets you execute your code in a serverless environment without having to first create a VM or publish a web application.

この記事では、Visual Studio 2019 を使用して、"hello world" 関数をローカルで作成およびテストしてから、それを Azure に発行する方法を学習します。In this article, you learn how to use Visual Studio 2019 to locally create and test a "hello world" function and then publish it to Azure. このクイックスタートは、Visual Studio 2019 用に設計されています。This quickstart is designed for Visual Studio 2019. Visual Studio 2017 を使用して Functions プロジェクトを作成している場合は、まず、最新の Azure Functions ツールをインストールする必要があります。When creating a Functions project using Visual Studio 2017, you must first install the latest Azure Functions tools.

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

前提条件Prerequisites

このチュートリアルを完了するには、まず、Visual Studio 2019 をインストールする必要があります。To complete this tutorial, you must first install Visual Studio 2019. Azure 開発ワークロードもインストールされていることを確認します。Make sure that the Azure development workload is also installed.

Azure 開発ワークロードと共に Visual Studio をインストールする

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

関数アプリ プロジェクトを作成するCreate a function app 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.

Visual Studio によってプロジェクトとクラスが作成されます。クラスの中には、HTTP トリガー関数型のスケルトン コードが含まれています。Visual Studio creates a project and class that contains boilerplate code for the HTTP trigger function type. メソッドの FunctionName 属性は、関数の名前を設定します。その名前は、既定では HttpTrigger です。The FunctionName attribute on the method sets the name of the function, which by default is HttpTrigger. HttpTrigger属性は、関数が HTTP 要求によってトリガーされることを指定します。The HttpTrigger attribute specifies that the function is triggered by an HTTP request. スケルトン コードは、要求本文またはクエリ文字列の値を含む HTTP 応答を送信します。The boilerplate code sends an HTTP response that includes a value from the request body or query string.

関数の機能は、メソッドに適切な属性を適用することによって、入力および出力バインディングを使用して拡張することができます。You can expand the capabilities of your function using input and output bindings by applying the appropriate attributes to the method. 詳細については、Azure Functions C# 開発者向けリファレンスの「トリガーとバインド」のセクションを参照してください。For more information, see the Triggers and bindings section of the Azure Functions C# developer reference.

関数プロジェクトと、HTTP によってトリガーされる関数を作成できたので、この関数をローカル コンピューターでテストすることができます。Now that you've created your function project and an HTTP-triggered function, you can test it on your local computer.

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

Visual Studio は Azure Functions Core Tools と統合されるため、完全な Functions ランタイムを使用してローカルに関数をテストできます。Visual Studio integrates with Azure Functions Core Tools so that you can test your functions locally using the full Functions runtime.

  1. 関数を実行するには、F5 キーを押します。To run your function, press F5. ツールで HTTP 要求を処理できるように、ファイアウォールの例外を有効にする必要がある場合もあります。You may need to enable a firewall exception so that the tools can handle HTTP requests. 承認レベルは、ローカルでの実行時には適用されません。Authorization levels are never enforced when running locally.

  2. Azure Functions のランタイムの出力から、関数の URL をコピーします。Copy the URL of your function from the Azure Functions runtime output.

    Azure ローカル ランタイム

  3. HTTP 要求の URL をブラウザーのアドレス バーに貼り付けます。Paste the URL for the HTTP request into your browser's address bar. この URL にクエリ文字列 ?name=<YOUR_NAME> を追加して、要求を実行します。Append the query string ?name=<YOUR_NAME> to this URL and execute the request. 関数によって返されたローカルの GET 要求に対するブラウザーでの応答を次に示します。The following shows the response in the browser to the local GET request returned by the function:

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

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

関数がローカル コンピューター上で正常に動作することを確認した後、プロジェクトを Azure に発行します。After you have verified that the function runs correctly on your local computer, it's time to publish the project to Azure.

Azure にプロジェクトを発行するPublish the project to Azure

プロジェクトを発行するには、Azure サブスクリプションに関数アプリがあることが必要です。You must have a function app in your Azure subscription before you can publish your project. 初めてプロジェクトを発行するときに、Visual Studio の発行機能によって、関数アプリが自動的に作成されます。Visual Studio publishing creates a function app for you the first time you publish your project.

  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. このオプションを使用しない場合は、関数アプリ プロジェクトがローカルで実行されないようにしたうえで、Azure に発行する必要があります。When not using this option, make sure to stop your function app project from running locally before you publish to Azure.
  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.

    発行成功のメッセージ

Azure で関数をテストするTest your function in Azure

  1. [発行プロファイル] ページから関数アプリのベース URL をコピーします。Copy the base URL of the function app from the Publish profile page. 関数をローカルでテストしたときに使用した URL の localhost:port 部分を新しいベース URL に置き換えます。Replace the localhost:port portion of the URL you used when testing the function locally with the new base URL. 前と同様に、この URL にクエリ文字列 ?name=<YOUR_NAME> を追加してから、要求を実行します。As before, make sure to append the query string ?name=<YOUR_NAME> to this URL and execute the request.

    HTTP によってトリガーされる関数を呼び出す URL は、次の形式である必要があります。The URL that calls your HTTP triggered function should be in the following format:

     http://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>?name=<YOUR_NAME> 
    
  2. HTTP 要求のこの新しい URL をブラウザーのアドレス バーに貼り付けます。Paste this new URL for the HTTP request into your browser's address bar. 関数によって返されたリモート GET 要求に対するブラウザーでの応答を次に示します。The following shows the response in the browser to the remote GET request returned by the function:

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

次の手順Next steps

Visual Studio を使用して、HTTP によってトリガーされる単純な関数を含む C# 関数アプリを作成して Azure に発行しました。You have used Visual Studio to create and publish a C# function app in Azure with a simple HTTP triggered function. .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.