Поделиться через


Разработка Azure Functions с помощью Visual Studio Code

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

Расширение Azure Functions предоставляет следующие преимущества:

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

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

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

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

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

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

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

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

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

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

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

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

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

Внимание

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

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

  • Visual Studio Code установлен на одной из поддерживаемых платформ.

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

  • Активная подписка Azure. Если у вас еще нет учетной записи, ее можно создать из расширения в Visual Studio Code.

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

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

  • .NET (CLI), который входит в пакет SDK .NET.

  • Python, одна из поддерживаемых версий.

  • расширение Python для Visual Studio Code.

Создание проекта Azure Functions

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

  1. В Visual Studio Code нажмите клавишу F1, чтобы открыть палитру команд. Найдите и выполните команду Azure Functions: Create New Project.... Выберите расположение каталога для рабочей области проекта, а затем нажмите кнопку "Выбрать".

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

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

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

  3. Выберите шаблон функции триггера HTTP или выберите "Пропустить сейчас ", чтобы создать проект без функции. Вы всегда можете добавить функцию в проект позже.

    Совет

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

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

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

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

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

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

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

Подсказка значение Описание
Select binding direction (Выберите направление привязки) out Привязка является выходной привязкой.
Select binding with direction (Выберите привязку с направлением) Azure Queue Storage Привязка является привязкой к очереди в системе Azure Storage.
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 Имя параметра приложения, содержащего connection string для учетной записи хранилища. Параметр 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 MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)
{

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

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

В этом примере используется интеграция ASP.NET Core. Если вы не используете интеграцию ASP.NET Core, необходимо изменить HttpRequest на HttpRequestData и IActionResult на HttpResponseData.

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

@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) {

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

const { app, output } = require('@azure/functions');

const sendToQueue = output.storageQueue({
  queueName: 'outqueue',
  connection: 'AzureWebJobsStorage',
});

app.http('HttpExample', {
  methods: ['GET', 'POST'],
  authLevel: 'anonymous',
  extraOutputs: [sendToQueue],
  handler: async (request, context) => {
    try {
      context.log(`Http function processed request for url "${request.url}"`);

      const name = request.query.get('name') || (await request.text());
      context.log(`Name: ${name}`);

      if (name) {
        const msg = `Name passed to the function ${name}`;
        context.extraOutputs.set(sendToQueue, [msg]);
        return { body: msg };
      } else {
        context.log('Missing required data');
        return { status: 404, body: 'Missing required data' };
      }
    } catch (error) {
      context.log(`Error: ${error}`);
      return { status: 500, body: 'Internal Server Error' };
    }
  },
});

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

import {
  app,
  output,
  HttpRequest,
  HttpResponseInit,
  InvocationContext,
  StorageQueueOutput,
} from '@azure/functions';

const sendToQueue: StorageQueueOutput = output.storageQueue({
  queueName: 'outqueue',
  connection: 'AzureWebJobsStorage',
});

export async function HttpExample(
  request: HttpRequest,
  context: InvocationContext,
): Promise<HttpResponseInit> {
  try {
    context.log(`Http function processed request for url "${request.url}"`);

    const name = request.query.get('name') || (await request.text());
    context.log(`Name: ${name}`);

    if (name) {
      const msg = `Name passed to the function ${name}`;
      context.extraOutputs.set(sendToQueue, [msg]);
      return { body: msg };
    } else {
      context.log('Missing required data');
      return { status: 404, body: 'Missing required data' };
    }
  } catch (error) {
    context.log(`Error: ${error}`);
    return { status: 500, body: 'Internal Server Error' };
  }
}

app.http('HttpExample', {
  methods: ['GET', 'POST'],
  authLevel: 'anonymous',
  handler: HttpExample,
});

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

Вход в Azure

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

  1. Если вы еще не вошли, в строке Активность выберите значок Azure. Затем в разделе Resources выберите Sign in to Azure.

    Скриншот окна входа в Azure в Visual Studio Code.

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

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

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

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

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

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

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

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

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

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

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

    Скриншот, отображающий журнал создания ресурсов Azure.

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

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

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

    Совет

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

Создание развертывания Azure Container Apps

Внимание

Теперь доступен новый метод размещения для запуска Azure Functions непосредственно в Azure Container Apps. См. раздел Поддержка родных функций Azure в Azure Container Apps. Эта интеграция позволяет использовать все функции и возможности Azure Container Apps. Вы также можете воспользоваться моделью программирования функций и простотой автомасштабирования, предоставляемой Azure Functions.

Мы рекомендуем этот подход для большинства новых рабочих нагрузок. Дополнительные сведения см. в Azure Functions в Azure Container Apps.

Используйте Visual Studio Code для создания ресурсов Azure для контейнерного проекта кода. Когда расширение обнаруживает наличие Dockerfile во время создания ресурса, он спрашивает, нужно ли развертывать образ контейнера вместо просто кода. Visual Studio Code создает среду Azure Container Apps для проекта контейнеризованного кода, интегрированного с Azure Functions. Дополнительные сведения см. в разделе об использовании Azure Functions в Azure Container Apps.

Примечание.

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

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

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

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

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

    Подсказка Выбор
    Выбор подписки (необязательно) Выберите подписку, которую нужно использовать. Эта подсказка не отобразится, если в области Ресурсы отображается только одна подписка.
    Введите имя нового приложения-функции Введите имя, которое допустимо в пути URL. Имя, которое вы вводите, проверяется, чтобы убедиться, что оно глобально уникально в Функциях.
    Выбор типа проверки подлинности ресурса Выберите Managed identity чтобы приложение подключалось к удаленным ресурсам с помощью проверки подлинности Microsoft Entra ID вместо использования общих секретов (строк подключения и ключей), которые являются менее безопасными.
    Выбор расположения для новых ресурсов Для повышения производительности выберите регион рядом с вами.
  4. При появлении запроса введите имя среды приложения контейнера.

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

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

Примечание.

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

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

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

Внимание

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

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

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

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

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

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

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

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

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

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

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

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

Расширение Azure Functions позволяет выполнять отдельные функции. Вы можете выполнять функции в проекте на локальном компьютере разработки или в подписке Azure.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. В Visual Studio откройте Cloud Explorer, разверните учетную запись хранилища>Ваша учетная запись хранилища, затем выберите Свойства и скопируйте значение Основной строка подключения.

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

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

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

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

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

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

  1. В палитре команд введите Azure Functions: выполните функцию и выберите Local project.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Параметры также можно опубликовать с помощью команды Azure Functions: Загрузить локальные параметры в палитре команд. Отдельные параметры можно добавить в параметры приложения в Azure с помощью команды Azure Functions. Добавление нового параметра.

Совет

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

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

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

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

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

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

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

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

За исключением 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)

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

Логи потоковой передачи.

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

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

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

Application Insights

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

Дополнительные сведения о мониторинге с помощью Application Insights см. в статье Monitor Azure Functions.

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

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

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

  2. Перейдите к параметру User Settings>Extensions>Azure Functions.

  3. Выберите C#Script из функции Azure: язык проекта.

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

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

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

команда Azure Functions Описание
Add New Settings (Добавить новый параметр) Создает новый параметр приложения в Azure. Дополнительные сведения см. в разделе "Публикация параметров приложения". Вам также может потребоваться скачать этот параметр и включить его в набор локальных параметров.
Configure Deployment Source (Настройка источника развертывания) Подключает приложение-функцию в Azure к локальному репозиторию Git. Дополнительные сведения см. в статье Континестное развертывание Azure Functions.
Connect to GitHub Repository Подключает приложение-функцию к репозиторию GitHub.
Copy Function URL (Копировать URL-адрес функции) Возвращает удаленный URL-адрес функции, активируемой по HTTP, которая выполняется в Azure. Дополнительные сведения см. в разделе "Получение URL-адреса развернутой функции".
Создать функцию приложения в Azure Создает новое функциональное приложение в вашей подписке на Azure. Дополнительные сведения см. в разделе о том, как опубликовать в новом функциональном приложении в Azure.
Decrypt Settings (Расшифровать параметры) Расшифровывает локальные параметры, зашифрованные командой Azure Functions: Encrypt Settings.
Delete Function App (Удалить приложение-функцию) Удаляет функциональное приложение из подписки в Azure. Если в плане службы приложений нет других приложений, вы также можете удалить этот план. Другие ресурсы, например учетные записи хранения и группы ресурсов, не удаляются. Чтобы удалить все ресурсы, следует вместо этого удалить группу ресурсов. Ваш локальный проект не будет затронут.
Delete Function (Удалить функцию) Удаляет существующую функцию из приложения-функции в Azure. Поскольку такое удаление не затрагивает локальный проект, вместо этого рекомендуется удалить функцию локально, а затем повторно опубликовать проект.
Delete Proxy (Удалить прокси-сервер) Удаляет прокси Azure Functions из вашего приложения функций в Azure. Дополнительные сведения о прокси-серверах см. в разделе Работа с прокси в Azure Functions.
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файла локальных параметров. В этом файле IsEncrypted также задано как true, что указывает, что локальная среда выполнения расшифровывает настройки перед их использованием. Зашифруйте локальные параметры, чтобы снизить риск утечки ценных сведений. В Azure параметры приложения всегда хранятся в зашифрованном виде.
Execute Function Now (Выполнить функцию) Вручную запускает функцию с помощью API администрирования. Используйте эту команду для тестирования как локально во время отладки, так и для функций, выполняемых в Azure. При запуске функции в Azure расширение сначала получает ключ администратора, который используется для вызова API удаленного администратора, запускающих функции в Azure. Текст сообщения, отправляемого в API, зависит от типа триггера. Таймерные триггеры не требуют передавать какие-либо данные.
Initialize Project for Use with VS Code (Инициализировать проект для использования с VS Code) Добавляет файлы проекта Visual Studio Code, необходимые для уже существующего проекта 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 Functions. Он устанавливается при создании приложения-функции в Azure.
Начало Запускает остановленное функциональное приложение в Azure.
Запуск журналов потоковой передачи Запускает потоковые журналы для функционального приложения в Azure. Используйте журналы потоковой передачи во время удаленного устранения неполадок в Azure, если вам нужно просмотреть сведения о ведении журнала практически в реальном времени. Дополнительные сведения см. в разделе "Журналы потоковой передачи".
Остановить Останавливает приложение-функцию, работающее в Azure.
Stop Streaming Logs (Остановить потоковую передачу журналов) Останавливает журналы потоковой передачи для приложения-функции в Azure.
Toggle as Slot Setting (Переключить как настройку слота) Если этот параметр включен, обеспечивает сохранение параметра приложения для заданного слота развертывания.
Uninstall Azure Functions Core Tools Удаляет Azure Functions Core Tools, которые необходимы для этого расширения.
Upload Local Settings (Отправить локальные параметры) Отправляет настройки из файла local.settings.json в выбранное приложение Function App в Azure. Если локальный файл зашифрован, он расшифровывается, загружается и шифруется снова. Если значения каких-то параметров в двух расположениях конфликтуют, вам будет предложено выбрать, как поступить. Перед выполнением этой команды не забудьте сохранить изменения в файле local.settings.json.
Просмотреть коммит в GitHub Показывает последний коммит в конкретном развертывании, когда ваше функциональное приложение подключено к репозиторию.
View Deployment Logs (Просмотр журналов развертывания) Отображает журналы конкретного развертывания в приложении функций в Azure.

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

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

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