Руководство для разработчиков по Функциям AzureAzure Functions developers guide

Некоторые из Функций Azure имеют ряд общих технических особенностей и компонентов вне зависимости от используемого языка или привязки.In Azure Functions, specific functions share a few core technical concepts and components, regardless of the language or binding you use. Прежде чем приступать к детальному изучению особенностей, характерных для определенного языка или привязки, ознакомьтесь с этими общими сведениями.Before you jump into learning details specific to a given language or binding, be sure to read through this overview that applies to all of them.

В этой статье предполагается, что вы уже прочли статью Общие сведения о Функциях Azure.This article assumes that you've already read the Azure Functions overview.

Код функцииFunction code

Ключевым элементом решения "Функции Azure" является функция .A function is the primary concept in Azure Functions. Функция состоит из двух важных частей: ваш код, написан на разных языках, и файл конфигурации function.json.A function contains two important pieces - your code, which can be written in a variety of languages, and some config, the function.json file. Для компилируемых языков этот файл создается автоматически из заметки к вашему коду.For compiled languages, this config file is generated automatically from annotations in your code. Для сценарных языков вы должны предоставить файл конфигурации самостоятельно.For scripting languages, you must provide the config file yourself.

Файл function.json определяет триггер, привязки и другие параметры конфигурации функции.The function.json file defines the function's trigger, bindings, and other configuration settings. Каждая функция имеет только один триггер.Every function has one and only one trigger. В среде выполнения этот файл используется для определения событий, которые необходимо отслеживать, и способа передачи данных в выполнение функции и возвращения данных из него.The runtime uses this config file to determine the events to monitor and how to pass data into and return data from a function execution. Ниже приведен пример файла function.json.The following is an example function.json file.

{
    "disabled":false,
    "bindings":[
        // ... bindings here
        {
            "type": "bindingType",
            "direction": "in",
            "name": "myParamName",
            // ... more depending on binding
        }
    ]
}

Дополнительные сведения см. в статье Основные понятия триггеров и привязок в Функциях Azure.For more information, see Azure Functions triggers and bindings concepts.

В свойстве bindings указываются свойства триггеров и привязок.The bindings property is where you configure both triggers and bindings. Каждая привязка имеет ряд общих параметров и некоторые параметры, характерные для данного типа привязки.Each binding shares a few common settings and some settings which are specific to a particular type of binding. Для каждой привязки требуются указанные ниже параметры.Every binding requires the following settings:

СвойствоProperty Значения и типыValues/Types КомментарииComments
type stringstring Тип привязки.Binding type. Например, queueTrigger.For example, queueTrigger.
direction "in", "out"'in', 'out' Указывает, служит ли привязка для получения данных в функции или для отправки их из функции.Indicates whether the binding is for receiving data into the function or sending data from the function.
name stringstring Имя, используемое для связанных данных в функции.The name that is used for the bound data in the function. Для C# это имя аргумента, а для JavaScript — ключ в списке ключей и значений.For C#, this is an argument name; for JavaScript, it's the key in a key/value list.

Приложение-функцияFunction app

Приложение-функция предоставляет контекст выполнения в Azure, в котором выполняются функции.A function app provides an execution context in Azure in which your functions run. Таким образом, это единица развертывания и управления для ваших функций.As such, it is the unit of deployment and management for your functions. Приложение-функция состоит из одной или нескольких независимых функций, которые управляются, развертываются и масштабируются вместе.A function app is comprised of one or more individual functions that are managed, deployed, and scaled together. Все функции в приложении-функции совместно используют один план ценообразования, метод развертывания и версию среды выполнения.All of the functions in a function app share the same pricing plan, deployment method, and runtime version. Приложение-функцию можно рассматривать как способ упорядочения функций и совместного управления ими.Think of a function app as a way to organize and collectively manage your functions. Дополнительные сведения см. в разделе Управление приложением-функцией.To learn more, see How to manage a function app.

Примечание

Все функции в приложении-функции должны использовать один язык.All functions in a function app must be authored in the same language. Это не было обязательным в предыдущих версиях среды выполнения "Функции Azure".In previous versions of the Azure Functions runtime, this wasn't required.

Структура папокFolder structure

Код всех функций конкретного приложения-функции хранится в корневой папке проекта, содержащей файл конфигурации главного узла и одну или несколько вложенных папок.The code for all the functions in a specific function app is located in a root project folder that contains a host configuration file and one or more subfolders. Каждая вложенная папка содержит код для отдельной функции.Each subfolder contains the code for a separate function. Структура папок показана в следующем представлении:The folder structure is shown in the following representation:

FunctionApp
 | - host.json
 | - MyFirstFunction
 | | - function.json
 | | - ...  
 | - MySecondFunction
 | | - function.json
 | | - ...  
 | - SharedCode
 | - bin

В версии 2. x и более поздних версиях среды выполнения функций все функции в приложении функции должны совместно использовать один и тот же стек языка.In version 2.x and higher of the Functions runtime, all functions in the function app must share the same language stack.

Файл Host. JSON содержит конфигурации, зависящие от среды выполнения, и находится в корневой папке приложения-функции.The host.json file contains runtime-specific configurations and is in the root folder of the function app. Папка bin содержит пакеты и другие файлы библиотеки, необходимые приложению-функции.A bin folder contains packages and other library files that the function app requires. См. требования конкретного языка для проекта приложения-функции:See the language-specific requirements for a function app project:

Выше приведена структура папки по умолчанию (рекомендуемая) для приложения-функции.The above is the default (and recommended) folder structure for a Function app. Если вы желаете изменить расположение файла кода функции, измените раздел scriptFile в файле function.json.If you wish to change the file location of a function's code, modify the scriptFile section of the function.json file. Мы рекомендуем развертывать проект в приложение-функцию в Azure путем развертывания пакета.We also recommend using package deployment to deploy your project to your function app in Azure. Вы также можете использовать имеющиеся средства, такие как непрерывная интеграция и развертывание и Azure DevOps.You can also use existing tools like continuous integration and deployment and Azure DevOps.

Примечание

Если вы развертываете пакет вручную, убедитесь, что развертываете файл host.json и папки функций непосредственно в папку wwwroot.If deploying a package manually, make sure to deploy your host.json file and function folders directly to the wwwroot folder. Не включайте папку wwwroot в развертывания.Do not include the wwwroot folder in your deployments. В противном случае вы получите папки wwwroot\wwwroot.Otherwise, you end up with wwwroot\wwwroot folders.

Использование локальных инструментов и публикацияUse local tools and publishing

Приложения-функции можно разрабатывать и публиковать с помощью различных средств, включая Visual Studio, Visual Studio Code, IntelliJ, Eclipse и Azure Functions Core Tools.Function apps can be authored and published using a variety of tools, including Visual Studio, Visual Studio Code, IntelliJ, Eclipse, and the Azure Functions Core Tools. Дополнительные сведения см. в статье Как программировать и тестировать Функции Azure в локальной среде.For more information, see Code and test Azure Functions locally.

Редактирование функций на портале AzureHow to edit functions in the Azure portal

Редактор функций на портале Azure позволяет обновлять файл function.json и файл кода для функции непосредственно на портале.The Functions editor built into the Azure portal lets you update your code and your function.json file directly inline. Рекомендуется использовать его только для небольших изменений или для подтверждения концепции. Наиболее оптимальным способом является использование локального средства разработки, например, VS Code.This is recommended only for small changes or proofs of concept - best practice is to use a local development tool like VS Code.

Параллельное выполнениеParallel execution

Если однопотоковая среда выполнения функций не успевает обрабатывать активируемые события, она может вызывать функцию несколько раз в параллельном режиме.When multiple triggering events occur faster than a single-threaded function runtime can process them, the runtime may invoke the function multiple times in parallel. Если для приложения-функции используется план потребления, это приложение может автоматически развертываться.If a function app is using the Consumption hosting plan, the function app could scale out automatically. Каждый экземпляр приложения-функции, как при использовании плана потребления, так и при использовании обычного плана размещения службы приложений, может обрабатывать несколько параллельных вызовов функции с помощью нескольких потоков.Each instance of the function app, whether the app runs on the Consumption hosting plan or a regular App Service hosting plan, might process concurrent function invocations in parallel using multiple threads. Максимальное количество одновременных вызовов функции в каждом экземпляре приложения-функции зависит от типа триггера и ресурсов, используемых функциями в приложении-функции.The maximum number of concurrent function invocations in each function app instance varies based on the type of trigger being used as well as the resources used by other functions within the function app.

Управление версиями среды выполнения ФункцийFunctions runtime versioning

Версию среды выполнения Функций можно настроить с помощью параметра приложения FUNCTIONS_EXTENSION_VERSION.You can configure the version of the Functions runtime using the FUNCTIONS_EXTENSION_VERSION app setting. Например, значение "~ 3" означает, что приложение-функция будет использовать 3. x в качестве основной версии.For example, the value "~3" indicates that your Function App will use 3.x as its major version. При выпуске приложения-функции обновляются до версии с новым дополнительным номером.Function Apps are upgraded to each new minor version as they are released. Дополнительные сведения, в том числе инструкции по просмотру точной версии приложения-функции см. в статье Выбор целевых версий среды выполнения Функций Azure.For more information, including how to view the exact version of your function app, see How to target Azure Functions runtime versions.

РепозиторииRepositories

Код функций Azure имеет вид открытого исходного кода и хранится в репозиториях GitHub:The code for Azure Functions is open source and stored in GitHub repositories:

ПривязкиBindings

В таблице ниже приведены все поддерживаемые привязки.Here is a table of all supported bindings.

В этой таблице показаны привязки, которые поддерживаются в основных версиях среды выполнения функций Azure:This table shows the bindings that are supported in the major versions of the Azure Functions runtime:

ТипType 1.x1.x 2. x и выше12.x and higher1 ТриггерTrigger Входные данныеInput Выходные данныеOutput
Хранилище BLOB-объектовBlob storage
Cosmos DBCosmos DB
Сетка событийEvent Grid
Центры событийEvent Hubs
Веб-перехватчики HTTP &HTTP & webhooks
Центр Интернета вещейIoT Hub
Таблицы Excel
Microsoft Graph
Microsoft Graph
Excel tables
Файлы OneDrive
Microsoft Graph
Microsoft Graph
OneDrive files
Электронная почта Outlook
Microsoft Graph
Microsoft Graph
Outlook email
События
Microsoft Graph
Microsoft Graph
events
Маркеры безопасности
Microsoft Graph
Microsoft Graph
Auth tokens
Мобильные приложенияMobile Apps
центры уведомленийNotification Hubs
Хранилище очередейQueue storage
SendGridSendGrid
Служебная шинаService Bus
SignalRSignalR
Хранилище таблицTable storage
ТаймерTimer
TwilioTwilio

1 начиная с среды выполнения версии 2. x все привязки, за исключением HTTP и Timer, должны быть зарегистрированы.1 Starting with the version 2.x runtime, all bindings except HTTP and Timer must be registered. Ознакомьтесь с разделом Регистрация расширений привязки.See Register binding extensions.

Проблемы с ошибками, поступающими от привязок?Having issues with errors coming from the bindings? См. документацию по кодам ошибок Функций Azure.Review the Azure Functions Binding Error Codes documentation.

Создание отчетов о проблемахReporting Issues

ЭлементItem ОписаниеDescription СсылкаLink
Среда выполненияRuntime Сервер сценариев, триггеры и привязки, языковая поддержкаScript Host, Triggers & Bindings, Language Support Сообщить о проблемеFile an Issue
ШаблоныTemplates Проблемы с кодом при использовании шаблона созданияCode Issues with Creation Template Сообщить о проблемеFile an Issue
ПорталPortal Проблемы с пользовательским интерфейсом или при работе с нимUser Interface or Experience Issue Сообщить о проблемеFile an Issue

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

Для получения дополнительных сведений см. следующие ресурсы:For more information, see the following resources: