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 を使用して、ローカル コンピューターで関数を開発し、Azure に発行するには、次の基本的な手順に従います。Developing functions on your local computer and publishing them to Azure using Core Tools follows these basic steps:

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 をサポートします。Version 1.x: supports version 1.x of the runtime. ツールのこのバージョンは 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 を対象にしています。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.

バージョン 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.

重要

拡張バンドルを使用すると、.NET Core 2.x SDK をインストールするための要件をバイパスできます。You can bypass the requirement for installing the .NET Core 2.x SDK by using extension bundles.

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. 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.

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

    npm install -g azure-functions-core-tools
    

    npm をダウンロードして Core Tools パッケージをインストールするには、数分かかる場合があります。It may take a few minutes for npm to download and install the Core Tools package.

  3. 拡張バンドルを使用しない場合、.NET Core 2.x SDK for Windows をインストールします。If you do not plan to use extension bundles, install the .NET Core 2.x SDK for Windows.

Homebrew による MacOSMacOS with Homebrew

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

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

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

    brew tap azure/functions
    brew install azure-functions-core-tools
    
  3. 拡張バンドルを使用しない場合、.NET Core 2.x SDK for macOS をインストールします。If you do not plan to use extension bundles, install .NET Core 2.x SDK for macOS.

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. パッケージの整合性を検証するには、Microsoft パッケージ リポジトリの GPG キーをインストールします。Install the Microsoft package repository GPG key, to validate package integrity:

    curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
    sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
    
  2. 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.10Ubuntu 18.10 cosmic
    Ubuntu 18.04Ubuntu 18.04 bionic
    Ubuntu 17.04Ubuntu 17.04 zesty
    Ubuntu 16.04/Linux Mint 18Ubuntu 16.04/Linux Mint 18 xenial
  3. 次のコマンドを使って、Core Tools のパッケージをインストールします。Install the Core Tools package:

    sudo apt-get install azure-functions-core-tools
    
  4. 拡張バンドルを使用しない場合、.NET Core 2.x SDK for Linux をインストールします。If you do not plan to use extension bundles, install .NET Core 2.x SDK for Linux.

ローカル関数プロジェクトを作成する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.

Select a worker runtime:
dotnet
node
python (preview)
powershell (preview)

上/下方向キーを使用して言語を選択し、Enter キーを押します。Use the up/down arrow keys to choose a language, then press Enter. JavaScript または TypeScript 関数の開発を計画している場合は、ノードを選択し、言語を選択します。If you plan to develop JavaScript or TypeScript functions, choose node, and then select the language. TypeScript にはいくつかの追加要件があります。TypeScript has some additional requirements.

出力は、次の 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)、javapython です。Supported values are dotnet, node (JavaScript), java, and python. 設定しないと、初期化中にランタイムの選択を求められます。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

HTTP トリガーとタイマー トリガーを除き、ランタイム バージョン 2.x の Functions のバインドは拡張機能パッケージとして実装されます。With the exception of HTTP and timer triggers, Functions bindings in runtime version 2.x are implemented as extension packages. Azure Functions ランタイムのバージョン 2.x では、関数で使用するバインディングの種類用の拡張機能を明示的に登録する必要があります。In version 2.x of the Azure Functions runtime, you have to explicitly register the extensions for the binding types used in your functions. この例外は HTTP バインドとタイマー トリガーで、これらは拡張機能を必要としません。The exceptions to this are HTTP bindings and timer triggers, which do not require extensions.

バインド拡張機能を個別にインストールするか、host.json プロジェクト ファイルに拡張機能のバンドルの参照を追加することができます。You can choose to install binding extensions individually, or you can add an extension bundle reference to the host.json project file. 拡張機能のバンドルは、複数のバインディングの種類を使用するときに、パッケージの互換性の問題を発生する可能性をなくします。Extension bundles removes the chance of having package compatibility issues when using multiple binding types. これはバインド拡張機能を登録するための推奨される方法です。It is the recommended approach for registering binding extensions. また、拡張機能のバンドルにより、.NET Core 2.x SDK をインストールする必要もなくなります。Extension bundles also removes the requirement of installing the .NET Core 2.x SDK.

拡張機能のバンドルExtension bundles

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

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

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

詳細については、「Azure Functions バインド拡張機能を登録する」を参照してください。To learn more, see Register Azure Functions binding extensions. functions.json ファイルへのバインドを追加する前に、host.json に拡張機能のバンドルを追加する必要があります。You should add extension bundles to the host.json before you add bindings to the functions.json file.

個々の拡張機能を登録するRegister individual extensions

バンドル内にない拡張機能をインストールする必要がある場合は、特定のバインド用の個々の拡張機能パッケージを手動で登録できます。If you need to install extensions that aren't in a bundle, you can manually register individual extension packages for specific bindings.

注意

func extensions install を使用して拡張機能を手動で登録するには、.NET Core 2.x SDK がインストールされている必要があります。To manually register extensions by using func extensions install, you must have the .NET Core 2.x SDK installed.

関数に必要なすべてのバインドを含むように 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.

ローカル設定ファイル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.

既定では、プロジェクトが 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 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 <functionAppName>" を実行するか、local.settings.json で接続文字列を指定することができます。You can run 'func azure functionapp fetch-app-settings <functionAppName>' 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.

バージョン 2.xVersion 2.x

ランタイムのバージョン 2.x では、開始コマンドはプロジェクトの言語によって異なります。In version 2.x of the runtime, the start command varies, depending on your project language.

C#C#

func start --build

JavaScriptJavaScript

func start

TypeScriptTypeScript

npm install
npm start     

バージョン 1.xVersion 1.x

Functions ランタイムのバージョン 1.x では、次の例のように host コマンドが必要です。Version 1.x of the Functions runtime requires the host command, as in the following example:

func host start

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

オプションOption 説明Description
--no-build 実行前に現在のプロジェクトをビルドしません。Do no build current project before running. dotnet プロジェクトの場合のみ。For dotnet projects only. 既定値は false に設定されます。Default is set to false. Version 2.x のみ。Version 2.x 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-credentials クロスオリジン認証済み要求 (つまり、Cookie と Authentication ヘッダー) バージョン 2.x のみを許可します。Allow cross-origin authenticated requests (i.e. cookies and the Authentication header) Version 2.x only.
--cors CORS オリジンのコンマ区切りのリスト (スペースなし)。A comma-separated list of CORS origins, with no spaces.
--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.

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 ベースのシステムと Windows 10 ビルド 17063 以降では既定で cURL ツールを使用できます。The cURL tool is available by default on Linux-based systems and Windows 10 build 17063 and later. 以前の Windows では、最初に cURL ツールをダウンロードし、インストールする必要があります。On older 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\"}'

Azure に発行するPublish to Azure

Azure Functions Core Tools でサポートされている 2 種類のデプロイは、Zip デプロイによる関数アプリへの関数プロジェクト ファイルの直接的なデプロイと、カスタム Docker コンテナーのデプロイです。The Azure Functions Core Tools supports two types of deployment: deploying function project files directly to your function app via Zip Deploy and deploying a custom Docker container. コードをデプロイする Azure サブスクリプションで関数アプリを作成してある必要があります。You must have already created a function app in your Azure subscription, to which you'll deploy your code. コンパイルを必要とするプロジェクトは、バイナリをデプロイできるように、ビルドする必要があります。Projects that require compilation should be built so that the binaries can be deployed.

デプロイ (プロジェクト ファイル)Deployment (project files)

Azure で ローカル コードを関数アプリに発行するには、publish コマンドを使用します。To publish your local code 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> に発行しようとすると、エラーが表示されます。You'll get an error if you try to publish to a <FunctionAppName> that 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. 既定では、このコマンドによって、アプリがデプロイされ、デプロイ パッケージから実行されますBy default, this command deploys your app to run from the deployment package. この推奨されるデプロイ モードを無効にするには、--nozip オプションを使用します。To disable this recommended deployment mode, use the --nozip option.

重要

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 の両方のバージョンに適用されます。The following publish options 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, first 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.
--nozip 既定の Run-From-Package モードをオフにします。Turns the default Run-From-Package mode off.
--build-native-deps Python 関数アプリを発行するときに、.wheels フォルダーの生成をスキップします。Skips generating .wheels folder when publishing python function apps.
--additional-packages ネイティブの依存関係を構築するときにインストールするパッケージの一覧。List of packages to install when building native dependencies. (例: python3-dev libevent-dev)。For example: python3-dev libevent-dev.
--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.

デプロイ (カスタム コンテナー)Deployment (custom container)

Azure Functions では、カスタム Docker コンテナーに関数プロジェクトをデプロイできます。Azure Functions lets you deploy your function project in a custom Docker container. 詳しくは、「カスタム イメージを使用して Linux で関数を作成する」をご覧ください。For more information, see Create a function on Linux using a custom image. カスタム コンテナーには、Dockerfile が必要です。Custom containers must have a Dockerfile. Dockerfile でアプリを作成するには、func init で --dockerfile オプションを使用します。To create an app with a 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.

関数の監視Monitoring functions

関数の実行を監視するための推奨される方法は、Azure Application Insights との統合です。The recommended way to monitor the execution of your functions is by integrating with Azure Application Insights. また、ローカル コンピューターに実行ログをストリーミングすることもできます。You can also stream execution logs to your local computer. 詳細については、「Azure Functions を監視する」を参照してください。To learn more, see Monitor Azure Functions.

Application Insights との統合を有効にするEnable Application Insights integration

Azure portal で関数アプリを作成する場合、Application Insights との統合は、既定で自動的に行われます。When you create a function app in the Azure portal, the Application Insights integration is done for you by default. ただし、Azure CLI を使用して関数アプリを作成する場合は、Azure で関数アプリの統合は実行されません。However, when you create your function app by using the Azure CLI, the integration in your function app in Azure isn't done.

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.

ストリーミング ログを有効にするEnable streaming logs

関数によって生成されているログ ファイルのストリームは、ローカル コンピューター上のコマンド ライン セッションで表示できます。You can view a stream of log files being generated by your functions in a command-line session on your local computer.

ネイティブ ストリーミング ログNative streaming logs

組み込みのログ ストリーミングBuilt-in log streaming

次の例のように、logstream オプションを使用して、Azure 内で実行されている特定の関数アプリのストリーミング ログの受信を開始します。Use the logstream option to start receiving streaming logs of a specific function app running in Azure, as in the following example:

func azure functionapp logstream <FunctionAppName>

ライブ メトリック ストリームLive Metrics Stream

また、次の例に示すように、--browser オプションを含めることによって、関数アプリの Live Metrics Stream を新しいブラウザー ウィンドウに表示することもできます。You can also view the Live Metrics Stream for your function app in a new browser window by including the --browser option, as in the following example:

func azure functionapp logstream <FunctionAppName> --browser

この種類のストリーミング ログを使用するには、関数アプリの Application Insights との統合を有効にする必要があります。This type of streaming logs requires that you enable Application Insights integration for your function app.

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