Azure Functions Core Tools の操作Work with Azure Functions Core Tools

Azure Functions Core Tools を使用すると、ローカル コンピューター上のコマンド プロンプトまたはターミナルから関数を開発およびテストできます。Azure Functions Core Tools lets you develop and test your functions on your local computer from the command prompt or terminal. ローカル関数はライブ Azure サービスに接続できるため、完全な Functions ランタイムを使用してローカル コンピューター上で関数をデバッグすることができます。Your local functions can connect to live Azure services, and you can debug your functions on your local computer using the full Functions runtime. Azure サブスクリプションに関数アプリをデプロイすることもできます。You can even deploy a function app to your Azure subscription.

重要

同じ関数アプリにローカル開発とポータル開発を混在させないでください。Do not mix local development with portal development in the same function app. ローカル プロジェクトから関数を発行するときは、ポータルではプロジェクト コードを管理または変更しないようにしてください。When you create and publish functions from a local project, you should not try to maintain or modify project code in the portal.

Core Tools のバージョンCore Tools versions

Azure Functions Core Tools には、2 つのバージョンがあります。There are two versions of Azure Functions Core Tools. 使用するバージョンは、ローカル開発環境、選択した言語、および必要なサポートのレベルによって異なります。The version you use depends on your local development environment, choice of language, and level of support required:

  • バージョン 1.x: ランタイムのバージョン 1.x をサポートします。これは、一般公開 (GA) 段階です。Version 1.x: supports version 1.x of the runtime, which is Generally Available (GA). ツールのこのバージョンは Windows コンピューター上でのみサポートされ、npm パッケージからインストールされます。This version of the tools is only supported on Windows computers and is installed from an npm package. このバージョンでは、正式にサポートされていない試験段階の言語で関数を作成できます。With this version, you can create functions in experimental languages that are not officially supported. 詳細については、「Azure Functions でサポートされている言語」を参照してくださいFor more information, see Supported languages in Azure Functions

  • バージョン 2.x: ランタイムのバージョン 2.x をサポートします。Version 2.x: supports version 2.x of the runtime. このバージョンは、WindowsmacOS、および Linux に対応しています。This version supports Windows, macOS, and Linux. インストールには、プラットフォーム固有のパッケージ マネージャーまたは npm を使用します。Uses platform-specific package managers or npm for installation. 2.x ランタイムと同様に、Core Tools のこのバージョンは現在プレビュー段階です。Like the 2.x runtime, this version of the core tools is currently in preview.

特に記載がない限り、この記事の例ではバージョン 2.x を対象にしています。Unless otherwise noted, the examples in this article are for version 2.x.

Azure Functions Core Tools のインストールInstall the Azure Functions Core Tools

Azure Functions Core Tools は、Azure Functions ランタイムを実行するのと同じランタイムのバージョンを含み、ローカルの開発コンピューターで実行できます。Azure Functions Core Tools includes a version of the same runtime that powers Azure Functions runtime that you can run on your local development computer. また、このツールには、関数を作成し、Azure に接続し、関数プロジェクトをデプロイするためのコマンドも用意されています。It also provides commands to create functions, connect to Azure, and deploy function projects.

バージョン 1.xVersion 1.x

元のバージョンのツールは、Functions 1.x ランタイムを使用します。The original version of the tools uses the Functions 1.x runtime. このバージョンは .NET Framework (4.7.1) を使用し、Windows コンピューターでのみサポートされます。This version uses the .NET Framework (4.7.1) and is only supported on Windows computers. バージョン 1.x のツールをインストールする前に、npm を含む NodeJS をインストールする必要があります。Before you install the version 1.x tools, you must install NodeJS, which includes npm.

次のコマンドを使用して、バージョン 1.x ツールをインストールします。Use the following command to install the version 1.x tools:

npm install -g azure-functions-core-tools

バージョン 2.xVersion 2.x

注意

Azure Functions ランタイム 2.0 はプレビュー段階であり、現在のところ、Azure Functions のすべての機能はサポートされていません。Azure Functions runtime 2.0 is in preview, and currently not all features of Azure Functions are supported. 詳細については、Azure Functions のバージョンに関するページを参照してください。For more information, see Azure Functions versions

バージョン 2.x のツールは、.NET Core 上に構築されている Azure Functions ランタイム 2.x を使用します。Version 2.x of the tools uses the Azure Functions runtime 2.x that is built on .NET Core. このバージョンは、WindowsmacOS、および Linuxなど、.NET Core 2.x が対応しているすべてのプラットフォームでサポートされます。This version is supported on all platforms .NET Core 2.x supports, including Windows, macOS, and Linux.

WindowsWindows

次の手順では、npm を使用して Windows 上に Core Tools をインストールします。The following steps use npm to install Core Tools on Windows. また、Chocolatey を使用することもできます。You can also use Chocolatey. 詳細については、Core Tools の readme に関するページを参照してください。For more information, see the Core Tools readme.

  1. Windows 用 .NET Core 2.0 をインストールします。Install .NET Core 2.0 for Windows.

  2. Node.jsをインストールします。これには、npm が同梱されています。Install Node.js, which includes npm. 2x バージョンのツールの場合、Node.js 8.5 以降のバージョンのみがサポートされています。For version 2.x of the tools, only Node.js 8.5 and later versions are supported.

  3. 次のコマンドを使って、Core Tools のパッケージをインストールします。Install the Core Tools package:

    npm install -g azure-functions-core-tools@core
    

Homebrew による MacOSMacOS with Homebrew

次の手順では、Homebrew を使用して macOS 上に Core Tools をインストールします。The following steps use Homebrew to install the Core Tools on macOS.

  1. macOS 用 .NET Core 2.0 をインストールします。Install .NET Core 2.0 for macOS.

  2. まだインストールしていない場合は、Homebrew をインストールします。Install Homebrew, if it's not already installed.

  3. 次のコマンドを使って、Core Tools のパッケージをインストールします。Install the Core Tools package:

    brew tap azure/functions
    brew install azure-functions-core-tools 
    

APT による Linux (Ubuntu/Debian)Linux (Ubuntu/Debian) with APT

次の手順では APT を使用して、Ubuntu/Debian Linux ディストリビューションに Core Tools をインストールします。The following steps use APT to install Core Tools on your Ubuntu/Debian Linux distribution. 他の Linux ディストリビューションについては、Core Tools の readme に関するページを参照してください。For other Linux distributions, see the Core Tools readme.

  1. Linux 用 .NET Core 2.0 をインストールします。Install .NET Core 2.0 for Linux.

  2. 次のコマンドを使って、Microsoft プロダクト キーを信頼済みとして登録します。Register the Microsoft product key as trusted:

    curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
    sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
    
  3. Ubuntu サーバーで、次の表の該当するバージョンのいずれかが実行されていることを確認します。Verify your Ubuntu server is running one of the appropriate versions from the table below. apt ソースを追加するには、次のコマンドを実行します。To add the apt source, run:

    sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-$(lsb_release -cs)-prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/dotnetdev.list'
    sudo apt-get update
    
    Linux ディストリビューションLinux distribution バージョンVersion
    Ubuntu 17.10Ubuntu 17.10 artful
    Ubuntu 17.04Ubuntu 17.04 zesty
    Ubuntu 16.04/Linux Mint 18Ubuntu 16.04/Linux Mint 18 xenial
  4. 次のコマンドを使って、Core Tools のパッケージをインストールします。Install the Core Tools package:

    sudo apt-get install azure-functions-core-tools
    

ローカル関数プロジェクトを作成するCreate a local Functions project

関数プロジェクト ディレクトリには、host.json ファイル、local.settings.json ファイル、および個々の関数のコードを含むサブフォルダーが含まれています。A functions project directory contains the files host.json and local.settings.json, along subfolders that contain the code for individual functions. このディレクトリは、Azure の関数アプリに相当します。This directory is the equivalent of a function app in Azure. Functions のフォルダー構造の詳細については、Azure Functions の開発者向けガイドを参照してください。To learn more about the Functions folder structure, see the Azure Functions developers guide.

バージョン 2.x では、初期化時にプロジェクトの既定の言語を選択する必要があります。さらに、追加されたすべての関数で、既定の言語テンプレートが使用されます。Version 2.x requires you to select a default language for your project when it is initialized, and all functions added use default language templates. バージョン 1.x では、関数を作成するたびに言語を指定します。In version 1.x, you specify the language each time you create a function.

ターミナル ウィンドウまたはコマンド プロンプトで、次のコマンドを実行してプロジェクトおよびローカルの Git リポジトリを作成します。In the terminal window or from a command prompt, run the following command to create the project and local Git repository:

func init MyFunctionProj

バージョン 2.x では、コマンドを実行するときにプロジェクトのランタイムを選択する必要があります。In version 2.x, when you run the command you must choose a runtime for your project. JavaScript 関数を開発する場合は、node を選択します。If you plan to develop JavaScript functions, choose node:

Select a worker runtime:
dotnet
node

上/下方向キーを使用して言語を選択し、Enter キーを押します。Use the up/down arrow keys to choose a language, then press Enter. 出力は、次の JavaScript プロジェクトの例のようになります。The output looks like the following example for a JavaScript project:

Select a worker runtime: node
Writing .gitignore
Writing host.json
Writing local.settings.json
Writing C:\myfunctions\myMyFunctionProj\.vscode\extensions.json
Initialized empty Git repository in C:/myfunctions/myMyFunctionProj/.git/

ローカル Git リポジトリを使用せずにプロジェクトを作成する場合は、--no-source-control [-n] オプションを使用します。To create the project without a local Git repository, use the --no-source-control [-n] option.

拡張機能を登録するRegister extensions

Azure Functions ランタイムのバージョン 2.x では、関数アプリで使用するバインディング拡張機能 (バインディングの種類) を明示的に登録する必要があります。In version 2.x of the Azure Functions runtime, you have to explicitly register the binding extensions (binding types) that you use in your function app.

ローカルで関数を開発するときは、ターミナルまたはコマンド プロンプトから Azure Functions Core Tools を使って、必要な拡張機能をインストールできます。When you develop functions locally, you can install the extensions you need by using the Azure Functions Core Tools from the Terminal or from a command prompt.

関数に必要なすべてのバインドを含むように function.json ファイルを更新した後、プロジェクト フォルダーで func extensions install コマンドを実行します。After you have updated your function.json file to include all the bindings that your function needs, run the func extensions install command in the project folder. コマンドで function.json ファイルを読み取り、必要なパッケージを確認してからインストールします。The command reads the function.json file to see which packages you need and then installs them.

特定のバージョンのパッケージをインストールする場合、または function.json ファイルを編集する前にパッケージをインストールする場合は、次の例のように func extensions install コマンドと共にパッケージ名を指定します。If you want to install a particular version of a package or you want to install packages before editing the function.json file, use the func extensions install command with the name of the package, as shown in the following example:

func extensions install --package Microsoft.Azure.WebJobs.ServiceBus --version <target_version>

<target_version> をパッケージの特定のバージョン (3.0.0-beta5など) に置き換えます。Replace <target_version> with a specific version of the package, such as 3.0.0-beta5. 有効なバージョンは、NuGet.org の個々のパッケージ ページに記載されています。Valid versions are listed on the individual package pages at NuGet.org.

詳しくは、「Azure Functions でのトリガーとバインドの概念」をご覧ください。For more information, see Azure Functions triggers and bindings concepts.

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

local.settings.json ファイルには、アプリの設定、接続文字列、および Azure Functions Core Tools の設定が格納されます。The file local.settings.json stores app settings, connection strings, and settings for Azure Functions Core Tools. その構造を次に示します。It has the following structure:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "<connection-string>",
    "AzureWebJobsDashboard": "<connection-string>",
    "MyBindingConnection": "<binding-connection-string>"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*"
  },
  "ConnectionStrings": {
    "SQLConnectionString": "Value"
  }
}
SettingSetting 説明Description
IsEncryptedIsEncrypted true に設定すると、すべての値がローカル コンピューターのキーを使用して暗号化されます。When set to true, all values are encrypted using a local machine key. func settings コマンドと共に使用されます。Used with func settings commands. 既定値は false です。Default value is false.
Values ローカルで実行するときに使用されるアプリケーション設定と接続文字列のコレクションです。Collection of application settings and connection strings used when running locally. これらの値は、AzureWebJobsStorageAzureWebJobsDashboard など、Azure 内の関数アプリのアプリ設定に対応します。These values correspond to app settings in your function app in Azure, such as AzureWebJobsStorage and AzureWebJobsDashboard. 多くのトリガーおよびバインドには、BLOB Storage トリガーConnection など、接続文字列アプリ設定を参照するプロパティがあります。Many triggers and bindings have a property that refers to a connection string app setting, such as Connection for the Blob storage trigger. このようなプロパティでは、Values 配列にアプリケーション設定を定義する必要があります。For such properties, you need an application setting defined in the Values array.
AzureWebJobsStorage は、HTTP 以外のトリガーに必要なアプリ設定です。AzureWebJobsStorage is a required app setting for triggers other than HTTP. Azure ストレージ エミュレーターがローカルにインストールされている場合は、AzureWebJobsStorageUseDevelopmentStorage=true に設定できます。Core Tools はエミュレーターを使用します。When you have the Azure storage emulator installed locally, you can set AzureWebJobsStorage to UseDevelopmentStorage=true and Core Tools uses the emulator. これは開発中には便利ですが、展開する前に実際のストレージに接続してテストする必要があります。This is useful during development, but you should test with an actual storage connection before deployment.
HostHost このセクションの設定により、ローカルで実行時の Functions ホスト プロセスをカスタマイズできます。Settings in this section customize the Functions host process when running locally.
LocalHttpPortLocalHttpPort ローカルの 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 value.
CORSCORS クロス オリジン リソース共有 (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.
ConnectionStringsConnectionStrings 関数のバインディングで使用される接続文字列にこのコレクションを使用しないでください。Do not use this collection for the connection strings used by your function bindings. このコレクションは、Entity Framework など、構成ファイルの ConnectionStrings セクションから接続文字列を取得する必要があるフレームワークでのみ使用されます。This collection is only used by frameworks that must get connection strings from the ConnectionStrings section of a configuration file, such as 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 are not published to Azure with other app settings. 関数アプリのアプリケーション設定接続文字列セクションに、これらの値を明示的に追加する必要があります。You must explicitly add these values to the Connection strings section of the Application settings for your function app.

関数アプリの設定値は、コードの中で環境変数として読み込むこともできます。The function app settings values can also be read in your code as environment variables. 詳細については、以下の言語固有のリファレンス トピックの「環境変数」のセクションを参照してください。For more information, see the Environment variables section of these language-specific reference topics:

local.settings.json ファイル内の設定は、ローカルで実行されている Functions ツールでのみ使用されます。Settings in the local.settings.json file are only used by Functions tools when running locally. 既定では、プロジェクトが Azure に発行されても、これらの設定は自動的に移行されません。By default, these settings are not migrated automatically when the project is published to Azure. 発行する際--publish-local-settings スイッチを使用して、これらの設定が Azure 内の関数アプリに追加されていることを確認してください。Use the --publish-local-settings switch when you publish to make sure these settings are added to the function app in Azure. ConnectionStrings 内の値は発行されません。Values in ConnectionStrings are never published.

有効なストレージ接続文字列が AzureWebJobsStorage に設定されておらず、エミュレーターが使用されていない場合は、次のエラー メッセージが表示されます。When no valid storage connection string is set for AzureWebJobsStorage and the emulator isn't being used, the following error message is shown:

local.settings.json に AzureWebJobsStorage の値がありません。Missing value for AzureWebJobsStorage in local.settings.json. これは HTTP 以外のすべてのトリガーに必要です。This is required for all triggers other than HTTP. "func azure functionapp fetch-app-settings " を実行するか、local.settings.json で接続文字列を指定することができます。You can run 'func azure functionapp fetch-app-settings ' or specify a connection string in local.settings.json.

ストレージ接続文字列の取得Get your storage connection strings

開発のためにストレージ エミュレーターを使用している場合であっても、実際のストレージに接続してテストすることができます。Even when using the storage emulator for development, you may want to test with an actual storage connection. ストレージ アカウントを作成済みである場合は、次の方法のいずれかで、有効なストレージ接続文字列を取得できます。Assuming you have already created a storage account, you can get a valid storage connection string in one of the following ways:

  • Azure Portalから設定。From the Azure portal. ストレージ アカウントに移動し、設定アクセス キーを選択してから、いずれかの接続文字列の値をコピーします。Navigate to your storage account, select Access keys in Settings, then copy one of the Connection string values.

    Azure Portal から接続文字列をコピーする

  • Azure Storage Explorer を使用して、Azure アカウントに接続します。Use Azure Storage Explorer to connect to your Azure account. Explorer でサブスクリプションを展開し、ストレージ アカウントを選択して、プライマリまたはセカンダリの接続文字列をコピーします。In the Explorer, expand your subscription, select your storage account, and copy the primary or secondary connection string.

    Storage Explorer から接続文字列をコピーする

  • Core Tools を使用して、次のコマンドのいずれで Azure から接続文字列をダウンロードします。Use Core Tools to download the connection string from Azure with one of the following commands:

    • 既存の関数アプリからすべての設定をダウンロードします。Download all settings from an existing function app:

      func azure functionapp fetch-app-settings <FunctionAppName>
      
    • 特定のストレージ アカウントの接続文字列を取得します。Get the Connection string for a specific storage account:

      func azure storage fetch-connection-string <StorageAccountName>
      

      Azure にまだサインインしていない場合は、サインインするように求められます。When you are not already signed in to Azure, you are prompted to do so.

関数を作成するCreate a function

関数を作成するには、次のコマンドを実行します。To create a function, run the following command:

func new

バージョン 2.x では、func new を実行したときに関数アプリの既定の言語のテンプレートを選択するように求められ、次に関数の名前を選択するように求められます。In version 2.x, when you run func new you are prompted to choose a template in the default language of your function app, then you are also prompted to choose a name for your function. バージョン 1.x では、さらに言語を選択するように求められます。In version 1.x, you are also prompted to choose the language.

Select a language: Select a template:
Blob trigger
Cosmos DB trigger
Event Grid trigger
HTTP trigger
Queue trigger
SendGrid
Service Bus Queue trigger
Service Bus Topic trigger
Timer trigger

次のキュー トリガーの出力に示すように、指定した関数名のサブフォルダーに関数のコードが生成されます。Function code is generated in a subfolder with the provided function name, as you can see in the following queue trigger output:

Select a language: Select a template: Queue trigger
Function name: [QueueTriggerJS] MyQueueTrigger
Writing C:\myfunctions\myMyFunctionProj\MyQueueTrigger\index.js
Writing C:\myfunctions\myMyFunctionProj\MyQueueTrigger\readme.md
Writing C:\myfunctions\myMyFunctionProj\MyQueueTrigger\sample.dat
Writing C:\myfunctions\myMyFunctionProj\MyQueueTrigger\function.json

次の引数を使用して、コマンドでこれらのオプションを指定することもできます。You can also specify these options in the command using the following arguments:

引数Argument 説明Description
--language -l テンプレート プログラミング言語。C#、F#、JavaScript など。The template programming language, such as C#, F#, or JavaScript. このオプションは、バージョン 1.x で必須です。This option is required in version 1.x. バージョン 2.x では、このオプションを使用したり、プロジェクトの既定の言語を選択したりしないでください。In version 2.x, do not use this option or choose the default language of your project.
--template -t テンプレート名。次のいずれかの値になります。The template name, which can be one of the values:
  • Blob trigger
  • Cosmos DB trigger
  • Event Grid trigger
  • HTTP trigger
  • Queue trigger
  • SendGrid
  • Service Bus Queue trigger
  • Service Bus Topic trigger
  • Timer trigger
--name -n 関数名。The function name.

たとえば、JavaScript HTTP トリガーを 1 つのコマンドで作成するには、次を実行します。For example, to create a JavaScript HTTP trigger in a single command, run:

func new --template "Http Trigger" --name MyHttpTrigger

キューによってトリガーされる関数を 1 つのコマンドで作成するには、次を実行します。To create a queue-triggered function in a single command, run:

func new --template "Queue Trigger" --name QueueTriggerJS

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

Functions プロジェクトを実行するには、Functions ホストを実行します。To run a Functions project, run the Functions host. ホストによって、プロジェクトのすべての関数に対するトリガーが有効になります。The host enables triggers for all functions in the project:

func host start

func host start では、次のオプションがサポートされています。func host start supports the following options:

オプションOption 説明Description
--port -p ローカル ポート。このポートでリッスンします。The local port to listen on. 既定値: 7071。Default value: 7071.
--debug <type> Visual Studio Code または Visual Studio 2017 から func.exe プロセスにアタッチできるように、デバッグ ポートを開いた状態でホストを起動します。Starts the host with the debug port open so that you can attach to the func.exe process from Visual Studio Code or Visual Studio 2017. <type> オプションは VSCodeVS です。The <type> options are VSCode and VS.
--cors CORS オリジンのコンマ区切りのリスト (スペースなし)。A comma-separated list of CORS origins, with no spaces.
--nodeDebugPort -n 使用するノード デバッガーのポート。The port for the node debugger to use. 既定値: launch.json または 5858 の値。Default: A value from launch.json or 5858.
--debugLevel -d コンソール トレース レベル (オフ、詳細、情報、警告、またはエラー)。The console trace level (off, verbose, info, warning, or error). 既定値: 情報。Default: Info.
--timeout -t Functions ホスト開始のタイムアウト (秒単位)。The timeout for the Functions host to start, in seconds. 既定値: 20 秒。Default: 20 seconds.
--useHttps http://localhost:{port} ではなく https://localhost:{port} にバインドします。Bind to https://localhost:{port} rather than to http://localhost:{port}. 既定では、このオプションにより、信頼された証明書がコンピューターに作成されます。By default, this option creates a trusted certificate on your computer.
--pause-on-error プロセスを終了する前に、追加入力を一時停止します。Pause for additional input before exiting the process. Visual Studio または VS Code から Core Tools を起動するときに使用します。Used when launching Core Tools from Visual Studio or VS Code.

Functions ホストの起動時、HTTP によってトリガーされる関数の URL が出力されます。When the Functions host starts, it outputs the URL of HTTP-triggered functions:

Found the following functions:
Host.Functions.MyHttpTrigger

Job host started
Http Function MyHttpTrigger: http://localhost:7071/api/MyHttpTrigger

関数へのテスト データの受け渡しPassing test data to a function

関数をローカルでテストするには、Functions ホストを起動し、HTTP 要求を使用してローカル サーバーでエンドポイントを呼び出します。To test your functions locally, you start the Functions host and call endpoints on the local server using HTTP requests. 呼び出すエンドポイントは、関数の種類によって異なります。The endpoint you call depends on the type of function.

注意

このトピックの例では、cURL ツールを使用して端末またはコマンド プロンプトから HTTP 要求を送信します。Examples in this topic use the cURL tool to send HTTP requests from the terminal or a command prompt. お好みのツールを使用して HTTP 要求をローカル サーバーに送信できます。You can use a tool of your choice to send HTTP requests to the local server. Linux ベースのシステムでは既定で cURL ツールを使用できます。The cURL tool is available by default on Linux-based systems. Windows では、最初にダウンロードし、cURL ツールをインストールする必要があります。On Windows, you must first download and install the cURL tool.

関数のテストの全般的な情報については、「Azure Functions のコードをテストするための戦略」を参照してください。For more general information on testing functions, see Strategies for testing your code in Azure Functions.

HTTP と webhook でトリガーされる関数HTTP and webhook triggered functions

次のエンドポイントを呼び出して、HTTP と webhook でトリガーされる関数をローカルで実行できます。You call the following endpoint to locally run HTTP and webhook triggered functions:

http://localhost:{port}/api/{function_name}

Functions ホストがリッスンしているのと同じサーバー名とポートを使用していることを確認してください。Make sure to use the same server name and port that the Functions host is listening on. これは、Functions ホストの起動時に生成される出力で確認できます。You see this in the output generated when starting the Function host. トリガーでサポートされている任意の HTTP メソッドを使用して、この URL を呼び出すことができます。You can call this URL using any HTTP method supported by the trigger.

次の cURL コマンドは、MyHttpTrigger クイックスタート関数を、クエリ文字列で渡された name パラメーターを使用して、GET 要求からトリガーします。The following cURL command triggers the MyHttpTrigger quickstart function from a GET request with the name parameter passed in the query string.

curl --get http://localhost:7071/api/MyHttpTrigger?name=Azure%20Rocks

次の例は、要求本文で name を渡す POST 要求から呼び出される同じ関数です。The following example is the same function called from a POST request passing name in the request body:

curl --request POST http://localhost:7071/api/MyHttpTrigger --data '{"name":"Azure Rocks"}'

ブラウザーから GET 要求を行ってクエリ文字列でデータを渡すことが可能です。You can make GET requests from a browser passing data in the query string. その他すべての HTTP メソッドについては、cURL、Fiddler、Postman、または類似の HTTP テスト ツールを使用する必要があります。For all other HTTP methods, you must use cURL, Fiddler, Postman, or a similar HTTP testing tool.

HTTP でトリガーされない関数Non-HTTP triggered functions

HTTP トリガーと webhook を除く、あらゆる種類の関数の場合、管理エンドポイントを呼び出すことによって、関数をローカルでテストできます。For all kinds of functions other than HTTP triggers and webhooks, you can test your functions locally by calling an administration endpoint. HTTP POST 要求を使ってローカル サーバーでこのエンドポイントを呼び出すと、関数がトリガーされます。Calling this endpoint with an HTTP POST request on the local server triggers the function. 必要に応じて、POST 要求の本体でテスト データを実行に渡すことができます。You can optionally pass test data to the execution in the body of the POST request. この機能は、Azure Portal の [テスト] タブに似ています。This functionality is similar to the Test tab in the Azure portal.

次の管理者エンドポイントを呼び出して、非 HTTP 関数をトリガーします。You call the following administrator endpoint to trigger non-HTTP functions:

http://localhost:{port}/admin/functions/{function_name}

テスト データを関数の管理者エンドポイントに渡すには、そのデータを POST 要求メッセージの本文で提供する必要があります。To pass test data to the administrator endpoint of a function, you must supply the data in the body of a POST request message. メッセージ本文は、次の JSON 形式にする必要があります。The message body is required to have the following JSON format:

{
    "input": "<trigger_input>"
}

<trigger_input> 値には、関数が必要とする形式でデータが含まれています。The <trigger_input> value contains data in a format expected by the function. 次の cURL の例は、QueueTriggerJS 関数に対する POST です。The following cURL example is a POST to a QueueTriggerJS function. この場合、入力は、キューにあることが期待されるメッセージに相当する文字列です。In this case, the input is a string that is equivalent to the message expected to be found in the queue.

curl --request POST -H "Content-Type:application/json" --data '{"input":"sample queue data"}' http://localhost:7071/admin/functions/QueueTriggerJS

バージョン 1.x での func run コマンドの使用Using the func run command in version 1.x

重要

func run コマンドは、ツールのバージョン 2.x ではサポートされていません。The func run command is not supported in version 2.x of the tools. 詳細については、「Azure Functions ランタイム バージョンをターゲットにする方法」を参照してください。For more information, see the topic How to target Azure Functions runtime versions.

func run <FunctionName> を使用して関数を直接呼び出し、関数の入力データを渡すこともできます。You can also invoke a function directly by using func run <FunctionName> and provide input data for the function. このコマンドは、Azure Portal の [テスト] タブを使用して関数を実行するのと似ています。This command is similar to running a function using the Test tab in the Azure portal.

func run では、次のオプションがサポートされています。func run supports the following options:

オプションOption 説明Description
--content -c インライン コンテンツ。Inline content.
--debug -d 関数を実行する前に、デバッガーを、ホスト プロセスにアタッチします。Attach a debugger to the host process before running the function.
--timeout -t Functions ホストの準備が完了するまでの待機時間 (秒単位)。Time to wait (in seconds) until the local Functions host is ready.
--file -f コンテンツとして使用するファイル名。The file name to use as content.
--no-interactive 入力を促しません。Does not prompt for input. 自動シナリオで便利です。Useful for automation scenarios.

たとえば、HTTP によってトリガーされる関数を呼び出して、コンテンツ本文を渡すには、次のコマンドを実行します。For example, to call an HTTP-triggered function and pass content body, run the following command:

func run MyHttpTrigger -c '{\"name\": \"Azure\"}'

ログ ファイルをローカルに表示するViewing log files locally

ローカルに実行している Functions ホストは、次のパスにログを書き込みます。When the Functions host runs locally, it writes logs to the following path:

<DefaultTempDirectory>\LogFiles\Application\Functions

Windows では、<DefaultTempDirectory> は TMP、TEMP、USERPROFILE 環境変数、または Windows ディレクトリで最初に見つかった値です。On Windows, <DefaultTempDirectory> is the first found value of the TMP, TEMP, USERPROFILE environment variables, or the Windows directory. MacOS または Linux では、<DefaultTempDirectory> は TMPDIR 環境変数です。On MacOS or Linux, <DefaultTempDirectory> is the TMPDIR environment variable.

注意

Functions ホストは、開始するときに、ディレクトリ内の既存のファイル構造を上書きします。When the Functions host starts, it overwrites the existing file structure in the directory.

Azure に発行するPublish to Azure

Azure で Functions プロジェクトを関数アプリに発行するには、publish コマンドを使用します。To publish a Functions project to a function app in Azure, use the publish command:

func azure functionapp publish <FunctionAppName>

以下のオプションを使用できます。You can use the following options:

オプションOption 説明Description
--publish-local-settings -i local.settings.json の設定を Azure に発行し、設定が既に存在する場合は上書きを促します。Publish settings in local.settings.json to Azure, prompting to overwrite if the setting already exists. ストレージ エミュレーターを使用している場合は、アプリ設定を実際のストレージ接続に変更します。If you are using the storage emulator, you change the app setting to an actual storage connection.
--overwrite-settings -y -i で使用する必要があります。Must be used with -i. 値が異なる場合は、Azure の AppSettings をローカル値で上書きします。Overwrites AppSettings in Azure with local value if different. 既定値は prompt です。Default is prompt.

このコマンドは、Azure で既存の関数アプリに公開されるコマンドです。This command publishes to an existing function app in Azure. <FunctionAppName> がサブスクリプションに存在しない場合は、エラーが発生します。An error occurs when the <FunctionAppName> doesn't exist in your subscription. Azure CLI を使用してコマンド プロンプトまたはターミナル ウィンドウから関数アプリを作成する方法については、「サーバーレス実行用の Function App を作成する」を参照してください。To learn how to create a function app from the command prompt or terminal window using the Azure CLI, see Create a Function App for serverless execution.

publish コマンドは、Functions プロジェクト ディレクトリのコンテンツをアップロードします。The publish command uploads the contents of the Functions project directory. ローカルでファイルを削除する場合、publish コマンドではファイルは Azure から削除されません。If you delete files locally, the publish command does not delete them from Azure. Azure 内のファイルは、Azure PortalKudu ツール を使用することで削除できます。You can delete files in Azure by using the Kudu tool in the Azure portal.

重要

Azure で関数アプリを作成すると、既定でバージョン 1.x の Function ランタイムが使用されます。When you create a function app in Azure, it uses version 1.x of the Function runtime by default. 関数アプリでバージョン 2.x のランタイムを使用するには、アプリケーション設定 FUNCTIONS_EXTENSION_VERSION=beta を追加します。To make the function app use version 2.x of the runtime, add the application setting FUNCTIONS_EXTENSION_VERSION=beta.
次の Azure CLI コードを使用して、この設定を関数アプリに追加します。Use the following Azure CLI code to add this setting to your function app:

az functionapp config appsettings set --name <function_app> \
--resource-group myResourceGroup \
--settings FUNCTIONS_EXTENSION_VERSION=beta   

次の手順Next steps

Azure Functions Core Tools はオープン ソースであり、GitHub でホストされていますAzure Functions Core Tools is open source and hosted on GitHub.
バグまたは機能要求を提出するには、GitHub の問題をオープンしてください。To file a bug or feature request, open a GitHub issue.