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:

特に記載がない限り、この記事の例ではバージョン 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) を使用し、Windows コンピューターでのみサポートされます。This version uses the .NET Framework (4.7) 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@v1

バージョン 2.xVersion 2.x

バージョン 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.1 をインストールします。Install .NET Core 2.1 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
    

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.1 をインストールします。Install .NET Core 2.1 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.1 をインストールします。Install .NET Core 2.1 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 VersionVersion
    Ubuntu 18.04Ubuntu 18.04 bionic
    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 with 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

プロジェクト名を指定すると、その名前の新しいフォルダーの作成と初期化が実行されます。When you provide a project name, a new folder with that name is created and initialized. それ以外の場合は、現在のフォルダーが初期化されます。Otherwise, the current folder is initialized.
バージョン 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/

func init では、次のオプションがサポートされています。特に注意書きがない限り、バージョン 2.x だけが対象です。func init supports the following options, which are version 2.x-only, unless otherwise noted:

オプションOption 説明Description
--csx C# スクリプト (.csx) プロジェクトを初期化します。Initializes a C# script (.csx) project. 後続のコマンドで、--csx を指定する必要があります。You must specify --csx in subsequent commands.
--docker 選択した --worker-runtime に基づく基本イメージを使用して、コンテナーの Dockerfile を作成します。Create a Dockerfile for a container using a base image that is based on the chosen --worker-runtime. カスタム Linux コンテナーに発行する場合は、このオプションを使用します。Use this option when you plan to publish to a custom Linux container.
--force プロジェクトに既存のファイルがある場合でも、プロジェクトを初期化します。Initialize the project even when there are existing files in the project. この設定は、同じ名前の既存のファイルを上書きします。This setting overwrites existing files with the same name. プロジェクト フォルダー内の他のファイルには影響ありません。Other files in the project folder aren't affected.
--no-source-control -n バージョン 1.x での Git リポジトリの既定の作成を禁止します。Prevents the default creation of a Git repository in version 1.x. バージョン 2.x では、Git リポジトリは既定では作成されません。In version 2.x, the git repository isn't created by default.
--source-control Git リポジトリを作成するかどうかを制御します。Controls whether a git repository is created. 既定では、リポジトリは作成されません。By default, a repository isn't created. true を指定すると、リポジトリが作成されます。When true, a repository is created.
--worker-runtime プロジェクトの言語ランタイムを設定します。Sets the language runtime for the project. サポートされる値は、dotnetnode (JavaScript)、java です。Supported values are dotnet, node (JavaScript), and java. 設定しないと、初期化中にランタイムの選択を求められます。When not set, you are prompted to choose your runtime during initialization.

重要

既定では、Core Tools のバージョン 2.x では、.NET ランタイムの関数アプリ プロジェクトは C# クラス プロジェクト (.csproj) として作成されます。By default, version 2.x of the Core Tools creates function app projects for the .NET runtime as C# class projects (.csproj). Visual Studio または Visual Studio Code で使用できるこれらの C# プロジェクトは、テスト中および Azure への発行時にコンパイルされます。These C# projects, which can be used with Visual Studio or Visual Studio Code, are compiled during testing and when publishing to Azure. バージョン 1.x およびポータルで作成される同じ C# スクリプト (.csx) ファイルを代わりに作成および使用したい場合は、関数を作成して展開するときに、--csx パラメーターを指定する必要があります。If you instead want to create and work with the same C# script (.csx) files created in version 1.x and in the portal, you must include the --csx parameter when you create and deploy functions.

拡張機能を登録する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 ファイルを更新した後、プロジェクト フォルダーで以下のコマンドを実行します。After you have updated your function.json file to include all the bindings that your function needs, run the following command in the project folder.

func extensions install

コマンドは、function.json ファイルを読み取って必要なパッケージを確認して、パッケージをインストールして、拡張プロジェクトを再構築します。The command reads the function.json file to see which packages you need, installs them, and rebuilds the extensions project. 現在のバージョンで新しいバインドが追加されますが、既存のバインドは更新されません。It adds any new bindings at the current version but does not update existing bindings. 新しいバージョンをインストールするときに、--force オプションを使用して既存のバインドを最新バージョンに更新します。Use the --force option to update existing bindings to the latest version when installing new ones.

特定のバージョンのパッケージをインストールする場合、または 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. 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 内の値は発行されないことに注意してください。Note that values in ConnectionStrings are never published. ファイルの構造は次のとおりです。The file has the following structure:

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "<language worker>",
    "AzureWebJobsStorage": "<connection-string>",
    "AzureWebJobsDashboard": "<connection-string>",
    "MyBindingConnection": "<binding-connection-string>"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*"
  },
  "ConnectionStrings": {
    "SQLConnectionString": "<sqlclient-connection-string>"
  }
}
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 typically 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 collection of your function app settings. 関数のコードで SqlConnection を作成する場合は、接続文字列の値を他の接続と共にアプリケーションの設定に格納する必要があります。If you are creating a SqlConnection in your function code, you should store the connection string value in Application settings with your other connections.

関数アプリの設定値は、コードの中で環境変数として読み込むこともできます。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:

有効なストレージ接続文字列が 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 ポータルから設定。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
--csx (バージョン 2.x) バージョン 1.x およびポータルで使用されるものと同じ C# スクリプト (.csx) テンプレートを生成します。(Version 2.x) Generates the same C# script (.csx) templates used in version 1.x and in the portal.
--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 では、このオプションを使用しないか、または worker ランタイムと一致する言語を選択してください。In version 2.x, do not use this option or choose a language that matches the worker runtime.
--name -n 関数名。The function name.
--template -t サポートされている各言語で使用可能なテンプレートの完全な一覧を表示するには、func templates list コマンドを使います。Use the func templates list command to see the complete list of available templates for each supported language.

たとえば、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

host コマンドは、バージョン 1.x でのみ必要です。The host command is only required in version 1.x.

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

オプションOption 説明Description
--build 実行前に現在のプロジェクトをビルドします。Build current project before running. バージョン 2.x と C# プロジェクトのみ。Version 2.x and C# projects only.
--cert 秘密キーが含まれる .pfx ファイルへのパス。The path to a .pfx file that contains a private key. --useHttps でのみ使用されます。Only used with --useHttps. Version 2.x のみ。Version 2.x only.
--cors CORS オリジンのコンマ区切りのリスト (スペースなし)。A comma-separated list of CORS origins, with no spaces.
--debug 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. 有効な値は VSCodeVS です。Valid values are VSCode and VS.
--language-worker 言語ワーカーを構成するための引数。Arguments to configure the language worker. Version 2.x のみ。Version 2.x only.
--nodeDebugPort -n 使用するノード デバッガーのポート。The port for the node debugger to use. 既定値: launch.json または 5858 の値。Default: A value from launch.json or 5858. バージョン 1.x のみ。Version 1.x only.
--password .pfx ファイルのパスワードまたはパスワードが格納されているファイルのいずれか。Either the password or a file that contains the password for a .pfx file. --cert でのみ使用されます。Only used with --cert. Version 2.x のみ。Version 2.x only.
--port -p ローカル ポート。このポートでリッスンします。The local port to listen on. 既定値: 7071。Default value: 7071.
--pause-on-error プロセスを終了する前に、追加入力を一時停止します。Pause for additional input before exiting the process. 統合開発環境 (IDE) から Core Tools を起動した場合にのみ使用されます。Used only when launching Core Tools from an integrated development environment (IDE).
--script-root --prefix 実行または展開される関数アプリのルートへのパスを指定するために使用されます。Used to specify the path to the root of the function app that is to be run or deployed. これは、サブフォルダーにプロジェクト ファイルを生成するコンパイル済みプロジェクトに使用されます。This is used for compiled projects that generate project files into a subfolder. たとえば、C# クラス ライブラリ プロジェクトをビルドすると、host.json、local.settings.json、および function.json ファイルが、MyProject/bin/Debug/netstandard2.0 のようなパスの "ルート" サブフォルダーに生成されます。For example, when you build a C# class library project, the host.json, local.settings.json, and function.json files are generated in a root subfolder with a path like MyProject/bin/Debug/netstandard2.0. この場合は、プレフィックスを --script-root MyProject/bin/Debug/netstandard2.0 と設定します。In this case, set the prefix as --script-root MyProject/bin/Debug/netstandard2.0. これは、Azure で実行する場合の関数アプリのルートです。This is the root of the function app when running in Azure.
--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.

C# クラス ライブラリ プロジェクト (.csproj) の場合は、ライブラリの .dll を生成するための --build オプションを含める必要があります。For a C# class library project (.csproj), you must include the --build option to generate the library .dll.

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

重要

ローカルで実行される場合、HTTP エンドポイントに対して認証は適用されません。When running locally, authentication isn't enforced for HTTP endpoints. つまり、ローカルの HTTP 要求はすべて、authLevel = "anonymous" として処理されます。This means that all local HTTP requests are handled as authLevel = "anonymous". 詳細については、HTTP バインディングに関する記事を参照してください。For more information, see the HTTP binding article.

関数へのテスト データの受け渡し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

Core Tools でサポートされている 2 種類のデプロイは、関数アプリへの関数プロジェクト ファイルの直接的なデプロイと、カスタム Linux コンテナーのデプロイ (バージョン 2.x でのみサポート) です。Core Tools supports two types of deployment, deploying function project files directly to your function app and deploying a custom Linux container, which is supported only in version 2.x. 既に Azure サブスクリプションで関数アプリを作成してある必要があります。You must have already created a function app in your Azure subscription.

バージョン 2.x では、発行する前に、プロジェクトで拡張機能を登録しておく必要があります。In version 2.x, you must have registered your extensions in your project before publishing. コンパイルを必要とするプロジェクトは、バイナリをデプロイできるように、ビルドする必要があります。Projects that require compilation should be built so that the binaries can be deployed.

プロジェクト ファイルのデプロイProject file deployment

最も一般的なデプロイ方法は、Core Tools を使用して関数アプリ プロジェクトをパッケージ化し、関数アプリにパッケージをデプロイする方法です。The most common deployment method involves using Core Tools to package your function app project and deploy the package to your function app. 必要に応じて、展開パッケージから直接関数を実行することができます。You can optionally run your functions directly from the deployment package.

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

func azure functionapp publish <FunctionAppName>

このコマンドは、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 ポータルKudu ツール を使用することで削除できます。You can delete files in Azure by using the Kudu tool in the Azure portal.

重要

Azure portal で関数アプリを作成すると、既定でバージョン 2.x の Function ランタイムが使用されます。When you create a function app in the Azure portal, it uses version 2.x of the Function runtime by default. 関数アプリにバージョン 1.x のランタイムを使用させるには、バージョン 1.x での実行に関するページの説明に従ってください。To make the function app use version 1.x of the runtime, follow the instructions in Run on version 1.x.
既存の関数がある関数アプリのランタイム バージョンを変更することはできません。You can't change the runtime version for a function app that has existing functions.

次の発行オプションを使用できます。このオプションは、1.x と 2.x 両方のバージョンに適用されます。You can use the following publish options, which apply for both versions, 1.x and 2.x:

オプション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 --publish-local-settings -i を使用するときに、アプリの設定を上書きするプロンプトを抑制します。Suppress the prompt to overwrite app settings when --publish-local-settings -i is used.

次の発行オプションは、バージョン 2.x でのみサポートされています。The following publish options are only supported in version 2.x:

オプションOption 説明Description
--publish-settings-only -o 設定のみを発行し、コンテンツをスキップします。Only publish settings and skip the content. 既定値は prompt です。Default is prompt.
--list-ignored-files 発行時に無視されるファイルの一覧を表示します。これは、.funcignore ファイルに基づきます。Displays a list of files that are ignored during publishing, which is based on the .funcignore file.
--list-included-files 発行されるファイルの一覧を表示します。これは、.funcignore ファイルに基づきます。Displays a list of files that are published, which is based on the .funcignore file.
--zip Run-From-Zip パッケージで発行します。Publish in Run-From-Zip package. アプリで AzureWebJobsStorage の設定が定義されている必要があります。Requires the app to have AzureWebJobsStorage setting defined.
--force 特定のシナリオで発行前の検証を無視します。Ignore pre-publishing verification in certain scenarios.
--csx C# スクリプト (.csx) プロジェクトを発行します。Publish a C# script (.csx) project.
--no-build dotnet 関数のビルドをスキップします。Skip building dotnet functions.
--dotnet-cli-params コンパイル済み C# (.csproj) 関数を発行するとき、Core Tools は "dotnet build --output bin/publish" を呼び出します。When publishing compiled C# (.csproj) functions, the core tools calls 'dotnet build --output bin/publish'. これに渡されるすべてのパラメーターは、コマンド ラインに追加されます。Any parameters passed to this will be appended to the command line.

カスタム コンテナーのデプロイCustom container deployment

Functions では、カスタム Linux コンテナーに関数プロジェクトをデプロイできます。Functions lets you deploy your function project in a custom Linux container. 詳しくは、「カスタム イメージを使用して Linux で関数を作成する」をご覧ください。For more information, see Create a function on Linux using a custom image. バージョン 2.x の Core Tools では、カスタム コンテナーのデプロイがサポートされています。Version 2.x of Core Tools supports deploying a custom container. カスタム コンテナーには、Dockerfile が必要です。Custom containers must have a Dockerfile. func init で --dockerfile オプションを使用します。Use the --dockerfile option on func init.

func deploy

次のカスタム コンテナー デプロイ オプションを使用できます。The following custom container deployment options are available:

オプションOption 説明Description
--registry 現在のユーザーがサインインしている Docker レジストリの名前。The name of a Docker Registry the current user signed-in to.
--platform 関数アプリのホスティング プラットフォーム。Hosting platform for the function app. 有効なオプションは kubernetes です。Valid options are kubernetes
--name 関数アプリの名前。Function app name.
--max 必要に応じて、デプロイする関数アプリ インスタンスの最大数を設定します。Optionally, sets the maximum number of function app instances to deploy to.
--min 必要に応じて、デプロイする関数アプリ インスタンスの最小数を設定します。Optionally, sets the minimum number of function app instances to deploy to.
--config オプションのデプロイ構成ファイルを設定します。Sets an optional deployment configuration file.

次の手順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.