Запуск основных инструментов службы "Функции Azure"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, а отладку функций можно выполнять на локальном компьютере с помощью полной среды выполнения службы "Функции Azure".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.

Разработка функций на локальном компьютере и их публикация в Azure с помощью основных средств выполняет следующие основные действия:Developing functions on your local computer and publishing them to Azure using Core Tools follows these basic steps:

Версии Core ToolsCore Tools versions

Существует три версии Azure Functions Core Tools.There are three versions of Azure Functions Core Tools. Используемая версия зависит от вашей локальной среды разработки, выбора языкаи требуемого уровня поддержки:The version you use depends on your local development environment, choice of language, and level of support required:

Если не указано иное, примеры в этой статье относятся к версии 3. x.Unless otherwise noted, the examples in this article are for version 3.x.

Предварительные требованияPrerequisites

Azure Functions Core Tools в настоящее время зависит от Azure CLI для проверки подлинности в учетной записи Azure.Azure Functions Core Tools currently depends on the Azure CLI for authenticating with your Azure account. Это означает, что необходимо установить Azure CLI локально , чтобы иметь возможность публиковать в Azure из Azure functions Core Tools.This means that you must install the Azure CLI locally to be able to publish to Azure from Azure Functions Core Tools.

Установка основных инструментов Функций AzureInstall the Azure Functions Core Tools

[Основные инструменты службы "Функции Azure"] являются локальной версией среды выполнения "Функции Azure", которую можно запускать на локальном компьютере для разработки.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.

Версии 3. x и 2. xVersion 3.x and 2.x

Версия 3. x/2. x инструментов использует среду выполнения функций Azure, созданную на основе .NET Core.Version 3.x/2.x of the tools uses the Azure Functions runtime that is built on .NET Core. Эта версия поддерживается на всех платформах .NET Core, включая Windows, macOSи Linux.This version is supported on all platforms .NET Core supports, including Windows, macOS, and Linux.

Важно!

Вы можете обойти требование для установки пакет SDK для .NET Core с помощью [пакетов расширений].You can bypass the requirement for installing the .NET Core SDK by using extension bundles.

Следующие действия используют установщик Windows (MSI) для установки основных средств v3. x.The following steps use a Windows installer (MSI) to install Core Tools v3.x. Дополнительные сведения о других установщиках на основе пакетов, необходимых для установки основных средств версии 2. x, см. в файле readme по основным инструментам.For more information about other package-based installers, which are required to install Core Tools v2.x, see the Core Tools readme.

  1. Скачайте и запустите установщик основных средств на основе вашей версии Windows:Download and run the Core Tools installer, based on your version of Windows:

  2. Если вы не планируете использовать пакеты расширений, установите пакет SDK для .NET Core 3. x для Windows.If you don't plan to use extension bundles, install the .NET Core 3.x SDK for Windows.

Создание локального проекта службы "Функции"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. Дополнительные сведения о структуре папок службы "Функции Azure" см. в Руководстве для разработчиков по Функциям Azure.To learn more about the Functions folder structure, see the Azure Functions developers guide.

Версия 3. x/2. x требует выбрать язык по умолчанию для проекта при его инициализации.Version 3.x/2.x requires you to select a default language for your project when it is initialized. В версии 3. x/2. x все добавленные функции используют шаблоны языка по умолчанию.In version 3.x/2.x, 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.
В версии 3. x/2. x при выполнении команды необходимо выбрать среду выполнения для проекта.In version 3.x/2.x, when you run the command you must choose a runtime for your project.

Select a worker runtime:
dotnet
node
python 
powershell

Для выбора языка используйте СТРЕЛКИ ВВЕРХ и ВНИЗ и клавишу ВВОД.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поддерживает следующие параметры версии 3. x/2. КС-Онли, если не указано иное.func init supports the following options, which are version 3.x/2.x-only, unless otherwise noted:

ПараметрOption ОписаниеDescription
--csx Создает функции .NET в виде скрипта C#, который является поведением версии 1. x.Creates .NET functions as C# script, which is the version 1.x behavior. Допускается только с --worker-runtime dotnet.Valid only with --worker-runtime dotnet.
--docker Создает Dockerfile для контейнера с помощью базового образа, основанного на выбранном --worker-runtime .Creates 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.
--docker-only Добавляет Dockerfile в существующий проект.Adds a Dockerfile to an existing project. Запрашивает рабочую среду выполнения, если она не указана или не задана в local.settings.js.Prompts for the worker-runtime if not specified or set in local.settings.json. Используйте этот параметр при планировании публикации существующего проекта в пользовательском контейнере Linux.Use this option when you plan to publish an existing project 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.
--language Инициализирует проект, зависящий от языка.Initializes a language specific project. В настоящее время поддерживается, если --worker-runtime задано значение node .Currently supported when --worker-runtime set to node. Возможные значения: typescript и javascript.Options are typescript and javascript. Можно также использовать --worker-runtime javascript или --worker-runtime typescript .You can also use --worker-runtime javascript or --worker-runtime typescript.
--managed-dependencies Устанавливает управляемые зависимости.Installs managed dependencies. В настоящее время эта функция поддерживается только в среде выполнения PowerShell.Currently, only the PowerShell worker runtime supports this functionality.
--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. Поддерживаются следующие значения: csharp , dotnet , javascript , node (JavaScript), powershell , python и typescript .Supported values are: csharp, dotnet, javascript,node (JavaScript), powershell, python, and typescript. Для Java используйте Maven. Если этот параметр не задан, во время инициализации будет предложено выбрать среду выполнения.For Java, use Maven.When not set, you're prompted to choose your runtime during initialization.

Важно!

По умолчанию версии 2. x и более поздние версии основных средств создают проекты приложения-функции для среды выполнения .NET как проекты классов C# (. csproj).By default, version 2.x and later versions of the Core Tools create function app projects for the .NET runtime as C# class projects (.csproj). Эти проекты C#, которые могут использоваться с Visual Studio или Visual Studio Code, собираются во время тестирования и при публикации в Azure.These C# projects, which can be used with Visual Studio or Visual Studio Code, are compiled during testing and when publishing to Azure. Если вы хотите создавать и работать с тем же файлом сценария C# (.csx), созданным в версии 1.x и на портале, необходимо указать параметр --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 и более поздних реализуются как пакеты расширений.With the exception of HTTP and timer triggers, Functions bindings in runtime version 2.x and higher are implemented as extension packages. В версиях 2. x и более поздних версиях среды выполнения функций Azure необходимо явным образом зарегистрировать расширения для типов привязки, используемых в функциях.In version 2.x and beyond 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.jsфайла проекта.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. Пакеты расширений также удаляют требование установки пакета SDK для .NET Core 2. x.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.To learn more, see Register Azure Functions binding extensions. Перед добавлением привязок в function.jsв файле необходимо добавить расширения расширений в host.js.You should add extension bundles to the host.json before you add bindings to the function.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 , необходимо установить пакет SDK для .NET Core 2. x.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.jsв файле содержит параметры приложения, строки подключения и параметры, используемые локальными инструментами разработки.The local.settings.json file stores app settings, connection strings, and settings used by local development tools. Параметры в local.settings.jsфайле используются только при локальном запуске проектов.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:

ПараметрSetting Описание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. Эти пары "ключ — значение" (строковые строки) соответствуют параметрам приложения в приложении-функции в Azure, например AzureWebJobsStorage .These key-value (string-string) pairs correspond to application settings in your function app in Azure, like AzureWebJobsStorage. Многие триггеры и привязки имеют свойство, которое ссылается на параметр приложения строки подключения, например Connection для триггера хранилища BLOB-объектов.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.
Для версии 2. x и более поздней версии среды выполнения функций требуется FUNCTIONS_WORKER_RUNTIME параметр [], который создается для проекта основными инструментами.Version 2.x and higher of the Functions runtime requires the [FUNCTIONS_WORKER_RUNTIME] setting, which is generated for your project by Core Tools.
Если эмулятор хранения Azure установлен локально и задано значение AzureWebJobsStorage UseDevelopmentStorage=true , основные инструменты используют эмулятор.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. Имена параметров не могут содержать двоеточие ( : ) или двойное подчеркивание ( __ ).Setting names can't include a colon (:) or a double underline (__). Эти символы зарезервированы средой выполнения.These characters are reserved by the runtime.
Host Параметры в этом разделе позволяют настроить хостный процесс функций при локальном запуске проектов.Settings in this section customize the Functions host process when you run projects locally. Эти параметры отделены от host.jsпараметров, которые также применяются при запуске проектов в Azure.These settings are separate from the host.json settings, which also apply when you run projects in Azure.
LocalHttpPort Задает порт по умолчанию, используемый при выполнении локального узла Функций (func host start и func 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. Эта коллекция используется только платформами, которые обычно получают строки подключения из ConnectionStrings раздела файла конфигурации, например Entity Framework.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:

Отсутствует значение AzureWebJobsStorage в local.settings.json.Missing value for AzureWebJobsStorage in local.settings.json. This is required for all triggers other than HTTP.This is required for all triggers other than HTTP. You can run 'func azure functionapp fetch-app-settings <functionAppName>' or specify a connection string in local.settings.json (Отсутствует значение AzureWebJobsStorage в local.settings.json. Оно требуется для всех триггеров, отличных от HTTP. Выполните команду func azure functionapp fetch-app-settings или укажите строку подключения в файле 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

Даже при использовании эмулятор хранения Microsoft Azure для разработки может потребоваться проверить фактическое подключение к хранилищу.Even when using the Microsoft Azure 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, search for and select Storage accounts. Выберите учетные записи хранения из портал AzureSelect Storage accounts from Azure portal

    Выберите учетную запись хранения, выберите ключи доступа в параметрах, а затем скопируйте одно из значений строки подключения .Select your storage account, select Access keys in Settings, then copy one of the Connection string values. Копирование строки подключения с портала Microsoft AzureCopy connection string from Azure portal

  • Подключитесь к учетной записи Azure с помощью Обозревателя службы хранилища Azure.Use Azure Storage Explorer to connect to your Azure account. В обозревателеразверните подписку, разверните учетные записи хранения, выберите свою учетную запись хранения и скопируйте строку первичной или вторичной строки подключения.In the Explorer, expand your subscription, expand Storage Accounts, select your storage account, and copy the primary or secondary connection string.

    Скопируйте строку подключения из Обозревателя службы хранилища

  • Используйте 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 aren't already signed in to Azure, you're prompted to do so.

Создание функцииCreate a function

Чтобы создать функцию, выполните следующую команду:To create a function, run the following command:

func new

В версии 3. x/2. x при запуске вам будет func new предложено выбрать шаблон на языке по умолчанию для приложения-функции, а затем будет предложено выбрать имя функции.In version 3.x/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 и более поздних версий.) Создает те же шаблоны скрипта C# (. CSX), которые используются в версии 1. x и на портале.(Version 2.x and later versions.) Generates the same C# script (.csx) templates used in version 1.x and in the portal.
--language, -l--language, -l Язык программирования шаблона, например C#, F# или JavaScript.The template programming language, such as C#, F#, or JavaScript. Этот параметр необходим в версии 1.x.This option is required in version 1.x. В версии 2. x и более поздних версиях не используйте этот параметр или выберите язык, соответствующий рабочей среде выполнения.In version 2.x and later versions, do not use this option or choose a language that matches the worker runtime.
--name, -n--name, -n Имя функции.The function name.
--template, -t--template, -t Используйте команду func templates list, чтобы просмотреть полный список доступных шаблонов для каждого поддерживаемого языка.Use the func templates list command to see the complete list of available templates for each supported language.

Например, чтобы создать триггер HTTP на JavaScript одной командой, выполните следующую команду.For example, to create a JavaScript HTTP trigger in a single command, run:

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

Чтобы создать активируемую с помощью очереди функцию одной командой, выполните следующую команду.To create a queue-triggered function in a single command, run:

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

Запуск функций локальноRun functions locally

Чтобы запустить проект службы "Функции", запустите узел этой службы.To run a Functions project, run the Functions host. Узел включает триггеры для всех функций в проекте.The host enables triggers for all functions in the project. Команда запуска зависит от языка проекта.The start command varies, depending on your project language.

func start --build

Примечание

Версия 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. Только для проектов .NET.For dotnet projects only. По умолчанию установлено значение false.Default is set to false. Не поддерживается для версии 1. x.Not supported for version 1.x.
--cors-credentials Разрешить запросы с проверкой подлинности от источника (т. е. файлы cookie и заголовок проверки подлинности), которые не поддерживаются для версии 1. x.Allow cross-origin authenticated requests (i.e. cookies and the Authentication header) Not supported for version 1.x.
--cors Список разрешенных источников CORS, разделенный запятыми без пробелов.A comma-separated list of CORS origins, with no spaces.
--language-worker Аргументы для настройки обработчика языка.Arguments to configure the language worker. Например, вы можете включить отладку для рабочей роли языка, предоставив порт отладки и другие необходимые аргументы.For example, you may enable debugging for language worker by providing debug port and other required arguments. Не поддерживается для версии 1. x.Not supported for version 1.x.
--cert Путь к PFX-файлу, который содержит закрытый ключ.The path to a .pfx file that contains a private key. Используется только с --useHttps.Only used with --useHttps. Не поддерживается для версии 1. x.Not supported for version 1.x.
--password Пароль или файл, содержащий пароль для PFX-файла.Either the password or a file that contains the password for a .pfx file. Используется только с --cert.Only used with --cert. Не поддерживается для версии 1. x.Not supported for version 1.x.
--port, -p--port, -p Локальный порт для прослушивания.The local port to listen on. Значение по умолчанию: 7071.Default value: 7071.
--pause-on-error Приостановка для получения дополнительных входных данных перед выходом из процесса.Pause for additional input before exiting the process. Используется только при запуске набора инструментов Core Tools из интегрированной среды разработки.Used only when launching Core Tools from an integrated development environment (IDE).
--script-root, --prefix--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--timeout, -t Время ожидания для запуска узла службы "Функции" в секундах.The timeout for the Functions host to start, in seconds. Значение по умолчанию — 20 секунд.Default: 20 seconds.
--useHttps Привязка к https://localhost:{port}, а не к http://localhost:{port}.Bind to https://localhost:{port} rather than to http://localhost:{port}. По умолчанию этот параметр создает доверенный сертификат на компьютере.By default, this option creates a trusted certificate on your computer.

При запуске узла службы "Функции" выводится URL-адрес функций, активируемых по HTTP: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, authorization 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

Чтобы протестировать функции в локальной среде, запустите узел службы "Функции" и вызовите конечные точки на локальном сервере, используя 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 Build 17063 и более поздних версий.The cURL tool is available by default on Linux-based systems and Windows 10 build 17063 and later. В более старых версиях Windows необходимо сначала загрузить и установить инструмент для установки фигурного инструмента.On older Windows, you must first download and install the cURL tool.

Дополнительные сведения о тестировании функций см. в статье Методика тестирования кода с помощью Функций Azure.For more general information on testing functions, see Strategies for testing your code in Azure Functions.

Функции, активируемые по протоколу HTTP или с помощью веб-перехватчикаHTTP and webhook triggered functions

Вызовите следующую конечную точку, чтобы запустить в локальной среде функции, активируемые по протоколу HTTP или с помощью веб-перехватчика.You call the following endpoint to locally run HTTP and webhook triggered functions:

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

Используйте то же имя сервера и порт, прослушиваемый узлом службы "Функции".Make sure to use the same server name and port that the Functions host is listening on. Их можно найти в выходных данных, полученных при запуске узла службы "Функции".You see this in the output generated when starting the Function host. Этот URL-адрес можно вызвать с помощью любого метода HTTP с поддержкой триггера.You can call this URL using any HTTP method supported by the trigger.

Следующая команда cURL активирует функцию быстрого запуска MyHttpTrigger из запроса GET с параметром name, который передается в строке запроса.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

В следующем примере представлена та же функция, вызываемая из запроса POST с передачей параметра name в тексте запроса: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.

Функции, не активируемые по протоколу HTTPNon-HTTP triggered functions

Для всех видов функций, отличных от триггеров HTTP, веб-перехватчиков и триггеров сетки событий, можно протестировать функции локально, вызвав конечную точку администрирования.For all kinds of functions other than HTTP triggers and webhooks and Event Grid triggers, 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.

Чтобы протестировать функции, активируемые в службе "Сетка событий" локально, см. раздел Локальное тестирование с помощью средства просмотра.To test Event Grid triggered functions locally, see Local testing with viewer web app.

При необходимости можно передать тестовые данные в среду выполнения в тексте запроса POST.You can optionally pass test data to the execution in the body of the POST request. Это аналогично выполнению функции с помощью вкладки Тест на портале Azure.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. В следующем примере представлен запрос POST к функции QueueTriggerJS.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/QueueTrigger

Использование func run команды (только версии 1. x)Using the func run command (version 1.x only)

Важно!

func runКоманда поддерживается только в версии 1. x средств.The func run command is only supported in version 1.x of the tools. Дополнительные сведения см. в статье Выбор целевых версий среды выполнения Функций Azure.For more information, see the topic How to target Azure Functions runtime versions.

В версии 1. x можно также вызвать функцию напрямую с помощью func run <FunctionName> и предоставить входные данные для функции.In version 1.x, you can also invoke a function directly by using func run <FunctionName> and provide input data for the function. Эта команда аналогична выполнению функции с помощью вкладки Тест на портале Azure.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--content, -c Встроенное содержимое.Inline content.
--debug, -d--debug, -d Подключение отладчика к хост-процессу перед выполнением функции.Attach a debugger to the host process before running the function.
--timeout, -t--timeout, -t Время ожидания (в секундах), пока не будет готов локальный узел службы "Функции".Time to wait (in seconds) until the local Functions host is ready.
--file, -f--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\"}'

Публикация в AzurePublish to Azure

Azure Functions Core Tools поддерживает два типа развертывания: развертывание файлов проекта функции непосредственно в приложение-функцию через 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.

Важно!

Чтобы иметь возможность публиковать в Azure из основных средств, необходимо локально установить Azure CLI .You must have the Azure CLI installed locally to be able to publish to Azure from Core Tools.

Папка проекта может содержать файлы и каталоги, относящиеся к языку, которые не должны публиковаться.A project folder may contain language-specific files and directories that shouldn't be published. Исключенные элементы перечислены в файле фунЦигноре в корневой папке проекта.Excluded items are listed in a .funcignore file in the root project folder.

Развертывание файлов проектаDeploy 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, см. статью Создание приложения-функции для выполнения без сервера.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 uses remote build and deploys your app to run from the deployment package. Чтобы отключить этот рекомендуемый режим развертывания, используйте --nozip параметр.To disable this recommended deployment mode, use the --nozip option.

Важно!

При создании приложения-функции в портал Azure используется версия 3. x среды выполнения функции по умолчанию.When you create a function app in the Azure portal, it uses version 3.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.

Следующие параметры публикации применяются ко всем версиям:The following publish options apply for all versions:

Параметр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. При использовании эмулятор хранения Microsoft Azure сначала измените параметр приложения на реальное подключение к хранилищу.If you are using the Microsoft Azure 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 supported only for version 2.x and later versions:

ПараметрOption ОписаниеDescription
--publish-settings-only, -o--publish-settings-only, -o Только публикует параметры и пропускает содержимое.Only publish settings and skip the content. Значение по умолчанию — запрос.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 Пропускает создание папки. Wheels при публикации приложений функции Python.Skips generating .wheels folder when publishing Python function apps.
--build, -b--build, -b Выполняет действие сборки при развертывании в приложении-функции Linux.Performs build action when deploying to a Linux function app. Принимает: remote и local .Accepts: remote and local.
--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 Проект не создан во время публикации.Project isn't built during publishing. Для Python pip install не выполняется.For Python, pip install isn't performed.
--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.

Развертывание настраиваемого контейнераDeploy custom container

Функции Azure позволяют развертывать проект функции в пользовательском контейнере 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. В пользовательских контейнерах должен быть файл Docker.Custom containers must have a Dockerfile. Чтобы создать приложение с Dockerfile, используйте параметр--Dockerfile в func init .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.To learn more, see Monitor Azure Functions.

Интеграция Application InsightsApplication Insights integration

Интеграция с Application Insights должна быть включена при создании приложения функции в Azure.Application Insights integration should be enabled when you create your function app in Azure. Если по какой либо причине приложение функции не подключено к Application Insights экземпляру, это легко сделать в портал Azure.If for some reason your function app isn't connected to an Application Insights instance, it's easy to do this integration in the Azure portal.

Функции Azure упрощают добавление Application Insights интеграции в приложение-функцию из [портал Azure].Azure Functions makes it easy to add Application Insights integration to a function app from the Azure portal.

  1. Напортале Azure [портал Azure]найдите и выберите приложение функции, а затем выберите приложение функции.In the Azure portal, search for and select function app, and then choose your function app.

  2. Выберите Application Insights не настроен баннер в верхней части окна.Select the Application Insights is not configured banner at the top of the window. Если вы не видите этот баннер, возможно, приложение уже включено Application Insights.If you don't see this banner, then your app might already have Application Insights enabled.

    Включение Application Insights с помощью портала

  3. Разверните узел изменить ресурс и создайте Application Insights ресурс с помощью параметров, указанных в следующей таблице.Expand Change your resource and create an Application Insights resource by using the settings specified in the following table.

    ПараметрSetting Рекомендуемое значениеSuggested value ОписаниеDescription
    Новое название ресурсаNew resource name Уникальное имя приложения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 one that's close to that region.

    Создание ресурса Application Insights

  4. Нажмите кнопку Применить.Select Apply.

    Ресурс 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.

  5. В приложении функции выберите пункт Конфигурация в разделе Параметры, а затем выберите Параметры приложения.In your function app, select Configuration under Settings, and then select 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

Вы также можете просмотреть Live Metrics Stream для приложения-функции в новом окне браузера, включив --browser параметр, как показано в следующем примере: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 Application Insights integration be enabled for your function app.

Дальнейшие действияNext steps

Узнайте, как разрабатывать, тестировать и публиковать функции Azure с помощью Azure Functions Core Tools модуль обучения майкрософт Azure functions Core Tools является открытым исходным кодом и размещается на GitHub.Learn how to develop, test, and publish Azure Functions by using Azure Functions Core Tools Microsoft learn module Azure Functions Core Tools is open source and hosted on GitHub.
Чтобы зарегистрировать ошибку или отправить запрос на функцию, откройте вопрос на GitHub.To file a bug or feature request, open a GitHub issue.