Разработка Функций Azure с помощью Visual StudioDevelop Azure Functions using Visual Studio

Visual Studio позволяет разрабатывать, тестировать и развертывать C# функции библиотеки классов в Azure.Visual Studio lets you develop, test, and deploy C# class library functions to Azure. Если вы впервые сталкиваетесь с функциями Azure, дополнительные сведения см. в статье Общие сведения о Функциях Azure.If this experience is your first with Azure Functions, you can learn more at An introduction to Azure Functions.

Visual Studio предоставляет следующие преимущества при разработке функций:Visual Studio provides the following benefits when develop your functions:

  • Создание, редактирование и выполнение функций на локальном компьютере для разработки.Edit, build, and run functions on your local development computer.
  • Опубликуйте проект функций Azure непосредственно в Azure и при необходимости создайте ресурсы Azure.Publish your Azure Functions project directly to Azure, and create Azure resources as needed.
  • Используйте C# атрибуты для объявления привязок функций непосредственно в C# коде.Use C# attributes to declare function bindings directly in the C# code.
  • Разработка и развертывание предварительно скомпилированных функций C#.Develop and deploy pre-compiled C# functions. Предварительно скомпилированные функции обеспечивают более высокую производительность при холодном запуске, чем функции C# на основе сценариев.Pre-complied functions provide a better cold-start performance than C# script-based functions.
  • Программирование функций в C#, сохраняя при этом все преимущества разработки в Visual Studio.Code your functions in C# while having all of the benefits of Visual Studio development.

В этой статье содержатся сведения об использовании Visual Studio для разработки C# функций библиотеки классов и их публикации в Azure.This article provides details about how to use Visual Studio to develop C# class library functions and publish them to Azure. Перед прочтением этой статьи необходимо выполнить действия из статьи Создание первой функции с помощью Visual Studio.Before you read this article, you should complete the Functions quickstart for Visual Studio.

Если не указано иное, процедуры и примеры приведены для Visual Studio 2019.Unless otherwise noted, procedures and examples shown are for Visual Studio 2019.

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

Средства функций Azure входят в рабочую нагрузку разработки Azure Visual Studio, начиная с Visual Studio 2017.Azure Functions Tools is included in the Azure development workload of Visual Studio starting with Visual Studio 2017. Убедитесь, что в установку Visual Studio включена рабочая нагрузка разработки Azure .Make sure you include the Azure development workload in your Visual Studio installation.

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начать работу.If you don't have an Azure subscription, create a free account before you begin.

Другие необходимые ресурсы, например учетная запись хранения Azure, создаются в подписке во время процесса публикации.Other resources that you need, such as an Azure Storage account, are created in your subscription during the publishing process.

Примечание

В Visual Studio 2017 Рабочая нагрузка разработки Azure устанавливает инструменты функций Azure как отдельное расширение.In Visual Studio 2017, the Azure development workload installs the Azure Functions Tools as a separate extension. При обновлении Visual Studio 2017 также убедитесь, что вы используете самую последнюю версию средств функций Azure.When you update your Visual Studio 2017, also make sure that you are using the most recent version of the Azure Functions tools. В следующих разделах показано, как проверить и (при необходимости) обновить расширение средств работы с функциями Azure в Visual Studio 2017.The following sections show you how to check and (if needed) update your Azure Functions Tools extension in Visual Studio 2017.

Если вы используете Visual Studio 2019, пропустите этот раздел.Please skip these section when using Visual Studio 2019.

Проверка версии инструментов в Visual Studio 2017Check your tools version in Visual Studio 2017

  1. В меню Сервис выберите пункт Расширения и обновления.From the Tools menu, choose Extensions and Updates. Разверните Установленные > Инструменты и выберите Azure Functions and Web Jobs Tools (Инструменты для решения "Функции Azure" и веб-заданий).Expand Installed > Tools and choose Azure Functions and Web Jobs Tools.

    Проверка версии инструментов решения "Функции Azure"

  2. Запишите номер установленной версии.Note the installed Version. Вы можете сравнить эту версию с последней версией, указанной в заметках о выпуске.You can compare this version with the latest version listed in the release notes.

  3. Если вы используете более раннюю версию, обновите инструменты в Visual Studio, как показано в следующем разделе.If your version is older, update your tools in Visual Studio as shown in the following section.

Обновление средств в Visual Studio 2017Update your tools in Visual Studio 2017

  1. В диалоговом окне Расширения и обновления последовательно выберите Обновления > Visual Studio Marketplace, Azure Functions and Web Jobs Tools (Инструменты для решения "Функции Azure" и веб-заданий) и нажмите кнопку Обновить.In the Extensions and Updates dialog, expand Updates > Visual Studio Marketplace, choose Azure Functions and Web Jobs Tools and select Update.

    Обновление версии инструментов решения "Функции Azure"

  2. Скачав обновления для инструментов, закройте Visual Studio, чтобы активировать обновления с помощью установщика VSIX.After the tools update is downloaded, close Visual Studio to trigger the tools update using the VSIX installer.

  3. В установщике нажмите кнопку ОК, чтобы начать запуск, и выберите Изменить для обновления инструментов.In the installer, choose OK to start and then Modify to update the tools.

  4. Когда обновление завершится, нажмите кнопку Закрыть и перезапустите Visual Studio.After the update is complete, choose Close and restart Visual Studio.

Примечание

В Visual Studio 2019 и более поздних версиях расширение "средства функций Azure" обновляется как часть Visual Studio.In Visual Studio 2019 and later, the Azure Functions tools extension is updated as part of Visual Studio.

Создание проекта Функций AzureCreate an Azure Functions project

С помощью шаблона проекта функций Azure в Visual Studio можно создать проект, который затем можно опубликовать в приложении-функции в Azure.The Azure Functions project template in Visual Studio creates a project that can be published to a function app in Azure. Вы можете использовать приложение-функцию, чтобы группировать функции в логические единицы для развертывания и совместного использования ресурсов, а также управления ими.You can use a function app to group functions as a logical unit for management, deployment, and sharing of resources.

  1. В Visual Studio в меню Файл выберите пункты Создать > Проект.In Visual Studio, on the File menu, select New > Project.

  2. В диалоговом окне Создание проекта выполните поиск по строке functions, выберите шаблон Функции Azure и нажмите кнопку Далее.In the Create a new project dialog box, search for functions, choose the Azure Functions template, and select Next.

  3. Введите имя проекта и нажмите кнопку Создать.Enter a name for your project, and select Create. Имя приложения-функции должно быть допустимым в качестве пространства имен C#, поэтому не используйте символы подчеркивания, дефисы и другие символы, не являющиеся буквенно-цифровыми.The function app name must be valid as a C# namespace, so don't use underscores, hyphens, or any other nonalphanumeric characters.

  4. В диалоговом окне Создание нового приложения Функций Azure используйте следующие варианты:In Create a new Azure Functions application, use the following options:

    • Azure Functions v2 (.NET Core) (Функции Azure версии 2 (.NET Core)) 1;Azure Functions v2 (.NET Core) 1
    • триггером HTTPHTTP trigger
    • Учетная запись хранения. Эмулятор хранения;Storage Account: Storage Emulator
    • Уровень авторизации: Анонимный.Authorization level: Anonymous
    ПараметрOption Рекомендуемое значениеSuggested value ОПИСАНИЕDescription
    Среда выполнения функцийFunctions runtime Функции Azure 2.x
    (.NET Core)
    Azure Functions 2.x
    (.NET Core)
    Этот параметр создает проект функции, использующий среду выполнения Функций Azure версии 2.x, которая поддерживает .NET Core.This setting creates a function project that uses the version 2.x runtime of Azure Functions, which supports .NET Core. Функции Azure 1.x поддерживают .NET Framework.Azure Functions 1.x supports the .NET Framework. Дополнительные сведения см. в статье Azure Functions runtime versions overview (Общие сведения о версиях среды выполнения Функций Azure).For more information, see Target Azure Functions runtime version.
    Шаблон функцииFunction template триггером HTTPHTTP trigger Этот параметр создает функцию, которая активируется с помощью HTTP-запроса.This setting creates a function triggered by an HTTP request.
    Учетная запись храненияStorage Account Эмулятор храненияStorage Emulator Триггер HTTP не использует подключение к учетной записи службы хранилища Azure.An HTTP trigger doesn't use the Azure Storage account connection. Для всех триггеров других типов требуется допустимая строка подключения к учетной записи хранения.All other trigger types require a valid Storage account connection string. Так как для Функций требуется учетная запись хранения, она назначается или создается при публикации проекта в Azure.Because Functions requires a storage account, one is assigned or created when you publish your project to Azure.
    Уровень авторизацииAuthorization level АнонимныйAnonymous Создаваемую функцию может активировать любой клиент без указания ключа.The created function can be triggered by any client without providing a key. Этот параметр авторизации позволяет легко тестировать новые функции.This authorization setting makes it easy to test your new function. Дополнительные сведения о ключах и авторизации см. в разделе Ключи авторизации статьи Привязки HTTP и webhook в функциях Azure.For more information about keys and authorization, see Authorization keys in the HTTP and webhook bindings.

    Примечание

    Убедитесь, что для параметра Уровень авторизации задано значение Anonymous.Make sure you set the Authorization level to Anonymous. Если вы выберете для Function уровень по умолчанию, вы должны указать функциональную клавишу в запросах на доступ к конечной точке функции.If you choose the default level of Function, you're required to present the function key in requests to access your function endpoint.

  5. Нажмите кнопку Создать, чтобы создать проект функции и функцию, активируемую с помощью HTTP.Select Create to create the function project and HTTP-triggered function.

Шаблон проекта создает проект на C#, устанавливает пакет NuGet Microsoft.NET.Sdk.Functions и задает требуемую версию .NET Framework.The project template creates a C# project, installs the Microsoft.NET.Sdk.Functions NuGet package, and sets the target framework. Новый проект содержит следующие файлы:The new project has the following files:

  • host.json: позволяет настроить узел Функций.host.json: Lets you configure the Functions host. Эти параметры применяются как в локальном режиме, так и в Azure.These settings apply both when running locally and in Azure. Дополнительные сведения см. в справочной статье о host.json.For more information, see host.json reference.

  • local.settings.json: содержит параметры, используемые при выполнении функций локально.local.settings.json: Maintains settings used when running functions locally. Эти параметры не используются при работе в Azure.These settings aren't used when running in Azure. Дополнительные сведения см. в разделе локальный файл параметров.For more information, see Local settings file.

    Важно!

    Так как файл local.settings.json может содержать секреты, вы должны исключить его из системы управления версиями проекта.Because the local.settings.json file can contain secrets, you must excluded it from your project source control. Параметр Копировать в выходной каталог для этого файла должен всегда иметь значение Копировать, если новее.The Copy to Output Directory setting for this file should always be Copy if newer.

Для получения дополнительных сведений см. Проект библиотеки классов функций.For more information, see Functions class library project.

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

В файле Local. Settings. JSON хранятся параметры приложения, строки подключения и параметры, используемые локальными инструментами разработки.The local.settings.json file stores app settings, connection strings, and settings used by local development tools. Параметры в файле Local. Settings. JSON используются только при локальном запуске проектов.Settings in the local.settings.json file are used only when you're running projects locally. Файл локальных параметров имеет следующую структуру:The local settings file has this structure:

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

Эти параметры поддерживаются при локальном запуске проектов.These settings are supported when you run projects locally:

Параметр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. JSON, которые также применяются при запуске проектов в 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.

Параметры в local. Settings. JSON не передаются автоматически при публикации проекта.Settings in local.settings.json aren't uploaded automatically when you publish the project. Чтобы убедиться, что эти параметры также существуют в приложении функции в Azure, их необходимо отправить после публикации проекта.To make sure that these settings also exist in your function app in Azure, you must upload them after you publish your project. Дополнительные сведения см. в разделе Параметры приложения функции.To learn more, see Function app settings.

Значения ConnectionStrings никогда не публикуются.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 Environment variables.

Настройка проекта для локальной разработкиConfigure the project for local development

Среде выполнения Функций Azure необходима учетная запись хранения Azure для внутреннего использования.The Functions runtime uses an Azure Storage account internally. Для всех типов триггеров, кроме HTTP и веб-перехватчиков, необходимо задать в качестве ключа Values.AzureWebJobsStorage допустимую строку подключения к учетной записи хранения Azure.For all trigger types other than HTTP and webhooks, you must set the Values.AzureWebJobsStorage key to a valid Azure Storage account connection string. Приложение-функция может также использовать эмулятор службы хранилища Azure для параметра подключения AzureWebJobsStorage, который необходим для проекта.Your function app can also use the Azure storage emulator for the AzureWebJobsStorage connection setting that is required by the project. Чтобы использовать эмулятор, установите значение AzureWebJobsStorage для UseDevelopmentStorage=true.To use the emulator, set the value of AzureWebJobsStorage to UseDevelopmentStorage=true. Измените этот параметр на действительную строку подключения учетной записи хранения перед развертыванием.Change this setting to an actual storage account connection string before deployment.

Чтобы задать строку подключения к учетной записи хранения, выполните следующие действия:To set the storage account connection string:

  1. В Visual Studio откройте Cloud Explorer, разверните учетную запись хранения > учетной записи хранения, а затем на вкладке Свойства скопируйте основное значение строки подключения .In Visual Studio, open Cloud Explorer, expand Storage Account > Your Storage Account, then in the Properties tab copy the Primary Connection String value.

  2. В своем проекте откройте файл local.settings.json и задайте в качестве значения ключа AzureWebJobsStorage скопированную вами строку подключения.In your project, open the local.settings.json file and set the value of the AzureWebJobsStorage key to the connection string you copied.

  3. Повторите предыдущий шаг, чтобы добавить уникальные ключи в массив Values для всех других подключений, которые необходимы для функций.Repeat the previous step to add unique keys to the Values array for any other connections required by your functions.

Добавление функции в проектAdd a function to your project

В C# функциях библиотеки классов привязки, используемые функцией, определяются путем применения атрибутов в коде.In C# class library functions, the bindings used by the function are defined by applying attributes in the code. При создании триггеров функций из предоставленных шаблонов применяются атрибуты триггера.When you create your function triggers from the provided templates, the trigger attributes are applied for you.

  1. Щелкните правой кнопкой мыши узел проекта в обозревателе решений и выберите Добавить > Новый элемент.In Solution Explorer, right-click on your project node and select Add > New Item. Выберите Функция Azure, введите Имя класса и нажмите кнопку Добавить.Select Azure Function, type a Name for the class, and click Add.

  2. Выберите триггер, задайте свойства привязки и нажмите кнопку Создать.Choose your trigger, set the binding properties, and click Create. В следующем примере показаны параметры при создании функции, активируемой хранилищем очередей.The following example shows the settings when creating a Queue storage triggered function.

    Создание функции, активируемой очередью

    В этом примере триггера используется строка подключения с ключом QueueStorage.This trigger example uses a connection string with a key named QueueStorage. Этот параметр строки подключения должен быть определен в файле local.settings.json.This connection string setting must be defined in the local.settings.json file.

  3. Проверьте добавленный класс.Examine the newly added class. Вы видите статический метод Run, который имеет атрибут FunctionName.You see a static Run method, that is attributed with the FunctionName attribute. Этот атрибут указывает, что метод является точкой входа для функции.This attribute indicates that the method is the entry point for the function.

    Например, следующий класс C# представляет собой простую функцию, активируемую хранилищем очередей:For example, the following C# class represents a basic Queue storage triggered function:

    using System;
    using Microsoft.Azure.WebJobs;
    using Microsoft.Azure.WebJobs.Host;
    using Microsoft.Extensions.Logging;
    
    namespace FunctionApp1
    {
        public static class Function1
        {
            [FunctionName("QueueTriggerCSharp")]
            public static void Run([QueueTrigger("myqueue-items", 
                Connection = "QueueStorage")]string myQueueItem, ILogger log)
            {
                log.LogInformation($"C# Queue trigger function processed: {myQueueItem}");
            }
        }
    }
    

    Определяемый привязкой атрибут применяется к каждому параметру привязки, передаваемому в метод точки входа.A binding-specific attribute is applied to each binding parameter supplied to the entry point method. Атрибут принимает сведения о привязке в качестве параметров.The attribute takes the binding information as parameters. В предыдущем примере к первому параметру применен атрибут QueueTrigger, указывающий на то, что функция активируется очередью.In the previous example, the first parameter has a QueueTrigger attribute applied, indicating queue triggered function. Имя очереди и строки подключения передаются в качестве параметров в атрибут QueueTrigger.The queue name and connection string setting name are passed as parameters to the QueueTrigger attribute. Дополнительные сведения см. в статье Привязки хранилища очередей Azure для службы "Функции Azure".For more information, see Azure Queue storage bindings for Azure Functions.

С помощью описанной выше процедуры вы можете добавить больше функций в проект приложения-функции.You can use the above procedure to add more functions to your function app project. Триггеры для функций могут быть разными, но каждая функция в проекте может иметь только один триггер.Each function in the project can have a different trigger, but a function must have exactly one trigger. Дополнительные сведения см. в статье Основные понятия триггеров и привязок в Функциях Azure.For more information, see Azure Functions triggers and bindings concepts.

Добавление привязокAdd bindings

Как и триггеры, входные и выходные привязки добавляются к функции в виде атрибутов.As with triggers, input and output bindings are added to your function as binding attributes. Добавьте привязки к функции следующим образом:Add bindings to a function as follows:

  1. Убедитесь, что проект настроен для локальной разработки.Make sure you've configured the project for local development.

  2. Добавьте соответствующий пакет расширений NuGet для конкретной привязки.Add the appropriate NuGet extension package for the specific binding. Дополнительные сведения см. в разделе Локальная разработка на C# с помощью Visual Studio или VS Code.For more information, see Local C# development using Visual Studio in the Triggers and Bindings article. Требования к пакету NuGet для определенной привязки можно найти в соответствующей справочной статье.The binding-specific NuGet package requirements are found in the reference article for the binding. Например, требования к пакету для триггера Центров событий см. в справочной статье о привязках Центров событий.For example, find package requirements for the Event Hubs trigger in the Event Hubs binding reference article.

  3. Если для привязки требуются параметры приложения, добавьте их в коллекцию Values в файле с локальными параметрами.If there are app settings that the binding needs, add them to the Values collection in the local setting file. Эти значения используются, если функция выполняется локально.These values are used when the function runs locally. Если же функция выполняется в приложении-функции в Azure, используются параметры приложения-функции.When the function runs in the function app in Azure, the function app settings are used.

  4. Добавьте соответствующий атрибут привязки в сигнатуру метода.Add the appropriate binding attribute to the method signature. В примере ниже сообщение очереди активирует функцию, а с помощью выходной привязки создается новое сообщение с таким же текстом, но в другой очереди.In the following example, a queue message triggers the function, and the output binding creates a new queue message with the same text in a different queue.

    public static class SimpleExampleWithOutput
    {
        [FunctionName("CopyQueueMessage")]
        public static void Run(
            [QueueTrigger("myqueue-items-source", Connection = "AzureWebJobsStorage")] string myQueueItem, 
            [Queue("myqueue-items-destination", Connection = "AzureWebJobsStorage")] out string myQueueItemCopy,
            ILogger log)
        {
            log.LogInformation($"CopyQueueMessage function processed: {myQueueItem}");
            myQueueItemCopy = myQueueItem;
        }
    }
    

    Подключение к хранилищу очередей устанавливается с помощью параметра AzureWebJobsStorage.The connection to Queue storage is obtained from the AzureWebJobsStorage setting. Дополнительные сведения см. в справочной статье по определенной привязке.For more information, see the reference article for the specific binding.

В этой таблице показаны привязки, которые поддерживаются в основных версиях среды выполнения функций 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.

Функции тестированияTesting functions

Основные инструменты службы Функции Azure позволяют запускать проекты функций Azure на локальном компьютере разработчика.Azure Functions Core Tools lets you run Azure Functions project on your local development computer. Вам будет предложено установить эти инструменты при первом запуске функции из Visual Studio.You are prompted to install these tools the first time you start a function from Visual Studio.

Чтобы проверить работу функции, нажмите клавишу F5.To test your function, press F5. Если будет предложено, примите запрос от Visual Studio на скачивание и установку основных инструментов службы Функции Azure (CLI).If prompted, accept the request from Visual Studio to download and install Azure Functions Core (CLI) tools. Кроме того, вам может понадобиться включить исключение брандмауэра, чтобы инструменты могли обрабатывать HTTP-запросы.You may also need to enable a firewall exception so that the tools can handle HTTP requests.

Когда проект запущен, можно протестировать код, как тестируется развернутая функция.With the project running, you can test your code as you would test deployed function. Дополнительные сведения см. в статье Методика тестирования кода с помощью Функций Azure.For more information, see Strategies for testing your code in Azure Functions. При работе в режиме отладки точки останова срабатывают в Visual Studio должным образом.When running in debug mode, breakpoints are hit in Visual Studio as expected.

Дополнительные сведения об использовании основных инструментов Функций Azure см. в статье Как программировать и тестировать функции Azure в локальной среде.To learn more about using the Azure Functions Core Tools, see Code and test Azure functions locally.

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

При публикации из Visual Studio используется один из двух методов развертывания:When publishing from Visual Studio, one of two deployment methods are used:

Выполните следующие действия, чтобы опубликовать проект в приложении-функции в Azure.Use the following steps to publish your project to a function app in Azure.

  1. Щелкните правой кнопкой мыши проект в обозревателе решений и выберите пункт Опубликовать.In Solution Explorer, right-click the project and select Publish.

  2. В диалоговом окне Выберите целевой объект публикации используйте параметры публикации, указанные в таблице под изображением.In the Pick a publish target dialog, use the publish options as specified in the table below the image:

    Выбор целевого объекта публикации

    ПараметрOption ОПИСАНИЕDescription
    План потребления службы "Функции Azure"Azure Functions Consumption plan При публикации проекта в приложении-функции, которое работает в плане потребления, вы платите только за выполнение приложения-функции.When you publish your project to a function app that runs in a Consumption plan, you only pay for executions of your functions app. Другие планы размещения связаны с дополнительными расходами.Other hosting plans incur higher costs. Дополнительные сведения см. в статье Масштабирование и размещение Функций Azure.To learn more, see Azure Functions scale and hosting.
    СоздатьCreate new В Azure создается приложение-функция со связанными ресурсами.A new function app, with related resources, is created in Azure. Если выбрать параметр Выбрать существующее, все файлы в существующем приложении-функции в Azure будут перезаписаны файлами из локального проекта.When you choose Select Existing, all files in the existing function app in Azure are overwritten by files from the local project. Используйте этот параметр только при повторной публикации обновлений для существующего приложения-функции.Only use this option when republishing updates to an existing function app.
    Запустить из файла пакетаRun from package file Приложение-функция развертывается с помощью Zip Deploy с включенным режимом Run-From-Package (Выполнение из пакета).Your function app is deployed using Zip Deploy with Run-From-Package mode enabled. Этот способ повышает производительность приложения-функции и является рекомендуемым.This is the recommended way of running your functions, which results in better performance. Если этот параметр не используется, перед публикацией в Azure остановите локальное выполнение проекта приложения-функции.When not using this option, make sure to stop your function app project from running locally before you publish to Azure.
  3. Нажмите кнопку Опубликовать.Select Publish. Если вы еще не вошли в учетную запись Azure из Visual Studio, выберите Вход.If you haven't already signed-in to your Azure account from Visual Studio, select Sign-in. Вы также можете создать бесплатную учетную запись Azure.You can also create a free Azure account.

  4. В диалоговом окне Служба приложение Azure: создание укажите параметры размещения, которые приведены в таблице ниже:In the App Service: Create new dialog, use the Hosting settings as specified in the table below the image:

    Диалоговое окно "Создание службы приложений"

    ПараметрSetting Рекомендуемое значениеSuggested value ОписаниеDescription
    ИмяName Глобально уникальное имяGlobally unique name Имя, которое однозначно идентифицирует новое приложение-функцию.Name that uniquely identifies your new function app. Допустимые символы: a-z, 0-9 и -.Valid characters are a-z, 0-9, and -.
    ПодпискаSubscription Выберите свою подпискуChoose your subscription Подписка Azure, которую нужно использовать.The Azure subscription to use.
    Группа ресурсовResource Group myResourceGroupmyResourceGroup Имя группы ресурсов, в которой создается приложение-функция.Name of the resource group in which to create your function app. Чтобы создать группу ресурсов, выберите Создать.Choose New to create a new resource group.
    План размещенияHosting Plan План потребленияConsumption plan Для создания бессерверного плана щелкните Создать, а затем выберите Потребление в разделе Размер.Make sure to choose the Consumption under Size after you select New to create a serverless plan. Также нужно выбрать расположение в ближайшем регионе или в регионе, расположенном рядом с другими службами, к которым обращаются ваши функции.Also, choose a Location in a region near you or near other services your functions access. Когда выполняется план, отличный от Потребление, необходимо будет управлять масштабированием приложения-функции.When you run in a plan other than Consumption, you must manage the scaling of your function app.
    Служба хранилища AzureAzure Storage Учетная запись хранения общего назначенияGeneral-purpose storage account Учетная запись хранения Azure — обязательный ресурс для среды выполнения Функций.An Azure storage account is required by the Functions runtime. Выберите Создать, чтобы создать учетную запись хранения общего назначения.Select New to create a general-purpose storage account. Можно также использовать существующую учетную запись при условии, что она соответствует требованиям учетной записи хранилища.You can also use an existing account that meets the storage account requirements.
  5. Выберите Создать, чтобы создать приложение-функцию и связанные с ним ресурсы в Azure с заданными параметрами, а также развернуть код проекта функции.Select Create to create a function app and related resources in Azure with these settings and deploy your function project code.

  6. По окончании развертывания запомните или запишите URL-адрес сайта, который является адресом приложения-функции в Azure.After the deployment is complete, make a note of the Site URL value, which is the address of your function app in Azure.

    Сообщение об успешной публикации

Параметры приложения-функцииFunction app settings

Все параметры, которые вы добавили в файл local.settings.json, необходимо также добавить в приложение-функцию в Azure.Any settings you added in the local.settings.json must be also added to the function app in Azure. Эти параметры не передаются автоматически при публикации проекта.These settings aren't uploaded automatically when you publish the project.

Проще всего передать необходимые параметры в приложение-функцию в Azure с помощью ссылки Управление параметрами приложения… , которая появляется после успешной публикации проекта.The easiest way to upload the required settings to your function app in Azure is to use the Manage Application Settings... link that is displayed after you successfully publish your project.

Для приложения-функции отобразится диалоговое окно Параметры приложения, в котором можно добавить новые параметры приложения или изменить имеющиеся.This displays the Application Settings dialog for the function app, where you can add new application settings or modify existing ones.

Локальный — значение параметра в файле local.settings.json, а Удаленный — текущий параметр в приложении-функции в Azure.Local represents a setting value in the local.settings.json file, and Remote is the current setting in the function app in Azure. Чтобы создать параметр приложения, выберите Добавьте параметр.Choose Add setting to create a new app setting. Используйте ссылку Вставка локального значения, чтобы скопировать значение параметра в поле Удаленный.Use the Insert value from Local link to copy a setting value to the Remote field. Когда вы нажмете кнопку ОК, ожидающие изменения запишутся в файл с локальными параметрами и приложение-функцию.Pending changes are written to the local settings file and the function app when you select OK.

Примечание

По умолчанию файл Local. Settings. JSON не возвращается в систему управления версиями.By default, the local.settings.json file is not checked into source control. Это означает, что при клонировании проекта локальных функций из системы управления версиями проект не содержит файл Local. Settings. JSON.This means that when you clone a local Functions project from source control, the project doesn't have a local.settings.json file. В этом случае необходимо вручную создать файл Local. Settings. JSON в корневом каталоге проекта, чтобы диалоговое окно параметров приложения работала правильно.In this case, you need to manually create the local.settings.json file in the project root so that the Application Settings dialog works as expected.

Управление параметрами приложения также можно осуществлять с помощью одного из способов ниже.You can also manage application settings in one of these other ways:

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

Рекомендуемый способ наблюдения за выполнением этой функции — интеграция приложения-функции в Azure Application Insights.The recommended way to monitor the execution of your functions is by integrating your function app with Azure Application Insights. При создании приложения-функции на портале Azure эта интеграция выполняется по умолчанию.When you create a function app in the Azure portal, this integration is done for you by default. Тем не менее при создании приложения-функции во время публикации в Visual Studio интеграция в приложении-функции в Azure не происходит.However, when you create your function app during Visual Studio publishing, the integration in your function app in Azure isn't done.

Чтобы настроить Application Insights для приложения-функции, сделайте следующее:To enable Application Insights for your function app:

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

  1. На портале выберите Все службы > Приложения-функции. Выберите приложение-функцию и щелкните баннер Application Insights в верхней части окна.In the portal, select All services > Function Apps, select your function app, and then select the Application Insights banner at the top of the window

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

  2. Создайте ресурс Application Insights с помощью параметров, указанных в таблице под рисунком.Create an Application Insights resource by using the settings specified in the table below the image.

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

    ПараметрSetting Рекомендуемое значениеSuggested value ОписаниеDescription
    Имя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.
  3. Нажмите кнопку ОК.Select OK. Ресурс Application Insights создается в той же группе ресурсов и подписке, что и приложение-функция.The Application Insights resource is created in the same resource group and subscription as your function app. После создания ресурса закройте окно Application Insights.After the resource is created, close the Application Insights window.

  4. В приложении-функции выберите Параметры приложения и прокрутите окно вниз до раздела Параметры приложения.Back in your function app, select Application settings, and then scroll down to Application settings. Если появится параметр APPINSIGHTS_INSTRUMENTATIONKEY, это означает, что для приложения-функции в Azure включена интеграция с Application Insights.If you see a setting named APPINSIGHTS_INSTRUMENTATIONKEY, Application Insights integration is enabled for your function app running in Azure.

Дополнительные сведения см. в статье Мониторинг Функций Azure.To learn more, see Monitor Azure Functions.

Дополнительная информацияNext steps

Дополнительные сведения об основных инструментах Функций Azure см. в статье Как программировать и тестировать функции Azure в локальной среде.To learn more about the Azure Functions Core Tools, see Code and test Azure functions locally.

Дополнительные сведения о разработке функций, таких как библиотеки класса .NET, см. в статье Справочник разработчика C# по функциям Azure.To learn more about developing functions as .NET class libraries, see Azure Functions C# developer reference. Здесь также приведены примеры того, как использовать атрибуты для объявления разных типов привязок, поддерживаемых в службе "Функции Azure".This article also links to examples of how to use attributes to declare the various types of bindings supported by Azure Functions.