Разработка Функций 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. В Visual Studio Code нажмите клавишу F1 , чтобы открыть палитру команд и выполнить поиск и выполнить команду Azure Functions: Create New Project.... Выберите расположение каталога для рабочей области проекта и нажмите кнопку "Выбрать".

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

    Вместо этого можно запустить команду Azure Functions: Create New Containerized Project... , чтобы также получить файл Dockerfile, созданный для проекта.

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

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

    Совет

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

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

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

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

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

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

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

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

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

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

    Внимание

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

  • Dockerfile (необязательно): позволяет создать контейнерное приложение-функцию из проекта с помощью утвержденного базового образа для проекта. Этот файл получается только при выполнении команды Azure Functions: Create New Containerized Project.... Файл Dockerfile можно добавить в существующий проект с помощью func init --docker-only команды в Core Tools.

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

Файл библиотеки классов 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 в Visual Studio Code.

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

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

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

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

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

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

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

  1. В Visual Studio Code нажмите клавишу F1, чтобы открыть палитру команд. В командной строке (>), введите и выберите Функции Azure: создание приложения-функции в Azure.

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

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

    На панели "Журнал действий" расширение Azure отображает состояние отдельных ресурсов, созданных в Azure.

    Снимок экрана: журнал создания ресурсов Azure.

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

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

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

    Совет

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

Создание развертывания приложений контейнеров Azure

Вы используете Visual Studio Code для создания ресурсов Azure для контейнерного проекта кода. Когда расширение обнаруживает наличие Dockerfile во время создания ресурса, он спрашивает, нужно ли развертывать образ контейнера вместо просто кода. Visual Studio Code создает среду приложений контейнеров Azure для проекта контейнерного кода, интегрированного с Функции Azure. Дополнительные сведения см. в статье "Приложения контейнеров Azure" для размещения Функции Azure.

Примечание.

Для развертывания контейнеров требуется расширение "Приложения контейнеров Azure" для Visual Studio Code. Сейчас это расширение находится в режиме предварительной версии.

Процесс создания зависит от выбора быстрого создания или использования дополнительных параметров:

  1. В Visual Studio Code нажмите клавишу F1 , чтобы открыть палитру команд и выполнить поиск и выполнить команду Azure Functions: Create Function App in Azure....

  2. При появлении запроса выберите образ контейнера.

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

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

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

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

Примечание.

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

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

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

Внимание

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

  1. В палитре команд введите и выберите Функции Azure: Развернуть в приложении-функции.

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

  3. После завершения развертывания выберите "Просмотреть выходные данные ", чтобы просмотреть результаты создания и развертывания, включая созданные ресурсы 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" позволяет выполнять отдельные функции как в проекте на локальном компьютере, где ведется разработка, так и в подписке 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. Основные версии, соответствующие текущей среде выполнения функций, указаны в справочной статье для привязки.

Совет

Для установки пакетов расширений привязки можно также использовать команды NuGet в комплекте разработки на C#.

Скрипт 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

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