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
    
  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 プロダクト キーを信頼済みとして登録します。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
    
  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 バージョンVersion
    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. 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)、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

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 チームによって公開されたすべてのバインドを host.json ファイルの設定を通して利用できるようにします。Extension bundles make all bindings published by the Azure Functions team available through a setting in the host.json file. ローカル開発の場合、最新バージョンの Azure Functions Core Tools があることを確認してください。For local development, ensure you have the latest version of Azure Functions Core Tools.

拡張機能のバンドルを使用するには、host.json ファイルを更新して、extensionBundle の次のエントリを含めます。To use extension bundles, update the host.json file to include the following entry for extensionBundle:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[1.*, 2.0.0)"
    }
}
  • id プロパティは、Microsoft Azure Functions 拡張機能のバンドルの名前空間を参照します。The id property references the namespace for Microsoft Azure Functions extension bundles.
  • version は、バンドルのバージョンを参照します。The version references the version of the bundle.

バンドルのバージョンは、バンドル内のパッケージの変更に応じて増加します。Bundle versions increment as packages in the bundle changes. メジャー バージョンの変更は、バンドル内のパッケージによるメジャー バージョンの移動が行われる場合にのみ発生します。Major version changes happen only when packages in the bundle move a major version. version プロパティでは、バージョン範囲の指定に間隔表記を使用します。The version property uses the interval notation for specifying version ranges. Functions ランタイムは常に、バージョン範囲 (間隔) で定義された最大許容バージョンを選択します。The Functions runtime always picks the maximum permissible version defined by the version range or interval.

自分のプロジェクトで拡張機能のバンドルを参照すると、すべての既定のバインドを自分の関数で使用できるようになります。Once you reference the extension bundles in your project, then all default bindings are available to your functions. 拡張機能のバンドルで使用できるバインドは、次のとおりです。The bindings available in the extension bundle are:

PackagePackage バージョンVersion
Microsoft.Azure.WebJobs.Extensions.CosmosDBMicrosoft.Azure.WebJobs.Extensions.CosmosDB 3.0.33.0.3
Microsoft.Azure.WebJobs.Extensions.DurableTaskMicrosoft.Azure.WebJobs.Extensions.DurableTask 1.8.01.8.0
Microsoft.Azure.WebJobs.Extensions.EventGridMicrosoft.Azure.WebJobs.Extensions.EventGrid 2.0.02.0.0
Microsoft.Azure.WebJobs.Extensions.EventHubsMicrosoft.Azure.WebJobs.Extensions.EventHubs 3.0.33.0.3
Microsoft.Azure.WebJobs.Extensions.SendGridMicrosoft.Azure.WebJobs.Extensions.SendGrid 3.0.03.0.0
Microsoft.Azure.WebJobs.Extensions.ServiceBusMicrosoft.Azure.WebJobs.Extensions.ServiceBus 3.0.33.0.3
Microsoft.Azure.WebJobs.Extensions.SignalRServiceMicrosoft.Azure.WebJobs.Extensions.SignalRService 1.0.01.0.0
Microsoft.Azure.WebJobs.Extensions.StorageMicrosoft.Azure.WebJobs.Extensions.Storage 3.0.43.0.4
Microsoft.Azure.WebJobs.Extensions.TwilioMicrosoft.Azure.WebJobs.Extensions.Twilio 3.0.03.0.0

詳しくは、「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": "*",
    "CORSCredentials": false
  },
  "ConnectionStrings": {
    "SQLConnectionString": "<sqlclient-connection-string>"
  }
}
SettingSetting 説明Description
IsEncrypted 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. これらの値は、AzureWebJobsStorage など、Azure 内のご自分の関数アプリのアプリ設定に対応します。These values correspond to app settings in your function app in Azure, such as AzureWebJobsStorage. 多くのトリガーおよびバインドには、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.
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, 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.
Host このセクションの設定により、ローカルで実行時の Functions ホスト プロセスをカスタマイズできます。Settings in this section customize the Functions host process when running locally.
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 value.
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 withCredentials 要求を許可する場合は true に設定しますSet it to true to allow withCredentials requests
ConnectionStrings 関数のバインディングで使用される接続文字列にこのコレクションを使用しないでください。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. ご自分の関数アプリの設定の Connection strings コレクションに、これらの値を明示的に追加する必要があります。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 in the portal 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 <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:

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

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\"}'

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, binaries, and dependencies 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 の両方のバージョンに適用されます。The following project 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, 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 project 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-Zip モードをオフにします。Turns the default Run-From-Zip 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.

カスタム コンテナーのデプロイ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.

関数の監視Monitoring functions

関数の実行を監視するための推奨される方法は、Azure Application Insights との統合です。The recommended way to monitor the execution of your functions is by integrating with Azure Application Insights. Azure Portal で関数アプリを作成する場合、この統合は、既定で自動的に行われます。When you create a function app in the Azure portal, this 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.

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

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

  1. ポータル で、[すべてのサービス] > [関数アプリ] を選択し、関数アプリを選択してから、ウィンドウの上部にある Application Insights バナーを選択します。In the portal, select All services > Function Apps, select your function app, and then choose 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.
    場所Location 西ヨーロッパWest Europe 可能であれば、関数アプリと同じリージョン、または近隣のリージョンを使用してください。If possible, use the same region as your function app, or near to it.
  3. [OK] を選択します。Choose OK. Application Insights リソースは、関数アプリと同じリソース グループおよびサブスクリプションに作成されます。The Application Insights resource is created in the same resource group and subscription as your function app. 作成が完了したら、Application Insights ウィンドウを閉じます。After creation completes, close the Application Insights window.

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

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

次の手順Next steps

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