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

Расширение "Функции Azure" для Visual Studio Code позволяет разрабатывать функции локально и развертывать их в Azure. Если вы впервые сталкиваетесь с функциями Azure, дополнительные сведения см. в статье Общие сведения о Функциях Azure.

Расширение "Функции Azure" представляет следующие полезные возможности:

  • Создание, редактирование и выполнение функций на локальном компьютере для разработки.
  • Публикация проектов Функций Azure непосредственно в Azure.
  • Написание функций на различных языках с использованием преимуществ Visual Studio Code.

Вы просматриваете версию C# этой статьи. Выберите предпочитаемый язык программирования функций в начале статьи.

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

Вы просматриваете версию Java этой статьи. Выберите предпочитаемый язык программирования функций в начале статьи.

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

Вы просматриваете версию JavaScript этой статьи. Выберите предпочитаемый язык программирования функций в начале статьи.

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

Вы просматриваете версию PowerShell этой статьи. Выберите предпочитаемый язык программирования функций в начале статьи.

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

Вы просматриваете версию Python этой статьи. Выберите предпочитаемый язык программирования функций в начале статьи.

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

Вы просматриваете версию TypeScript этой статьи. Выберите предпочитаемый язык программирования функций в начале статьи.

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

Внимание

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

Необходимые компоненты

Для локального запуска и отладки функций требуются эти предварительные требования. Они не требуются только для создания или публикации проектов в Функции Azure.

  • Средство Функции Azure Core Tools, которое обеспечивает интегрированную локальную отладку. Если у вас установлено расширение Функции Azure, проще всего установить или обновить основные средства, выполнив Azure Functions: Install or Update Azure Functions Core Tools команду из палитры команд.

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

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

  1. На панели действий выберите значок Azure. В области рабочей области (локальная) откройте + список и выберите "Создать функцию".

    Снимок экрана: окно создания проекта.

  2. При появлении запроса нажмите кнопку "Создать проект". Выберите расположение каталога для рабочей области проекта и нажмите кнопку "Выбрать".

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

  3. При появлении запроса выберите язык для проекта. При необходимости выберите определенную языковую версию.

  4. Выберите шаблон функции HTTP trigger (HTTP-триггер) или нажмите кнопку Skip for now (Пока пропустить), чтобы создать проект без функции. Вы всегда можете добавить функцию в проект позже.

    Снимок экрана: выбор триггера HTTP.

    Совет

    Дополнительные шаблоны можно просмотреть, выбрав параметр фильтра " Изменить шаблон" и установив значение Core или All.

  5. В поле "Имя функции" введите HttpExample, нажмите клавишу ВВОД и выберите авторизацию функции.

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

    Снимок экрана: создание авторизации функции.

  6. В раскрывающемся списке выберите "Добавить в рабочую область".

    Снимок экрана: выбор пункта

  7. В окне "Доверять авторам файлов в этой папке?", нажмите кнопку "Да".

    Снимок экрана: подтверждение доверия авторам файлов.

Visual Studio Code создает функцию на выбранном языке и в шаблоне для функции, активируемого HTTP.

Созданные файлы проекта

Шаблон проекта создает проект на выбранном языке и устанавливает необходимые зависимости. Новый проект на любом языке содержит следующие файлы:

  • host.json: позволяет настроить узел Функций. Эти параметры действуют как при локальном запуске функций, так и при их запуске в Azure. Дополнительные сведения см. в справочной статье о host.json.

  • local.settings.json. Поддерживает параметры, используемые при локальном выполнении функций. Эти параметры действуют только при локальном запуске функций. Подробнее см. в разделе Файл локальных параметров.

    Внимание

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

В зависимости от языка создаются также следующие файлы:

Файл библиотеки классов HttpExample.cs, содержимое которого зависит от того, выполняется ли проект в изолированном рабочем процессе или в процессе с узлом Функций.

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

  • Файл Functions.java на исходном пути, в котором реализуется функция.

Созданные файлы зависят от выбранной модели программирования Node.js для функций:

  • Файл package.json в корневой папке.

  • Именованный файл .js в папке src\functions , который содержит определение функции и код функции.

Папка HttpExample, содержащая следующее:

Созданные файлы зависят от выбранной модели программирования Python для функций:

  • Файл requirements.txt на уровне проекта, в котором перечислены пакеты, необходимые для работы Функций Azure.

  • Файл function_app.py, содержащий определение функции и код.

На этом этапе вы можете локально запустить функцию триггера HTTP.

Добавление функции в проект

Вы можете добавить новую функцию в существующий проект на основе одного из стандартных шаблонов триггеров функций. Чтобы добавить триггер новой функции, выберите F1, чтобы открыть палитру команд, а затем найдите и выполните команду Функции Azure: Создать функцию. Выберите тип триггера и задайте для него необходимые атрибуты, следуя инструкциям на экране. Если триггеру требуется ключ доступа или строка подключения для подключения к службе, получите этот элемент перед созданием триггера функции.

Это действие добавляет в проект новый файл библиотеки классов C# (.cs).

Это действие добавляет новый файл Java (.java) в проект.

Результаты этого действия зависят от версии модели Node.js.

  • Файл package.json в корневой папке.

  • Именованный файл .js в папке src\functions , который содержит определение функции и код функции.

Это действие создает в проекте новую папку. Папка содержит новый файл function.json и новый файл кода PowerShell.

Результаты этого действия зависят от версии модели Python.

Visual Studio Code добавляет новый код функции в файл function_app.py (поведение по умолчанию) или в другой выбранный файл Python.

Подключение к службам

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

Например, способ определения выходной привязки, которая записывает данные в очередь хранилища, зависит от модели процесса:

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

  2. Обновите метод функции, чтобы добавить атрибут, определяющий параметр привязки, например QueueOutput для выходной привязки очереди. Объект можно использовать MultiResponse для возврата нескольких сообщений или нескольких выходных потоков.

Например, чтобы добавить выходную привязку, которая записывает данные в очередь хранилища, вы обновляете метод функции, чтобы добавить параметр привязки, определенный с помощью заметки QueueOutput . Объект OutputBinding<T> представляет сообщения, записанные в выходную привязку при завершении функции.

Например, способ определения выходной привязки, которая записывает данные в очередь хранилища, зависит от версии модели Node.js:

Используя модель Node.js версии 4, необходимо вручную добавить return: параметр в определение функции с помощью storageQueue функции в output объекте, которая определяет очередь хранилища для записи выходных return данных. Выходные данные записываются после завершения функции.

Visual Studio Code позволяет добавлять привязки в файл function.json с помощью удобного набора запросов.

Чтобы добавить привязку, откройте палитру команд (F1) и введите Azure Functions: add binding... (Функции Azure: добавить привязку), выберите функцию для новой привязки, а затем следуйте подсказкам в зависимости от типа привязки, добавляемой в функцию.

Ниже приведены примеры подсказок для определения новой выходной привязки хранилища.

Prompt значение Описание
Select binding direction (Выберите направление привязки) out Привязка является выходной привязкой.
Select binding with direction (Выберите привязку с направлением) Azure Queue Storage Привязка является привязкой очереди службы хранилища Azure.
The name used to identify this binding in your code (Имя, используемое для идентификации этой привязки в коде) msg Имя, которое используется для идентификации параметров привязки, указанных в коде.
The queue to which the message will be sent (Очередь, в которую будет отправляться сообщение) outqueue Имя очереди, в которой записывается привязка. Если queueName не существует, то при первом использовании этот параметр будет создан привязкой.
Select setting from "local.settings.json" (Выберите параметр из файла local.settings.json) MyStorageConnection Имя параметра приложения, который содержит строку подключения к учетной записи хранения. Параметр AzureWebJobsStorage содержит строку подключения учетной записи хранения, созданной в приложении-функции.

Можно также щелкнуть правой кнопкой мыши (Ctrl + щелчок в macOS) непосредственно на файле function.js в папке функции, выбрать пункт Добавить привязку и выполнить те же подсказки.

В этом примере к массиву bindings в файле function.js добавляется следующая привязка:

{
    "type": "queue",
    "direction": "out",
    "name": "msg",
    "queueName": "outqueue",
    "connection": "MyStorageConnection"
}

Например, способ определения выходной привязки, которая записывает данные в очередь хранилища, зависит от версии модели Python:

Декоратор @queue_output функции используется для определения именованного параметра привязки для выходных данных в очередь хранилища, где func.Out определяет, какие выходные данные записываются.

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

Так как функция, активировавшая HTTP, также возвращает http-ответ, функция возвращает MultiResponse объект, представляющий выходные данные HTTP и очереди.

[Function("HttpExample")]
public static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req,
    FunctionContext executionContext)
{

В этом примере приведено определение MultiResponse объекта, включающего выходную привязку:

public class MultiResponse
{
    [QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
    public string[] Messages { get; set; }
    public IActionResult HttpResponse { get; set; }
}

При применении этого примера к собственному проекту может потребоваться измениться HttpRequest на HttpRequestData и IActionResult в HttpResponseDataзависимости от того, используется ли интеграция ASP.NET Core или нет.

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

@FunctionName("HttpExample")
public HttpResponseMessage run(
        @HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) 
        HttpRequestMessage<Optional<String>> request, 
        @QueueOutput(name = "msg", queueName = "outqueue", 
        connection = "AzureWebJobsStorage") OutputBinding<String> msg, 
        final ExecutionContext context) {

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

Пример привязки для модели Node.js версии 4 еще недоступен.

Способ определения выходной привязки зависит от версии модели Node.js. Дополнительные сведения, включая ссылки на пример кода привязки, к которому можно обратиться, см. в разделе "Добавление привязок к функции".

$outputMsg = $name
Push-OutputBinding -name msg -Value $outputMsg

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

@app.route(route="HttpExample")
@app.queue_output(arg_name="msg", queue_name="outqueue", connection="AzureWebJobsStorage")
def HttpExample(req: func.HttpRequest, msg: func.Out [func.QueueMessage]) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

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

Пример привязки для модели Node.js версии 4 еще недоступен.

Способ определения выходной привязки зависит от версии модели Node.js. Дополнительные сведения, включая ссылки на пример кода привязки, к которому можно обратиться, см. в разделе "Добавление привязок к функции".

Вход в Azure

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

  1. Если вы не выполнили вход, щелкните значок Azure на панели действий. Затем в области Ресурсы выберите Вход в Azure….

    Снимок экрана с окном входа в Azure в VS Code.

    Если вы уже выполнили вход и видите существующие подписки, перейдите к следующему разделу. Если у вас еще нет учетной записи Azure, нажмите кнопку "Создать учетную запись Azure...". Учащиеся могут выбрать создание учетной записи Azure для учащихся....

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

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

Создание ресурсов Azure

Перед публикацией проекта Функций в Azure убедитесь, что в вашей подписке Azure есть приложение-функция и связанные ресурсы для выполнения кода. Приложение-функция обеспечивает контекст выполнения функций. При публикации из Visual Studio Code в приложение-функцию в Azure проект упаковается и развертывается в выбранном приложении-функции в подписке Azure.

На выбор вам предлагается два способа создания приложения-функции в Azure: быстрый (с параметрами по умолчанию) и развернутый Таким образом, у вас есть больше контроля над созданием удаленных ресурсов.

Быстрое создание приложения-функции

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

  1. Щелкните значок Azure на панели действий. Затем в области Ресурсы щелкните значок + и выберите вариант Создать приложение-функцию в Azure.

    Создание ресурса в подписке Azure

  2. Введите следующие сведения по соответствующим запросам:

    Prompt Выбор
    Выбор подписки Выберите подписку, которую нужно использовать. Эта подсказка не отобразится, если в области Ресурсы отображается только одна подписка.
    Ввод глобально уникального имени для приложения-функции Введите имя, допустимое в пути URL-адреса. Имя, которое вы вводите, проверяется, чтобы убедиться, что оно уникально в функциях Azure.
    Выберите стек сред выполнения Выберите версию языка, которая запускалась локально.
    Выбор расположения для новых ресурсов Для повышения производительности выберите регион рядом с вами.

    Расширение показывает на панели Azure: журнал действий состояние отдельных ресурсов по мере их создания в Azure.

    Журнал создания ресурсов Azure

  3. После завершения создания в вашей подписке будут созданы приведенные ниже ресурсы Azure. Имена ресурсов основаны на имени приложения-функции.

    • группу ресурсов — логический контейнер связанных ресурсов;
    • Учетная запись хранения Azure уровня "Стандартный" для сохранения состояния и других сведений о проектах.
    • Приложение-функция, которое предоставляет окружение для выполнения кода вашей функции. Приложение-функция позволяет группировать функции в логические единицы и упростить развертывание, масштабирование и совместное использование ресурсов, а также управление ими в рамках единого плана размещения.
    • План службы приложений, который определяет базовый узел для приложения-функции.
    • Экземпляр Application Insights, подключенный к приложению-функции, который отслеживает использование функций в приложении.

    После создания приложения-функции и применения пакета развертывания отобразится уведомление.

    Совет

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

Публикация проекта в новом приложении-функции Azure с указанием дополнительных параметров

Ниже описывается порядок публикации проекта в новом приложении-функции с указанием дополнительных параметров:

  1. В палитре команд введите Функции Azure: создание приложения-функции в Azure... (Дополнительно).

  2. Если вы еще не вошли в систему, вам будет предложено войти в Azure. Вы также можете выбрать Создать бесплатную учетную запись Azure. После входа из браузера вернитесь в Visual Studio Code.

  3. Следуя инструкциям, введите следующие сведения:

    Prompt Выбор
    Введите глобально уникальное имя для нового приложения-функции. Введите глобально уникальное имя для определения вашего нового приложения-функции, а затем нажмите клавишу ВВОД. Допустимые символы для имени приложения-функции: a-z, 0-9 и -.
    Выберите стек сред выполнения Выберите языковую версию, которая выполняется локально.
    Select an OS (Выберите ОС). Выберите Linux или Windows. Приложения Python должны работать на базе Linux.
    Выберите группу ресурсов для новых ресурсов. Выберите "Создать группу ресурсов" и введите имя группы ресурсов, например myResourceGroup. Можно также выбрать существующую группу ресурсов.
    Выберите расположение для новых ресурсов. Выберите расположение в регионе, расположенном поблизости от вас или от места расположения других служб, к которым обращаются ваши функции.
    Select a hosting plan (Выберите план размещения). Выберите "Потребление для размещения бессерверного плана потребления", где взимается плата только при выполнении функций.
    Выберите учетную запись хранения. Выберите "Создать учетную запись хранения" и введите глобально уникальное имя новой учетной записи хранения, используемой приложением-функцией. Имя учетной записи хранения должно иметь длину от 3 до 24 знаков и состоять только из цифр и строчных букв. Можно также выбрать существующую учетную запись.
    Select an Application Insights resource for your app (Выберите ресурс Application Insights для приложения). Выберите "Создать приложение Аналитика ресурс" и введите имя экземпляра, используемого для хранения данных среды выполнения из функций.

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

Получение URL-адреса функции, активируемой HTTP-запросом, в Azure

Чтобы вызвать функцию с триггером HTTP из клиента, вам потребуется URL-адрес функции, который доступен после развертывания в приложении-функции. Все необходимые ключи функций входят в состав этого URL-адреса. Чтобы получить URL-адреса для развернутых вами функций, вы можете воспользоваться расширением. Если вам требуется просто запустить удаленную функцию в Azure, используйте команду расширения Execute function now (Выполнить функцию).

  1. Выберите F1, чтобы открыть палитру команд, а затем найдите и выполните команду Функции Azure: Копировать URL-адрес функции.

  2. Следуйте инструкциям, чтобы выбрать свое приложение-функцию в Azure, а затем конкретный HTTP-триггер, который требуется вызвать.

URL-адрес функции будет скопирован в буфер обмена вместе со всеми необходимыми ключами, которые передаются в параметре запроса code. Используйте средство HTTP для отправки запросов POST или браузера для отправки запросов GET в удаленную функцию.

Когда расширение получает URL-адрес функции в Azure, расширение использует учетную запись Azure для автоматического получения ключей, необходимых для запуска функции. Дополнительные сведения о ключах доступа к функциям. Для запуска функций, активируемых чем-либо другим, кроме HTTP-запроса, необходим ключ администратора.

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

Рекомендуется настроить непрерывное развертывание , чтобы приложение-функция в Azure обновлялось при обновлении исходных файлов в подключенном исходном расположении. Вы также можете развернуть файлы проекта с помощью Visual Studio Code. При публикации из Visual Studio Code вы можете воспользоваться технологией zip-развертывания.

Внимание

Развертывание в существующем приложении-функции всегда перезаписывает содержимое этого приложения в Azure.

  1. В области ресурсов действия Azure найдите только что созданный ресурс приложения-функции, щелкните ресурс правой кнопкой мыши и выберите "Развернуть в приложении-функции...".

  2. При появлении запроса на перезапись предыдущих развертываний выберите "Развернуть ", чтобы развернуть код функции в новом ресурсе приложения-функции.

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

    Снимок экрана с окном

Запуск функций

Расширение "Функции Azure" позволяет выполнять отдельные функции как в проекте на локальном компьютере, где ведется разработка, так и в подписке Azure.

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

Запуск функций в Azure

Чтобы выполнить функцию в Azure из Visual Studio Code, выполните следующие действия.

  1. В палитре команд введите Функции Azure: выполните функцию сейчас и выберите подписку Azure.

  2. В списке выберите приложение-функцию в Azure. Если вы не видите своего приложения-функции, убедитесь, что вы вошли в нужную подписку.

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

    Текст по умолчанию в тексте запроса ВВОД указывает формат текста. Если ваше приложение-функция не содержит функций, отобразится соответствующее уведомление об ошибке.

    Когда функция выполняется в Azure и возвращает ответ, Visual Studio Code отображает уведомление.

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

При запуске функций в Azure из Visual Studio Code расширение использует учетную запись Azure для автоматического получения ключей, необходимых для запуска функции. Дополнительные сведения о ключах доступа к функциям. Для запуска функций, активируемых чем-либо другим, кроме HTTP-запроса, необходим ключ администратора.

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

Локальная среда выполнения — это та же среда выполнения, в которой размещается приложение-функция в Azure. Локальные параметры считываются из файла local.settings.json. Чтобы запустить проект Функций локально, необходимо выполнить дополнительные требования.

Настройка проекта для локального запуска

Технически для всех типов триггеров, кроме HTTP-триггеров и веб-перехватчиков, в среде выполнения Функций Azure используется учетная запись хранения Azure. Поэтому необходимо записать в ключ Values.AzureWebJobsStorage допустимую строку подключения к учетной записи хранения Azure.

В этом разделе для подключения и получения строки подключения к хранилищу используется расширение службы хранилища Azure для Visual Studio Code с Обозревателем службы хранилища Azure.

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

  1. В Visual Studio откройте Cloud Explorer, разверните узел Storage Account (Учетная запись хранения) >Your Storage Account (Ваша учетная запись хранения), а затем выберите Properties (Свойства) и скопируйте значение параметра Primary Connection String (Основная строка подключения).

  2. В своем проекте откройте файл local.settings.json и задайте в качестве значения ключа AzureWebJobsStorage скопированную вами строку подключения.

  3. Повторите предыдущий шаг, чтобы добавить уникальные ключи в массив Values для всех других подключений, которые необходимы для функций.

Подробнее см. в разделе Файл локальных параметров.

Локальная отладка функций

Для отладки функций нажмите клавишу F5. Если основные инструменты недоступны, вам будет предложено установить его. После установки и запуска Core Tools в окне терминала отображается вывод. Это равносильно запуску команды Core Tools func start из терминала, но с дополнительными задачами сборки и подключенным отладчиком.

Когда проект запущен, вы можете активировать свои функции командой расширения Execute Function Now... (Выполнить функцию...), как в случае развертывания проекта в Azure. Когда проект выполняется в режиме отладки, в нем, как и следует ожидать, срабатывают точки останова Visual Studio Code.

  1. В палитре команд введите Функции Azure: выполните функцию сейчас и выберите локальный проект.

  2. Выберите из списка функцию, которую нужно выполнить, и введите текст сообщения запроса в поле Enter request body (Введите текст запроса). Нажмите клавишу ВВОД, чтобы отправить это сообщение запроса в свою функцию. Текст, заданный по умолчанию в поле Enter request body (Введите текст запроса), должен указывать требуемый формат текста. Если ваше приложение-функция не содержит функций, отобразится соответствующее уведомление об ошибке.

  3. При локальном выполнении функции после получения отклика в Visual Studio Code отобразится соответствующее уведомление. Сведения о выполнении функции отображаются на панели Терминал.

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

Работа с параметрами приложения локально

При запуске в приложении-функции в Azure параметры для функций безопасно хранятся в параметрах приложения. Во время локальной разработки эти параметры вместо этого добавляются Values в коллекцию в файле local.settings.json. Файл local.settings.json также хранит параметры, используемые локальными средствами разработки.

Элементы в коллекции в Values файле local.settings.json проекта предназначены для зеркало элементов в параметрах приложения-функции в Azure.

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

Значения ConnectionStrings никогда не публикуются.

Значения параметров приложения-функции можно также считывать в коде как переменные среды. Дополнительную информацию см. в разделе Переменные среды.

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

Параметры приложения в Azure

Параметры в файле local.settings.json проекта должны совпадать с параметрами приложения, заданными для приложения-функции в Azure. Все параметры, которые вы добавили в файл local.settings.json, необходимо также добавить в приложение-функцию в Azure. Эти параметры не отправляются автоматически при публикации проекта. Точно так же все параметры, созданные в приложении-функции на портале, должны быть загружены в локальный проект.

Публикация параметров приложения

Простейший способ опубликовать необходимые параметры в приложении-функции Azure — воспользоваться ссылкой Upload settings (Отправить параметры), которая появляется после публикации проекта:

Снимок экрана: отправка параметров приложения.

Опубликовать параметры можно также с помощью команды Azure Functions: Upload Local Settings (Функции Azure: отправить локальные параметры) в палитре команд. Команда Azure Functions: Add New Setting (Функции Azure: добавить новый параметр) позволяет добавлять отдельные параметры в набор параметров приложения в Azure.

Совет

Не забудьте сохранить файл local.settings.json, прежде чем публиковать его.

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

Просмотреть существующие параметры приложения можно в области Azure: Functions (Azure: Функции), развернув подписку, приложение-функцию и раздел Application Settings (Параметры приложения).

Снимок экрана: просмотр параметров приложения-функции в Visual Studio Code.

Скачивание параметров из Azure

Если вы создали параметры приложения в Azure, их можно скачать в локальный файл local.settings.json командой Azure Functions: Download Remote Settings (Функции Azure: скачать удаленные параметры).

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

Установка расширений привязки

За исключением HTTP-триггеров и таймерных триггеров, привязки реализованы в виде пакетов расширений.

Необходимо явно установить пакеты расширений для триггеров и привязок, необходимых им. Установленный пакет зависит от модели процесса проекта.

Выполните команду dotnet add package в окне терминала, чтобы установить пакеты расширений, необходимые в проекте. В этом шаблоне показано, как добавить привязку для библиотеки классов изолированного процесса:

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.<BINDING_TYPE_NAME> --version <TARGET_VERSION>

Замените <BINDING_TYPE_NAME> на имя пакета с необходимой привязкой. Справочную статью по нужной вам привязке см. в списке поддерживаемых привязок.

Замените <TARGET_VERSION> в этом примере определенной версией пакета, например 3.0.0-beta5. Допустимые версии перечислены на отдельных страницах пакетов NuGet.org. Основные версии, соответствующие текущей среде выполнения функций, указаны в справочной статье для привязки.

Скрипт C# использует пакеты расширений.

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

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

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

Если по какой-то причине нельзя использовать пакет расширений для установки расширений привязки для проекта, см. раздел "Явно установить расширения".

Monitor Azure Functions (Мониторинг Функций Azure)

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

Журналы потоковой передачи.

При разработке приложения зачастую бывает полезно наблюдать данные из журналов практически в реальном времени. Вы можете просматривать в потоковом режиме файлы журналов, создаваемые вашими функциями. Включите журналы из поддона команды с Azure Functions: Start streaming logs помощью команды. Этот вывод — пример того, как может выглядеть поток журналов при запросе к функции, активируемой HTTP-запросом:

Снимок экрана: потоковая передача выходных данных журналов для триггера HTTP.

Дополнительные сведения см. в разделе "Потоковая передача журналов".

Application Insights

Необходимо отслеживать выполнение функций, интегрируя приложение-функцию с Приложением Аналитика. Когда вы создаете приложение-функцию на портале Azure, такая интеграция выполняется по умолчанию. Если же приложение-функция создается путем публикации из Visual Studio, его необходимо самостоятельно интегрировать с Application Insights. О том, как это сделать, см. в разделе "Включение интеграции с Application Insights".

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

Проекты на языке сценариев C#

По умолчанию все проекты на языке C# создаются как проекты компилируемых библиотек классов C#. Если вместо этого вы предпочитаете работать с проектами на языке сценариев C#, в параметрах расширения "Функции Azure" необходимо в качестве языка по умолчанию выбрать язык сценариев C#:

  1. Выберите File (Файл) >Preferences (Настройки) >Settings (Параметры).

  2. Перейдите в раздел User Settings (Пользовательские параметры) >Extensions (Расширения) >Azure Functions (Функции Azure).

  3. Выберите C# Script (Сценарий C#) в списке Azure Function: Project Language (Функции Azure: язык проекта).

После этого вызовы к Core Tools будут совершаться с параметром --csx параметр, который предписывает создавать и публиковать файлы проекта на языке сценариев C# (.csx). Если указан этот язык по умолчанию, во всех вновь создаваемых проектах по умолчанию будет использоваться язык сценариев C#. Когда установлен язык по умолчанию, выбрать язык проекта не предлагается. Для создания проектов на других языках необходимо изменить этот параметр или удалить его из пользовательского файла settings.json. Когда вы удалите этот параметр, запрос на выбор языка снова будет появляться при создании проекта.

Справочник по палитре команд

Расширение "Функции Azure" предоставляет полезный графический интерфейс для взаимодействия с приложениями-функциями в Azure. Те же функциональные возможности доступны и в виде команд в палитре команд (клавиша F1). Доступны следующие команды Функций Azure:

Команда Функций Azure Description
Add New Settings (Добавить новый параметр) Создает новый параметр приложения в Azure. Дополнительные сведения см. в разделе "Публикация параметров приложения". Вам также может потребоваться скачать этот параметр и включить его в набор локальных параметров.
Configure Deployment Source (Настройка источника развертывания) Подключает приложение-функцию в Azure к локальному репозиторию Git. Дополнительные сведения см. в статье Непрерывное развертывание для Функций Azure.
Connect to GitHub Repository (Подключить к репозиторию GitHub) Подключает приложение-функцию к репозиторию GitHub.
Copy Function URL (Копировать URL-адрес функции) Возвращает URL-адрес выполняемой в Azure удаленной функции, которая активируется HTTP-запросом. Дополнительные сведения см. в разделе "Получение URL-адреса развернутой функции".
Create function app in Azure (Создать приложение-функцию в Azure) Создает приложение-функцию в вашей подписке в Azure. Дополнительные сведения см. в разделе "Публикация проекта в новом приложении-функции Azure с указанием дополнительных параметров".
Decrypt Settings (Расшифровать параметры) Расшифровывает локальные параметры, которые были зашифрованы с помощью команды Azure Functions: Encrypt Settings (Функции Azure: шифровать параметры).
Delete Function App (Удалить приложение-функцию) Удаляет приложение-функцию из вашей подписки в Azure. Если в плане службы приложений нет других приложений, вы можете удалить и его. Другие ресурсы, например учетные записи хранения и группы ресурсов, не удаляются. Чтобы удалить все ресурсы, следует вместо этого удалить группу ресурсов. Ваш локальный проект не будет затронут.
Delete Function (Удалить функцию) Удаляет функцию из приложения-функции в Azure. Поскольку такое удаление не затрагивает локальный проект, вместо этого рекомендуется удалить функцию локально, а затем повторно опубликовать проект.
Delete Proxy (Удалить прокси-сервер) Удаляет прокси-сервер Функций Azure из приложения-функции в Azure. Дополнительные сведения о прокси-серверах см. в статье Работа с прокси-серверами Функций Azure.
Delete Setting (Удалить параметр) Удаляет параметр приложения-функции в Azure. Это удаление не влияет на параметры в файле local.settings.json.
Disconnect from Repo (Отключить от репозитория) Удаляет подключение непрерывного развертывания, установленное от приложения-функции в Azure к репозиторию системы управления версиями.
Download Remote Settings (Скачать удаленные параметры) Скачивает параметры из выбранного приложения-функции в Azure и вносит их в файл local.settings.json. Если локальный файл зашифрован, он расшифровывается, обновляется, а затем шифруется снова. Если значения каких-то параметров в двух расположениях конфликтуют, вам будет предложено выбрать, как поступить. Перед выполнением этой команды не забудьте сохранить изменения в файле local.settings.json.
Edit settings (Изменить параметры) Изменяет значение существующего параметра приложения-функции в Azure. Эта команда не влияет на параметры в файле local.settings.json.
Encrypt settings (Зашифровать параметры) Шифрует отдельные элементы в массиве Valuesфайла локальных параметров. В этом файле также задано trueзначение , указывающее, IsEncrypted что параметры локальной среды выполнения расшифровываются перед их использованием. Зашифруйте локальные параметры, чтобы снизить риск утечки ценных сведений. В Azure параметры приложения всегда хранятся в зашифрованном виде.
Execute Function Now (Выполнить функцию) Запуск функции вручную с помощью API администратора. Эта команда используется для тестирования — как локального в ходе отладки, так и для функций, выполняемых в Azure. При запуске функции в Azure расширение сначала автоматически получает ключ администратора, с помощью которого затем вызывает интерфейсы API удаленного администрирования для запуска функций в Azure. Текст сообщения, отправляемого в API, зависит от типа триггера. Таймерные триггеры не требуют передавать какие-либо данные.
Initialize Project for Use with VS Code (Инициализировать проект для использования с VS Code) Добавляет необходимые файлы проекта Visual Studio Code в существующий проект Функций. Используйте эту команду для работы с проектом, созданным с помощью Core Tools.
Install or Update Azure Functions Core Tools (Установка или обновление Azure Functions Core Tools) Устанавливает или обновляет набор инструментов Azure Functions Core Tools, который используется для локального запуска функций.
Повторное развертывание Позволяет повторно развертывать файлы проекта из подключенного репозитория Git в конкретный проект, развернутый ранее в Azure. Чтобы повторно опубликовать локальные обновления из Visual Studio Code, повторно опубликуйте проект.
Rename Settings (Переименовать параметры) Изменяет имя ключа существующего параметра приложения-функции в Azure. Эта команда не влияет на параметры в файле local.settings.json. После переименования параметров в Azure следует скачать эти изменения в локальный проект.
Перезапуск Перезапускает приложение-функцию в Azure. При развертывании обновлений приложение-функция также перезапускается.
Set AzureWebJobsStorage (Установить параметр AzureWebJobsStorage) Устанавливает значение параметра приложения AzureWebJobsStorage. Этот параметр обязателен в Функциях Azure. Он устанавливается при создании приложения-функции в Azure.
Начало Запускает остановленное приложение-функцию в Azure.
Запуск журналов потоковой передачи Запускает потоковую передачу журналов для приложения-функции в Azure. Используйте потоковую передачу журналов при удаленном устранении неполадок в Azure, если необходимо просмотреть данные журнала практически в реальном времени. Дополнительные сведения см. в разделе "Потоковая передача журналов".
Остановить Останавливает приложение-функцию, выполняющееся в Azure.
Stop Streaming Logs (Остановить потоковую передачу журналов) Останавливает потоковую передачу журналов для приложения-функции в Azure.
Toggle as Slot Setting (Использовать как параметр слота) Если этот параметр включен, обеспечивает сохранение параметра приложения для заданного слота развертывания.
Uninstall Azure Functions Core Tools (Удалить Azure Functions Core Tools) Удаляет набор инструментов Azure Functions Core Tools, необходимый для работы расширения.
Upload Local Settings (Отправить локальные параметры) Отправляет параметры из файла local.settings.json и устанавливает их для выбранного приложения-функции в Azure. Если локальный файл зашифрован, он расшифровывается, после чего параметры отправляются, а файл шифруется снова. Если значения каких-то параметров в двух расположениях конфликтуют, вам будет предложено выбрать, как поступить. Перед выполнением этой команды не забудьте сохранить изменения в файле local.settings.json.
View Commit in GitHub (Просмотр фиксации в GitHub) Показывает последнюю фиксацию в конкретном развернутом проекте, когда приложение-функция подключено к репозиторию.
View Deployment Logs (Просмотр журналов развертывания) Отображает журналы для конкретного проекта, развернутого в приложении-функции в Azure.

Следующие шаги

Дополнительные сведения об Azure Functions Core Tools см. в статье "Работа с Azure Functions Core Tools".

Дополнительные сведения о разработке функций, таких как библиотеки класса .NET, см. в статье Справочник разработчика C# по функциям Azure. В статье приведены также ссылки на примеры того, как использовать атрибуты для объявления разных типов привязок, поддерживаемых в Функциях Azure.