Запуск основных инструментов службы "Функции Azure"

Средства Azure Functions Core Tools позволяют разрабатывать и тестировать функции на локальном компьютере из командной строки или в терминале. Локальные функции можно подключать к действующим службам Azure, а отладку функций можно выполнять на локальном компьютере с помощью полной среды выполнения службы "Функции Azure". Также есть возможность развернуть приложение-функцию в подписке Azure.

Важно!

Не следует смешивать локальную разработку и разработку с помощью портала разработки в одном приложении-функции. При создании и публикации функций из локального проекта не следует пытаться хранить или изменять код проекта на портале.

Разработка функций на локальном компьютере и их публикация в Azure с помощью основных средств выполняет следующие основные действия:

Версии Core Tools

Существует три версии Azure Functions Core Tools. Используемая версия зависит от вашей локальной среды разработки, выбора языкаи требуемого уровня поддержки:

На заданном компьютере можно установить только одну версию основных средств. Если не указано иное, примеры в этой статье относятся к версии 3. x.

Предварительные условия

Azure Functions Core Tools в настоящее время зависит от Azure CLI или Azure PowerShell для проверки подлинности с помощью учетной записи Azure. Это означает, что необходимо установить один из этих средств, чтобы иметь возможность публиковать в Azure из Azure functions Core Tools.

Установка основных инструментов Функций Azure

[Основные инструменты службы "Функции Azure"] являются локальной версией среды выполнения "Функции Azure", которую можно запускать на локальном компьютере для разработки. Она также предоставляет команды для создания функций, подключения к Azure и развертывания проектов функций.

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

Версия 3. x/2. x инструментов использует среду выполнения функций Azure, созданную на основе .NET Core. Эта версия поддерживается на всех платформах .NET Core, включая Windows, macOSи Linux.

Важно!

Вы можете обойти требование для установки пакет SDK для .NET Core с помощью [пакетов расширений].

Следующие действия используют установщик Windows (MSI) для установки основных средств v3. x. Дополнительные сведения о других установщиках на основе пакетов, необходимых для установки основных средств версии 2. x, см. в файле readme по основным инструментам.

  1. Скачайте и запустите установщик основных средств на основе вашей версии Windows:

  2. Если вы не планируете использовать пакеты расширений, установите пакет SDK для .NET Core 3. x для Windows.

Создание локального проекта службы "Функции"

Каталог проекта функций содержит файлы, host.js и local.settings.js, а также вложенные папки, содержащие код для отдельных функций. Этот каталог является эквивалентом приложения-функции в Azure. Дополнительные сведения о структуре папок службы "Функции Azure" см. в Руководстве для разработчиков по Функциям Azure.

Версия 3. x/2. x требует выбрать язык по умолчанию для проекта при его инициализации. В версии 3. x/2. x все добавленные функции используют шаблоны языка по умолчанию. В версии 1.x пользователю необходимо указывать язык при каждом создании функции.

В окне терминала или из командной строки выполните следующую команду, чтобы создать проект и локальный репозиторий Git:

func init MyFunctionProj

Важно!

Java использует Maven архетипа для создания проекта локальных функций вместе с первой функцией, активируемой HTTP. Для создания проекта Java используйте следующую команду: mvn archetype:generate -DarchetypeGroupId=com.microsoft.azure -DarchetypeArtifactId=azure-functions-archetype . Пример использования Maven архетипа см. в кратком руководстве по использованию командной строки.

Когда вы указываете имя проекта, то создается и инициализируется новая папка с этим именем. В противном случае инициализируется текущая папка.
В версии 3. x/2. x при выполнении команды необходимо выбрать среду выполнения для проекта.

Select a worker runtime:
dotnet
node
python 
powershell

Для выбора языка используйте СТРЕЛКИ ВВЕРХ и ВНИЗ и клавишу ВВОД. Если вы планируете разрабатывать функции JavaScript или TypeScript, выберите узел, а затем выберите язык. В TypeScript есть некоторые дополнительные требования.

Результат для проекта JavaScript выглядит примерно следующим образом.

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. КС-Онли, если не указано иное.

Параметр Описание
--csx Создает функции .NET в виде скрипта C#, который является поведением версии 1. x. Допускается только с --worker-runtime dotnet.
--docker Создает Dockerfile для контейнера с помощью базового образа, основанного на выбранном --worker-runtime . Используйте этот параметр, если планируете опубликовать в пользовательский контейнер Linux.
--docker-only Добавляет Dockerfile в существующий проект. Запрашивает рабочую среду выполнения, если она не указана или не задана в local.settings.js. Используйте этот параметр при планировании публикации существующего проекта в пользовательском контейнере Linux.
--force Инициализирует проект, даже если в нем уже есть файлы. Этот параметр перезаписывает имеющиеся файлы, используя те же имена. Это не влияет на другие файлы в папке проекта.
--language Инициализирует проект, зависящий от языка. В настоящее время поддерживается, если --worker-runtime задано значение node . Возможные значения: typescript и javascript. Можно также использовать --worker-runtime javascript или --worker-runtime typescript .
--managed-dependencies Устанавливает управляемые зависимости. В настоящее время эта функция поддерживается только в среде выполнения PowerShell.
--source-control Определяет, создается ли репозиторий Git. По умолчанию репозиторий не создается. Если задано значение true, репозиторий создается.
--worker-runtime Задает языковую среду выполнения для проекта. Поддерживаются следующие значения: csharp , dotnet , javascript , node (JavaScript), powershell , python и typescript . Для Java используйте Maven. Если этот параметр не задан, во время инициализации будет предложено выбрать среду выполнения.

Важно!

По умолчанию версии 2. x и более поздние версии основных средств создают проекты приложения-функции для среды выполнения .NET как проекты классов C# (. csproj). Эти проекты C#, которые могут использоваться с Visual Studio или Visual Studio Code, собираются во время тестирования и при публикации в Azure. Если вы хотите создавать и работать с тем же файлом сценария C# (.csx), созданным в версии 1.x и на портале, необходимо указать параметр --csx при создании и развертывании функций.

Регистрация расширений

За исключением триггеров HTTP и таймера, привязки функций в среде выполнения версии 2. x и более поздних реализуются как пакеты расширений. Для привязок HTTP и триггеров таймера расширения не требуются.

Чтобы снизить несовместимости между различными пакетами расширений, функции позволяют ссылаться на пакет расширений в host.jsв файле проекта. Если вы решили не использовать пакеты расширений, вам также потребуется установить пакет SDK для .NET Core 2. x локально и сохранить расширение. csproj с проектом функций.

В версиях 2. x и более поздних версиях среды выполнения функций Azure необходимо явным образом зарегистрировать расширения для типов привязки, используемых в функциях. Можно установить расширения привязки по отдельности или добавить ссылку на пакет расширений в host.jsфайла проекта. Пакеты расширений устраняют вероятность проблем совместимости пакетов при использовании нескольких типов привязок. Это рекомендуемый подход для регистрации расширений привязки. Пакеты расширений также удаляют требование установки пакета SDK для .NET Core 2. x.

Использовать пакеты расширений

Самый простой способ установить расширения привязки — включить пакеты расширений. При этом автоматически устанавливается набор стандартных пакетов расширений.

Чтобы включить пакеты расширений, откройте файл host.json и обновите его содержимое так, чтобы оно соответствовало следующему коду:

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

Дополнительные сведения см. в статье Регистрация расширений привязки функций Azure. Перед добавлением привязок в function.jsв файле необходимо добавить расширения расширений в host.js.

Явно установить расширения

Если вы не можете использовать пакеты расширений, можно использовать Azure Functions Core Tools локально для установки конкретных пакетов расширений, необходимых для проекта.

Важно!

Вы не можете явно устанавливать расширения в приложении-функции, использующем пакеты расширений. Удалите extensionBundle раздел host.json перед явной установкой расширений.

Ниже описаны некоторые причины, по которым может потребоваться установить расширения вручную.

  • Необходимо получить доступ к определенной версии расширения, которая недоступна в пакете.
  • Необходимо получить доступ к пользовательскому расширению, недоступному в пакете.
  • Необходимо получить доступ к конкретному сочетанию расширений, недоступному в одном пакете.

Примечание

Чтобы вручную установить расширения с помощью основных средств, необходимо установить пакет SDK для .NET Core 2. x . Пакет SDK для .NET Core используется Azure Functions Core Tools для установки расширений из NuGet. Вам не нужно знать .NET для использования расширений функций Azure.

При явной установке расширений файл проекта .NET с именем Extensions. csproj добавляется в корень проекта. Этот файл определяет набор пакетов NuGet, необходимых для ваших функций. Несмотря на то, что в этом файле можно работать со ссылками на пакет NuGet , основные инструменты позволяют устанавливать расширения без необходимости вручную редактировать файл.

Существует несколько способов использования основных средств для установки требуемых расширений в локальный проект.

Установить все расширения

Используйте следующую команду, чтобы автоматически добавить все пакеты расширений, используемые привязками в локальном проекте:

func extensions install

Команда считывает function.jsв файле для просмотра необходимых пакетов, устанавливает их и перестраивает проект Extensions (Extensions. csproj). Затем добавляются все новые привязки в текущей версии, но существующие привязки не обновляются. Используйте параметр --force, чтобы обновить существующие привязки до последней версии при установке новых пакетов.

Если приложение функции использует привязки, которые не распознаются основными средствами, необходимо вручную установить конкретное расширение.

Установка определенного расширения

Используйте следующую команду, чтобы установить конкретный пакет расширения в определенной версии, в данном случае это расширение хранилища:

func extensions install --package Microsoft.Azure.WebJobs.Extensions.Storage --version 4.0.2

Файл с локальными параметрами

В локальном файле local.settings.json хранятся параметры приложения, строки подключения и параметры для локальных средств разработки. Параметры в файле local.settings.json используются только при локальном выполнении проектов. Файл локальных параметров имеет следующую структуру:

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "<language worker>",
    "AzureWebJobsStorage": "<connection-string>",
    "AzureWebJobsDashboard": "<connection-string>",
    "MyBindingConnection": "<binding-connection-string>",
    "AzureWebJobs.HttpExample.Disabled": "true"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*",
    "CORSCredentials": false
  },
  "ConnectionStrings": {
    "SQLConnectionString": "<sqlclient-connection-string>"
  }
}

При локальном выполнении проектов поддерживаются следующие параметры:

Параметр Описание
IsEncrypted Если этот параметр имеет значение true, все значения шифруются с помощью ключа локального компьютера. Используется с командами func settings. Значение по умолчанию — false. Возможно, вам потребуется зашифровать файл local.settings.json на локальном компьютере, если он содержит секреты, например строки подключения службы. Узел автоматически расшифровывает параметры при запуске. Перед чтением локально зашифрованных параметров используйте команду func settings decrypt.
Values Массив параметров приложения и строк подключения, используемых при локальном выполнении проекта. Эти пары "ключ — значение" (строковые выражения) соответствуют параметрам приложения-функции в Azure, например AzureWebJobsStorage. Многие триггеры и привязки имеют свойство, относящееся к строке подключения параметра приложения, например Connection для триггера хранилища BLOB-объектов. Для таких свойств требуется определить параметр приложения в массиве Values. Список часто используемых параметров см. в следующей таблице.
Значения должны быть строками, а не объектами JSON или массивами. Имена параметров не могут содержать двоеточие (:) или двойное подчеркивание (__). Символы двойного подчеркивания зарезервированы средой выполнения, а двоеточие зарезервировано для поддержки внедрения зависимостей.
Host Параметры в этом разделе служат для настройки хост-процесса Функций при выполнении проектов в локальной среде. Эти параметры отделены от параметров host.json, которые также применяются при выполнении проектов в Azure.
LocalHttpPort Задает порт по умолчанию, используемый при выполнении локального узла Функций (func host start и func run). Аргумент командной строки --port имеет приоритет над этим параметром. Например, при выполнении в интегрированной среде разработки Visual Studio вы можете изменить номер порта, перейдя в окно "Свойства проекта -> Отладка" и явно указав номер порта в host start --port <your-port-number> команде, которая может быть указана в поле "аргументы приложения".
CORS Определяет источники, для которых разрешен общий доступ к ресурсам независимо от источника (CORS). Источники указываются в виде разделенного запятыми списка без пробелов. Допускается подстановочное значение (*), разрешающее запросы из любого источника.
CORSCredentials Если задано значение true, разрешает запросы withCredentials.
ConnectionStrings Коллекция. Не применяйте эту коллекцию для строк подключения, используемых привязками функций. Эта коллекция используется только платформами, которые обычно получают строки подключений из раздела ConnectionStrings в файле конфигурации, как например Entity Framework. Строки подключения, содержащиеся в этом объекте, добавляются в среду с типом поставщика System.Data.SqlClient. Элементы этой коллекции не публикуются в Azure с другими параметрами приложения. Необходимо явным образом добавить эти значения в коллекцию Connection strings в настройках приложения-функции. Если вы создаете параметр SqlConnection в коде функции, следует сохранить значение строки подключения на портале в Параметрах приложения, вместе с другими подключениями.

Следующие параметры приложения можно включать в массив Values при локальном запуске.

Параметр Значения Описание
AzureWebJobsStorage Строка подключения учетной записи хранения или
UseDevelopmentStorage=true
Содержит строку подключения для учетной записи хранения Azure Требуется при использовании триггеров, отличающихся от HTTP. См. справочник по AzureWebJobsStorage.
При наличии локального эмулятора службы хранилища Azure вы можете задать для AzureWebJobsStorage значение UseDevelopmentStorage=true, чтобы в Core Tools использовался эмулятор. Эмулятор удобно использовать во время разработки, но перед развертыванием следует проверить работу с реальным подключением к хранилищу.
AzureWebJobs.<FUNCTION_NAME>.Disabled true|false Чтобы отключить функцию при локальном выполнении, добавьте в коллекцию "AzureWebJobs.<FUNCTION_NAME>.Disabled": "true", где <FUNCTION_NAME> — имя функции. См. сведения о том, как отключать и включать функции в Функциях Azure.
FUNCTIONS_WORKER_RUNTIME dotnet
node
java
powershell
python
Указывает целевой язык среды выполнения Функций. Требуется для среды выполнения Функций версии 2.x и выше. Этот параметр создается для проекта с помощью Core Tools. См. справочник по FUNCTIONS_WORKER_RUNTIME.
FUNCTIONS_WORKER_RUNTIME_VERSION ~7 Указывает, что PowerShell 7 будет использоваться при локальном запуске. Если параметр не задан, используется PowerShell Core 6. Этот параметр используется только при локальном запуске. При запуске в Azure версия среды выполнения PowerShell определяется параметром конфигурации сайта powerShellVersion, который можно настроить на портале.

По умолчанию эти параметры не переносятся автоматически при публикации проекта в Azure. При публикации используйте параметр --publish-local-settings, чтобы добавить эти параметры в приложение-функцию в Azure. Обратите внимание, что значения ConnectionStrings никогда не публикуются.

Эти значения параметров приложения-функции также могут считываться в коде как переменные среды. Дополнительные сведения см. в разделе о переменных среды в этих справочниках для определенного языка:

Если не задана допустимая строка подключения к хранилищу AzureWebJobsStorage и не используется эмулятор, отображается следующее сообщение об ошибке:

Отсутствует значение AzureWebJobsStorage в local.settings.json. 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).

Получение параметров строк подключения службы хранилища

Даже при использовании эмулятор хранения Microsoft Azure для разработки может потребоваться проверить фактическое подключение к хранилищу. При условии, что ваша учетная запись хранения создана, действительную строку подключения к хранилищу можно получить одним из следующих способов:

  • В портал Azureнайдите и выберите учетные записи хранения. Выберите учетные записи хранения из портал Azure

    Выберите учетную запись хранения, выберите ключи доступа в параметрах, а затем скопируйте одно из значений строки подключения . Копирование строки подключения с портала Microsoft Azure

  • Подключитесь к учетной записи Azure с помощью Обозревателя службы хранилища Azure. В обозревателе разверните подписку, разверните учетные записи хранения, выберите свою учетную запись хранения и скопируйте строку первичной или вторичной строки подключения.

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

  • Используйте основные средства из корневого каталога проекта, чтобы скачать строку подключения из Azure с помощью одной из следующих команд:

    • Загрузите все параметры из существующего приложения-функции:

      func azure functionapp fetch-app-settings <FunctionAppName>
      
    • Получите строку подключения для указанной учетной записи хранения:

      func azure storage fetch-connection-string <StorageAccountName>
      

      Если вы еще не вошли в Azure, вам будет предложено сделать это. Эти команды переписывают любые существующие параметры в local.settings.jsв файле.

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

Чтобы создать функцию, выполните следующую команду:

func new

В версии 3. x/2. x при запуске вам будет func new предложено выбрать шаблон на языке по умолчанию для приложения-функции, а затем будет предложено выбрать имя функции. В версии 1.x также предлагается выбрать язык.

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

Код функции создается во вложенной папке с предоставленным именем функции, как показано в следующем выходе триггера очереди.

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

Эти параметры можно также задать в команде, указав следующие аргументы.

Аргумент Описание
--csx (Версии 2. x и более поздних версий.) Создает те же шаблоны скрипта C# (. CSX), которые используются в версии 1. x и на портале.
--language, -l Язык программирования шаблона, например C#, F# или JavaScript. Этот параметр необходим в версии 1.x. В версии 2. x и более поздних версиях не используйте этот параметр или выберите язык, соответствующий рабочей среде выполнения.
--name, -n Имя функции.
--template, -t Используйте команду func templates list, чтобы просмотреть полный список доступных шаблонов для каждого поддерживаемого языка.

Например, чтобы создать триггер HTTP на JavaScript одной командой, выполните следующую команду.

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

Чтобы создать активируемую с помощью очереди функцию одной командой, выполните следующую команду.

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

Запуск функций в локальной среде

Чтобы запустить проект службы "Функции", запустите узел этой службы. Узел включает триггеры для всех функций в проекте. Команда запуска зависит от языка проекта.

func start --build

Примечание

Версия 1. x среды выполнения функций требует host команду, как показано в следующем примере:

func host start

func start имеет указанные ниже параметры.

Параметр Описание
--no-build Не выполняйте сборку текущего проекта перед запуском. Только для проектов .NET. По умолчанию установлено значение false. Не поддерживается для версии 1. x.
--cors-credentials Разрешить запросы с проверкой подлинности от источника (т. е. файлы cookie и заголовок проверки подлинности), которые не поддерживаются для версии 1. x.
--cors Список разрешенных источников CORS, разделенный запятыми без пробелов.
--language-worker Аргументы для настройки обработчика языка. Например, вы можете включить отладку для рабочей роли языка, предоставив порт отладки и другие необходимые аргументы. Не поддерживается для версии 1. x.
--cert Путь к PFX-файлу, который содержит закрытый ключ. Используется только с --useHttps. Не поддерживается для версии 1. x.
--password Пароль или файл, содержащий пароль для PFX-файла. Используется только с --cert. Не поддерживается для версии 1. x.
--port, -p Локальный порт для прослушивания. Значение по умолчанию: 7071.
--pause-on-error Приостановка для получения дополнительных входных данных перед выходом из процесса. Используется только при запуске набора инструментов Core Tools из интегрированной среды разработки.
--script-root, --prefix Используется для указания пути к корню приложения-функции, которое необходимо запустить или развернуть. Используется для скомпилированных проектов, которые создают файлы проекта во вложенной папке. Например, при сборке проекта библиотеки классов C# файлы host.json, local.settings.json и function.json создаются в корневой вложенной папке с путем, таким как MyProject/bin/Debug/netstandard2.0. В этом случае задайте для префикса значение --script-root MyProject/bin/Debug/netstandard2.0. Это корень приложения-функции, работающего в Azure.
--timeout, -t Время ожидания для запуска узла службы "Функции" в секундах. Значение по умолчанию — 20 секунд.
--useHttps Привязка к https://localhost:{port}, а не к http://localhost:{port}. По умолчанию этот параметр создает доверенный сертификат на компьютере.

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

Found the following functions:
Host.Functions.MyHttpTrigger

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

Важно!

При локальном запуске авторизация для конечных точек HTTP не применяется. Это означает, что все локальные HTTP-запросы будут обрабатываться как authLevel = "anonymous". Дополнительные сведения см. в статье о привязке HTTP.

Передача тестовых данных в функцию

Чтобы протестировать функции в локальной среде, запустите узел службы "Функции" и вызовите конечные точки на локальном сервере, используя HTTP-запросы. Вызываемая конечная точка зависит от типа функции.

Примечание

В примерах в этой статье используется инструмент cURL для отправки HTTP-запросов из терминала или командной строки. Вы можете использовать любой инструмент для отправки HTTP-запросов к локальному серверу. Это средство по умолчанию доступно в системах на основе Linux и Windows 10 Build 17063 и более поздних версий. В более старых версиях Windows необходимо сначала загрузить и установить инструмент для установки фигурного инструмента.

Дополнительные сведения о тестировании функций см. в статье Методика тестирования кода с помощью Функций Azure.

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

Вызовите следующую конечную точку, чтобы запустить в локальной среде функции, активируемые по протоколу HTTP или с помощью веб-перехватчика.

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

Используйте то же имя сервера и порт, прослушиваемый узлом службы "Функции". Их можно найти в выходных данных, полученных при запуске узла службы "Функции". Этот URL-адрес можно вызвать с помощью любого метода HTTP с поддержкой триггера.

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

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

В следующем примере представлена та же функция, вызываемая из запроса POST с передачей параметра name в тексте запроса:

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

Запросы GET можно выполнять из браузера, передавая данные в строке запроса. Для всех остальных методов HTTP необходимо использовать cURL, Fiddler, Postman или аналогичный инструмент тестирования HTTP.

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

Для всех видов функций, отличных от триггеров HTTP, веб-перехватчиков и триггеров сетки событий, можно протестировать функции локально, вызвав конечную точку администрирования. Вызов этой конечной точки при помощи запроса HTTP POST на локальном сервере активирует функцию.

Чтобы протестировать функции, активируемые в службе "Сетка событий" локально, см. раздел Локальное тестирование с помощью средства просмотра.

При необходимости можно передать тестовые данные в среду выполнения в тексте запроса POST. Это аналогично выполнению функции с помощью вкладки Тест на портале Azure.

Вызовите следующую конечную точку администрирования, чтобы активировать функции, отличные от HTTP:

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

Чтобы передать тестовые данные в конечную точку администрирования функции, укажите данные в тексте запроса POST. Текст сообщения должен иметь следующий формат JSON:

{
    "input": "<trigger_input>"
}

Значение <trigger_input> содержит данные в формате, ожидаемом функцией. В следующем примере представлен запрос POST к функции QueueTriggerJS. В этом случае входные данные представляют собой строку, соответствующую сообщению, которое нужно найти в очереди.

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

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

Важно!

func runКоманда поддерживается только в версии 1. x средств. Дополнительные сведения см. в статье Выбор целевых версий среды выполнения Функций Azure.

В версии 1. x можно также вызвать функцию напрямую с помощью func run <FunctionName> и предоставить входные данные для функции. Эта команда аналогична выполнению функции с помощью вкладки Тест на портале Azure.

func run имеет указанные ниже параметры.

Параметр Описание
--content, -c Встроенное содержимое.
--debug, -d Подключение отладчика к хост-процессу перед выполнением функции.
--timeout, -t Время ожидания (в секундах), пока не будет готов локальный узел службы "Функции".
--file, -f Имя файла для использования в качестве содержимого.
--no-interactive Не запрашивает тип входных данных. Полезно для сценариев автоматизации.

Например, для вызова функции, активируемой по HTTP, и передачи основного содержимого выполните следующую команду:

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

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

Azure Functions Core Tools поддерживает два типа развертывания: развертывание файлов проекта функции непосредственно в приложение-функцию через Zip- развертывание и Развертывание пользовательского контейнера DOCKER. Вы должны уже создали приложение-функцию в подписке Azure, в которой вы развернете свой код. Проекты, для которых требуется компиляция, должны быть созданы таким образом, чтобы двоичные файлы можно было развернуть.

Важно!

Для публикации в Azure из основных средств необходимо установить Azure CLI или Azure PowerShell локально.

Папка проекта может содержать файлы и каталоги, относящиеся к языку, которые не должны публиковаться. Исключенные элементы перечислены в файле фунЦигноре в корневой папке проекта.

Развертывание файлов проекта

Чтобы опубликовать локальный код в виде приложения-функции в Azure, используйте команду publish:

func azure functionapp publish <FunctionAppName>

Важно!

Java использует Maven для публикации локального проекта в Azure. Для публикации в Azure используйте следующую команду: mvn azure-functions:deploy . Ресурсы Azure создаются во время первоначального развертывания.

Эта команда публикует в существующее приложение-функцию в Azure. При попытке публикации в <FunctionAppName> , который не существует в вашей подписке, возникает ошибка. Сведения о создании приложения-функции из командной строки или окна терминала с помощью Azure CLI или Azure PowerShell см. в разделе создание приложение-функция для бессерверного выполнения. По умолчанию эта команда использует удаленную сборку и развертывает приложение для запуска из пакета развертывания. Чтобы отключить этот рекомендуемый режим развертывания, используйте --nozip параметр.

Важно!

При создании приложения-функции в портал Azure используется версия 3. x среды выполнения функции по умолчанию. Чтобы в приложении-функции использовалась среда выполнения версии 1.x, следуйте инструкциям, приведенным в разделе Создание приложений 1.x. Изменить версию среды выполнения для приложения-функции, в котором уже есть функции, невозможно.

Следующие параметры публикации применяются ко всем версиям:

Параметр Описание
--publish-local-settings -i Публикация параметров из файла local.settings.json в Azure с запросом на перезапись, если параметр уже существует. При использовании эмулятор хранения Microsoft Azure сначала измените параметр приложения на реальное подключение к хранилищу.
--overwrite-settings -y Отключите запрос на перезапись параметров приложения при использовании --publish-local-settings -i.

Следующие варианты публикации поддерживаются только для версии 2. x и более поздних версий:

Параметр Описание
--publish-settings-only, -o Только публикует параметры и пропускает содержимое. Значение по умолчанию — запрос.
--list-ignored-files Отображает основанный на файле FUNCIGNORE список файлов, которые будут проигнорированы во время публикации.
--list-included-files Отображает основанный на файле FUNCIGNORE список файлов, которые будут опубликованы.
--nozip Выключает режим по умолчанию Run-From-Package.
--build-native-deps Пропускает создание папки. Wheels при публикации приложений функции Python.
--build, -b Выполняет действие сборки при развертывании в приложении-функции Linux. Принимает: remote и local .
--additional-packages Создает список пакетов установки при создании собственных зависимостей. Например, python3-dev libevent-dev.
--force Пропускает проверку, выполняемую до публикации, в определенных сценариях.
--csx Публикует проект скрипта C# (CSX).
--no-build Проект не создан во время публикации. Для Python pip install не выполняется.
--dotnet-cli-params При публикации скомпилированных функций C# (CSPROJ) набор инструментов Core Tools вызывает dotnet build --output bin/publish. Все параметры, передаваемые в этот метод, будут добавлены в командную строку.

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

Функции Azure позволяют развертывать проект функции в пользовательском контейнере DOCKER. Дополнительные сведения см. в статье Создание функции в Linux из пользовательского образа (предварительная версия). В пользовательских контейнерах должен быть файл Docker. Чтобы создать приложение с Dockerfile, используйте параметр--Dockerfile в func init .

func deploy

Для пользовательского контейнера доступны следующие параметры развертывания:

Параметр Описание
--registry Имя реестра Docker, в который вошел текущий пользователь.
--platform Платформа размещения для приложения-функции. Допустимые параметры: kubernetes.
--name Имя приложения-функции.
--max При необходимости задает максимальное число экземпляров приложения-функции, в которые будет выполняться развертывание.
--min При необходимости задает минимальное число экземпляров приложения-функции, в которые будет выполняться развертывание.
--config Задает дополнительный файл конфигурации развертывания.

Мониторинг функций

Чтобы отслеживать выполнение функций, рекомендуется выполнить интеграцию с Azure Application Insights. Вы также можете выполнять потоковую передачу журналов выполнения на локальный компьютер. Дополнительные сведения см. в статье Мониторинг Функций Azure.

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

Интеграция с Application Insights должна быть включена при создании приложения функции в Azure. Если по какой либо причине приложение функции не подключено к Application Insights экземпляру, это легко сделать в портал Azure. Дополнительные сведения см. в разделе Включение интеграции Application Insights.

Включить журналы потоковой передачи

Вы можете просмотреть поток файлов журнала, создаваемых функциями в сеансе командной строки на локальном компьютере.

Встроенная потоковая передача журналов

Параметр logstream позволяет получать журналы потоковой передачи конкретного приложения-функции, работающего в Azure, как показано в следующем примере:

func azure functionapp logstream <FunctionAppName>

Примечание

Встроенная потоковая передача журналов пока что не поддерживается в Core Tools для приложений-функций, выполняемых в Linux в рамках плана "Потребление". Чтобы просматривать журналы почти в реальном времени, для таких планов размещения необходимо использовать Live Metrics Stream.

Динамический поток метрик

Вы можете просмотреть журналы Live Metrics Stream для своего приложения-функции в новом окне браузера. Для этого включите параметр --browser, как показано в следующем примере:

func azure functionapp logstream <FunctionAppName> --browser

Для этого типа журналов потоковой передачи требуется включить интеграцию Application Insights для приложения функции.

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

Узнайте, как разрабатывать, тестировать и публиковать функции Azure с помощью Azure Functions Core Tools модуль обучения майкрософт Azure functions Core Tools является открытым исходным кодом и размещается на GitHub.
Чтобы зарегистрировать ошибку или отправить запрос на функцию, откройте вопрос на GitHub.