Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Расширение Функции Azure для Visual Studio Code позволяет локально разрабатывать функции и развертывать их в #REF!. Если это ваш первый опыт работы с Функции Azure, вы можете узнать больше о Общие сведения о Функции Azure.
Расширение Функции Azure предоставляет следующие преимущества:
- Создание, редактирование и выполнение функций на локальном компьютере для разработки.
- Опубликуйте проект Функции Azure непосредственно в #REF!.
- Напишите функции на различных языках, используя преимущества Visual Studio Code.
Вы просматриваете версию C# этой статьи. Выберите предпочитаемый язык программирования функций в начале статьи.
Если вы ещё не знакомы с Functions, вам может потребоваться сначала пройти краткое руководство Visual Studio Code.
Вы просматриваете Java версию этой статьи. Выберите предпочитаемый язык программирования функций в начале статьи.
Если вы не знакомы с функциями, вам может потребоваться сначала выполнить статью Visual Studio Code краткое руководство.
Вы просматриваете версию JavaScript этой статьи. Выберите предпочитаемый язык программирования функций в начале статьи.
Если вы не знакомы с функциями, рекомендуется сначала ознакомиться со статьей краткое руководство Visual Studio Code.
Вы просматриваете версию PowerShell этой статьи. Выберите предпочитаемый язык программирования функций в начале статьи.
Если вы не знакомы с Функциями, вам может потребоваться сначала ознакомиться с кратким руководством Visual Studio Code.
Вы просматриваете Python версию этой статьи. Выберите предпочитаемый язык программирования функций в начале статьи.
Если вы не знакомы с функциями, вам может потребоваться сначала ознакомиться со статьей краткое руководство Visual Studio Code.
Вы просматриваете версию TypeScript этой статьи. Выберите предпочитаемый язык программирования функций в начале статьи.
Если вы новичок в функциях, вам могло бы понадобиться сначала ознакомиться со статьёй краткое руководство по Visual Studio Code.
Внимание
Для одиночного приложения-функции не следует сочетать локальную разработку с разработкой на портале. При публикации из локального проекта в приложение-функцию любые функции, разработанные на портале, будут перезаписаны в процессе развертывания.
Предварительные требования
Visual Studio Code установлен на одной из поддерживаемых платформ.
расширение Функции Azure. Вы также можете установить пакет расширения #REF! Tools, который рекомендуется для работы с ресурсами #REF!.
Активная подписка #REF!. Если у вас еще нет учетной записи, ее можно создать из расширения в Visual Studio Code.
Для локального запуска и отладки функций требуются эти предварительные условия. Они не требуются только для создания или публикации проектов в Функции Azure.
- Средство Функции Azure Core Tools, которое обеспечивает интегрированную локальную отладку. Если у вас установлено расширение Функции Azure, проще всего установить или обновить основные средства, выполнив команду
Функции Azure: Install or Update Функции Azure Core Toolsиз палитры команд.
Расширение C# для Visual Studio Code.
.NET (CLI), который входит в пакет SDK .NET.
Java, одна из поддерживаемых версий.
Maven 3 или более поздней версии.
- Node.js, одна из поддерживаемых версий. Используйте команду , чтобы проверить установленную версию.
Рекомендуется использовать PowerShell 7.2 . Сведения о версиях см. в статье Версии PowerShell.
Расширение PowerShell для Visual Studio Code.
Python, одна из поддерживаемых версий.
расширение Python для Visual Studio Code.
Создание проекта Функции Azure
Расширение "Функции" позволяет создавать необходимый проект приложения-функции одновременно при создании первой функции. Используйте эти действия, чтобы создать функцию, активированную HTTP, в новом проекте. Простейшим шаблоном триггера функции для демонстрации является триггер HTTP.
В Visual Studio Code нажмите клавишу F1, чтобы открыть палитру команд. Выполните поиск и выполните команду
Функции Azure: Create New Project.... Выберите расположение каталога для рабочей области проекта, а затем нажмите кнопку "Выбрать".Вы можете создать новую папку или выбрать пустую папку для рабочей области проекта, но не выбирайте папку проекта, которая уже входит в рабочую область.
Вместо этого можно запустить команду
Функции Azure: Create New Containerized Project..., чтобы также получить файл Dockerfile, созданный для проекта.При появлении запроса выберите язык для проекта. При необходимости выберите определенную языковую версию.
Выберите шаблон функции триггера HTTP или выберите "Пропустить сейчас ", чтобы создать проект без функции. Вы всегда можете добавить функцию в проект позже.
Совет
Чтобы просмотреть дополнительные шаблоны, выберите параметр фильтра "Изменить шаблон" и задайте значение Core или All.
Для имени функции введите HttpExample, нажмите клавишу ВВОД, а затем выберите авторизацию функции .
Для этого уровня авторизации необходимо предоставить ключ функции при вызове конечной точки функции.
В раскрывающемся списке выберите "Добавить в рабочую область".
В окне "Доверять авторам файлов в этой папке?", нажмите кнопку "Да".
Visual Studio Code создает функцию на выбранном вами языке на основе шаблона для функции, активируемой HTTP.
Созданные файлы проекта
Шаблон проекта создает проект на выбранном языке и устанавливает необходимые зависимости. Новый проект на любом языке содержит следующие файлы:
host.json: позволяет настроить хост Функций. Эти параметры применяются при локальном запуске функций и при выполнении их в #REF!. Дополнительные сведения см. в справочной статье о host.json.
local.settings.json. Поддерживает параметры, используемые при локальном выполнении функций. Эти параметры действуют только при локальном запуске функций. Подробнее см. в разделе Файл локальных параметров.
Внимание
Так как файл local.settings.json может содержать секреты, обязательно исключите файл из системы управления версиями проекта.
Dockerfile (необязательно): Позволяет вам создать контейнеризованное приложение-функцию из вашего проекта с использованием утвержденного базового образа для вашего проекта. Этот файл получается только при выполнении команды
Функции Azure: Create New Containerized Project.... Файл Dockerfile можно добавить в существующий проект с помощью команды в Core Tools.
Файл библиотеки классов HttpExample.cs, содержимое которого зависит от того, выполняется ли проект в изолированном рабочем процессе или в процессе с узлом Функций.
Эти файлы создаются:
Файл pom.xml в корневой папке, который определяет параметры проекта и развертывания, включая зависимости проекта и версию Java. В pom.xml также содержатся сведения о ресурсах #REF!, созданных во время развертывания.
Файл Functions.java на исходном пути, в котором реализуется функция.
Созданные файлы зависят от выбранной модели программирования Node.js для функций:
- версия 4
- версия 3
Файл package.json в корневой папке.
Именованный файл .js в папке src\functions , который содержит определение функции и код функции.
Создается папка HttpExample, содержащая:
- Определение файла function.json
- Файл run.ps1, содержащий код функции.
Созданные файлы зависят от выбранной модели программирования Python для функций:
- версия 2
- версия 1
Файл requirements.txt на уровне проекта, в котором перечислены пакеты, необходимые для работы функций.
Файл function_app.py, содержащий определение функции и код.
На этом этапе можно локально запустить функцию триггера HTTP.
Добавление функции в проект
Вы можете добавить новую функцию в существующий проект с помощью одного из стандартных шаблонов триггеров функций. Чтобы добавить триггер новой функции, выберите F1, чтобы открыть палитру команд, а затем найдите и выполните команду Функции Azure: Create Function. Выберите тип триггера и задайте для него необходимые атрибуты, следуя инструкциям на экране. Если триггеру требуется ключ доступа или строка подключения для подключения к службе, перед созданием триггера функции подготовьте этот элемент.
Это действие добавляет в проект новый файл библиотеки классов C# (.cs).
Это действие добавляет в проект новый файл Java (java).
Результаты этого действия зависят от версии модели Node.js.
- версия 4
- версия 3
Файл package.json в корневой папке.
Именованный файл .js в папке src\functions , который содержит определение функции и код функции.
Это действие создает в проекте новую папку. Папка содержит новый файл function.json и новый файл кода PowerShell.
Результаты этого действия зависят от версии модели Python.
- версия 2
- версия 1
Visual Studio Code добавляет новый код функции в выбранный файл function_app.py (поведение по умолчанию) или в другой выбранный файл Python.
Подключение к службам
Вы можете подключить функцию к другим службам #REF!, добавив входные и выходные привязки. Привязки подключают вашу функцию к другим службам без необходимости писать код для такого подключения.
Например, способ определения выходной привязки, которая записывает данные в очередь хранилища, зависит от модели процесса:
- Изолированный процесс
- В процессе
При необходимости добавьте ссылку на пакет, поддерживающий расширение привязки.
Обновите метод функции, чтобы добавить атрибут, определяющий параметр привязки, например для выходной привязки очереди. Можно использовать объект для возврата нескольких сообщений или нескольких выходных потоков.
Например, чтобы добавить выходную привязку, которая записывает данные в очередь хранилища, обновите метод функции, чтобы добавить параметр привязки, определенный с помощью заметки . Объект представляет сообщения, записанные в выходную привязку при завершении функции.
Например, способ определения выходной привязки, которая записывает данные в очередь хранилища, зависит от версии модели Node.js:
- версия 4
- версия 3
Используя модель Node.js версии 4, необходимо вручную добавить параметр в определение функции с помощью функции в объекте . Эта функция определяет очередь хранилища для записи выходных данных. Выходные данные записываются после завершения функции.
Visual Studio Code позволяет добавлять привязки в файл function.json, следуя удобному набору запросов.
Чтобы добавить привязку, откройте поддон команды (F1) и введите Функции Azure: добавьте привязку... выберите функцию для новой привязки, а затем следуйте указаниям, которые зависят от типа привязки, добавляемой в функцию.
Ниже приведены примеры подсказок для определения новой выходной привязки хранилища.
| Подсказка | значение | Описание |
|---|---|---|
| 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 в папке функции, выбрать пункт Добавить привязку и выполнить те же подсказки.
В этом примере к массиву в файле function.js добавляется следующая привязка:
{
"type": "queue",
"direction": "out",
"name": "msg",
"queueName": "outqueue",
"connection": "MyStorageConnection"
}
Например, способ определения выходной привязки, которая записывает данные в очередь хранилища, зависит от версии модели Python:
- версия 2
- версия 1
Используйте декоратор функции, чтобы определить именованный параметр привязки для выходных данных в очередь хранилища. Параметр определяет, какие выходные данные записываются.
В следующем примере показано определение функции после добавления связи с хранилищем очередей в функцию, инициируемую HTTP-запросом.
- Изолированный процесс
- В процессе
Так как функция, активировавшая HTTP, также возвращает http-ответ, функция возвращает объект, представляющий выходные данные HTTP и очереди.
[Function("HttpExample")]
public MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)
{
В этом примере приведено определение объекта, включающего выходную привязку:
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) {
Дополнительные сведения, включая ссылки на пример кода привязки, к которому можно обратиться, см. в разделе "Добавление привязок к функции".
- версия 4
- версия 3
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
Дополнительные сведения, включая ссылки на пример кода привязки, к которому можно обратиться, см. в разделе "Добавление привязок к функции".
- версия 2
- версия 1
@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. Дополнительные сведения, включая ссылки на пример кода привязки, к которому можно обратиться, см. в разделе "Добавление привязок к функции".
- версия 4
- версия 3
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. Дополнительные сведения, включая ссылки на пример кода привязки, к которому можно обратиться, см. в разделе "Добавление привязок к функции".
Вход в #REF!
Прежде чем создавать #REF! ресурсы или публиковать приложение, необходимо войти в #REF!.
Если вы еще не вошли, в строке Активность выберите значок #REF!. Затем в разделе Resources выберите Sign in to #REF!.
Если вы уже выполнили вход и видите существующие подписки, перейдите к следующему разделу. Если у вас еще нет учетной записи #REF!, выберите Создать учетную запись #REF!. Учащиеся могут выбрать Создать учетную запись #REF! для студентов.
При появлении запроса в браузере выберите учетную запись #REF! и войдите с помощью учетных данных учетной записи #REF!. Если вы создадите новую учетную запись, вы сможете войти после ее создания.
После успешного входа можно закрыть новое окно браузера. Подписки, принадлежащие вашей учетной записи #REF!, отображаются на боковой панели.
Создание ресурсов #REF!
Прежде чем опубликовать проект Функций в #REF!, необходимо иметь функциональное приложение и связанные ресурсы в подписке #REF! для запуска вашего кода. Функциональное приложение обеспечивает контекст выполнения ваших функций. При публикации из Visual Studio Code в приложение-функцию в #REF! проект упаковается и развертывается в выбранном приложении-функции в подписке #REF!.
При создании приложения-функции в #REF! можно выбрать быстрый путь к созданию приложения-функции с помощью значений по умолчанию или пути, который предоставляет дополнительные параметры, например использование существующих #REF! ресурсов. Таким образом, у вас есть больше контроля над созданием удаленных ресурсов.
- Быстрое создание
- Дополнительные параметры
В этом разделе вы создаете приложение-функцию в плане Flex Consumption вместе с связанными ресурсами в вашей подписке #REF!. Многие решения по созданию ресурсов принимаются на основе поведения по умолчанию. Для получения большего контроля над созданными ресурсами необходимо создать приложение-функцию с дополнительными параметрами.
В Visual Studio Code выберите F1, чтобы открыть палитру команд. В командной строке (
>) введите и выберите Функции Azure: создание приложения-функции в #REF!.В подсказках укажите следующие сведения:
Подсказка Действие Выбор подписки Выберите используемую подписку #REF!. Запрос не отображается, если в разделе "Ресурсы" отображается только одна подписка. Введите новое имя приложения-функции Введите глобально уникальное имя, допустимое в пути URL-адреса. Введенное имя проверяется, чтобы убедиться, что оно уникально в Функции Azure. Выбор расположения для новых ресурсов Выберите регион #REF!. Для повышения производительности выберите регион рядом с вами. Отображаются только регионы, поддерживаемые планами потребления Flex. Выберите стек сред выполнения Выберите языковую версию, выполняемую локально. Выбор типа проверки подлинности ресурса Выберите управляемое удостоверение, которое является наиболее безопасным вариантом подключения к учетной записи хранения узла по умолчанию. На панели #REF!: журнал действий расширение #REF! отображает состояние отдельных ресурсов при создании в #REF!.
При создании приложения-функции в подписке #REF! создаются следующие связанные ресурсы. Ресурсы именуются на основе имени, введенного для функционального приложения.
- группу ресурсов — логический контейнер связанных ресурсов;
- Приложение-функция, которое предоставляет окружение для выполнения кода вашей функции. Приложение-функция позволяет группировать функции в логические единицы и упростить развертывание, масштабирование и совместное использование ресурсов, а также управление ими в рамках единого плана размещения.
- План Служба приложений Azure, определяющий базовую инфраструктуру для функционального приложения.
- Стандартная учетная запись служба хранилища Azure, которая используется узлом функций для поддержания состояния и других сведений о приложении-функции.
- Экземпляр Application Insights, подключенный к функциональному приложению, который отслеживает использование функций в приложении.
- Управляемое удостоверение, назначенное пользователем, которое добавляется в роль участника данных объектного хранилища Blob в новой учетной записи хранилища узла по умолчанию.
После создания приложения-функции и применения пакета развертывания отобразится уведомление.
Совет
По умолчанию ресурсы #REF!, необходимые для вашего функционального приложения, создаются на основе имени, которое вы вводите для этого приложения. По умолчанию ресурсы создаются вместе с функцией приложения в той же новой группе ресурсов. Если вы хотите настроить имена связанных ресурсов или повторно использовать существующие ресурсы, опубликуйте проект с дополнительными параметрами создания.
Создание развертывания Контейнеры приложений Azure
Внимание
Теперь доступен новый метод размещения для запуска Функции Azure непосредственно в Контейнеры приложений Azure. См. информацию о поддержке родных функций Azure в Контейнеры приложений Azure. Эта интеграция позволяет использовать все функции и возможности Контейнеры приложений Azure. Вы также можете воспользоваться моделью программирования функций и простотой автомасштабирования, предоставляемой Функции Azure.
Мы рекомендуем этот подход для большинства новых рабочих нагрузок. Дополнительные сведения см. в Функции Azure Контейнеры приложений Azure.
Используйте Visual Studio Code для создания ресурсов #REF! для контейнерного проекта кода. Когда расширение обнаруживает наличие Dockerfile во время создания ресурса, он спрашивает, нужно ли развертывать образ контейнера вместо просто кода. Visual Studio Code создает среду Контейнеры приложений Azure для проекта контейнеризованного кода, интегрированного с Функции Azure. Дополнительные сведения см. в разделе Контейнеры приложений Azure хостинг Функции Azure.
Примечание.
Для развертывания контейнера требуется расширение Контейнеры приложений Azure для Visual Studio Code. Сейчас это расширение находится в режиме предварительной версии.
Процесс создания зависит от выбора быстрого создания или использования дополнительных параметров:
- Быстрое создание
- Дополнительные параметры
В Visual Studio Code нажмите клавишу F1, чтобы открыть палитру команд. Найдите и выполните команду
Функции Azure: Create Function App in #REF!....При появлении запроса выберите образ контейнера.
Предоставьте следующие сведения по соответствующим запросам:
Подсказка Выбор Выбор подписки (необязательно) Выберите подписку, которую нужно использовать. Эта подсказка не отобразится, если в области Ресурсы отображается только одна подписка. Введите имя нового приложения-функции Введите имя, которое допустимо в пути URL. Имя, которое вы вводите, проверяется, чтобы убедиться, что оно глобально уникально в Функциях. Выбор типа проверки подлинности ресурса Выберите Managed identity чтобы приложение подключалось к удаленным ресурсам с помощью проверки подлинности Microsoft Entra ID вместо использования общих секретов (строк подключения и ключей), которые являются менее безопасными. Выбор расположения для новых ресурсов Для повышения производительности выберите регион рядом с вами. При появлении запроса введите имя среды приложения контейнера.
Расширение показывает статус отдельных ресурсов в процессе их создания в #REF!, на панели #REF!: Журнал активности.
Дополнительные сведения о ресурсах, необходимых для запуска контейнерных функций в приложениях контейнеров, см. в разделе "Обязательные ресурсы".
Примечание.
В настоящее время нельзя использовать Visual Studio Code для развертывания контейнеризованного приложения-функции в интегрированной с Функции Azure среде Container Apps. Вместо этого необходимо опубликовать ваш образ контейнера в реестре контейнеров и затем установить этот образ из реестра в качестве источника развертывания для функций, размещенных в Container Apps. Дополнительные сведения см. в разделе "Создание приложения-функции" в контейнере и обновление образа в реестре.
Развертывание файлов проекта
Настройте непрерывное развертывание, чтобы функциональное приложение в #REF! обновлялось при обновлении исходных файлов в подключенном исходном расположении. Вы также можете выполнять развертывание файлов проекта из Visual Studio Code. При публикации из Visual Studio Code вы можете воспользоваться технологией развертывания Zip.
Внимание
Развертывание в существующем функциональном приложении всегда перезаписывает содержимое этого приложения в #REF!.
В палитре команд введите и выберите Функции Azure: развертывание в функциональное приложение.
Выберите функциональное приложение, которое вы только что создали. При появлении запроса на перезапись предыдущих развертываний выберите Развернуть, чтобы развернуть код функции в новом ресурсе функционального приложения.
После завершения развертывания выберите View Output для просмотра результатов создания и развертывания, включая созданные ресурсы #REF!. Если вы пропустили уведомление, выберите значок колокольчика в правом нижнем углу, чтобы увидеть его снова.
Снимок экрана с окном "Просмотреть выходные данные".
Получение URL-адреса активированной функции HTTP в #REF!
Чтобы вызвать функцию с триггером HTTP из клиента, вам потребуется URL-адрес функции, который доступен после развертывания в приложении-функции. Все необходимые ключи функций входят в состав этого URL-адреса. Чтобы получить URL-адреса для развернутых вами функций, вы можете воспользоваться расширением. Если вы просто хотите запустить удаленную функцию в #REF!, используйте функцию Execute сейчас из расширения.
Выберите F1, чтобы открыть палитру команд, а затем найдите и выполните команду Функции Azure: URL-адрес функции копирования.
Следуйте инструкциям, чтобы выбрать приложение-функцию в #REF!, а затем конкретный триггер HTTP, который требуется вызвать.
URL-адрес функции будет скопирован в буфер обмена вместе со всеми необходимыми ключами, которые передаются в параметре запроса . Используйте средство HTTP для отправки запросов POST или браузера для отправки запросов GET в удаленную функцию.
Когда расширение получает URL-адрес функции в #REF!, она использует учетную запись #REF! для автоматического извлечения ключей, необходимых для запуска функции. Дополнительные сведения о ключах доступа к функциям. Для запуска функций, активируемых чем-либо другим, кроме HTTP-запроса, необходим ключ администратора.
Запуск функций
Расширение Функции Azure позволяет выполнять отдельные функции. Вы можете выполнять функции в проекте на локальном компьютере разработки или в подписке #REF!.
Для HTTP-триггеров расширение вызывает конечную точку HTTP, Для других типов триггеров расширение вызывает API-интерфейсы администратора, чтобы запустить функцию. Текст сообщения, отправляемого функции, зависит от типа триггера. Если для триггера требуются тестовые данные, вам будет предложено ввести данные в определенном формате JSON.
Запуск функций в #REF!
Чтобы выполнить функцию в #REF! из Visual Studio Code, выполните следующие действия:
В палитре команд введите Функции Azure: выполните функцию сейчас и выберите подписку #REF!.
В списке выберите функцию приложения в #REF!. Если вы не видите своего функционального приложения, убедитесь, что вы вошли в нужную подписку.
В списке выберите функцию, которую вы хотите запустить. В Введите текст запроса, введите текст сообщения, и нажмите клавишу ВВОД, чтобы отправить это сообщение в вашу функцию.
Текст по умолчанию в Введите тело запроса указывает формат тела. Если ваше функциональное приложение не содержит функций, отобразится уведомление с этой ошибкой.
Когда функция выполняется в #REF! и возвращает ответ, Visual Studio Code отображает уведомление.
Вы также можете запустить функцию из области #REF!: Функции, открыв контекстное меню функции, которую вы хотите запустить из приложения-функции в подписке #REF!, а затем выбрав Execute Function Now... .
При запуске функций в #REF! из Visual Studio Code расширение использует учетную запись #REF! для автоматического извлечения ключей, необходимых для запуска функции. Дополнительные сведения о ключах доступа к функциям. Для запуска функций, активируемых чем-либо другим, кроме HTTP-запроса, необходим ключ администратора.
Запуск функций локально
Локальная среда выполнения — это та же среда выполнения, которая размещает приложение-функцию в #REF!. Среда выполнения считывает локальные параметры из файлаlocal.settings.json. Чтобы запустить проект Функций локально, необходимо выполнить дополнительные требования.
Настройка проекта для локального запуска
Среда выполнения Функций использует учетную запись служба хранилища Azure для всех типов триггеров, кроме HTTP и веб-перехватчиков. Задайте для ключа Values.AzureWebJobsStorage допустимую строку подключения к учетной записи служба хранилища Azure.
В этом разделе используется расширение служба хранилища Azure для Visual Studio Code с Обозреватель службы хранилища Azure для подключения к хранилищу и получения строки подключения.
Чтобы задать строку подключения учетной записи хранилища, выполните следующие действия.
В Visual Studio откройте Cloud Explorer, разверните Storage Account>Your Storage Account, затем выберите Properties и скопируйте значение строки подключения Primary Connection String.
В проекте откройте файл local.settings.json и установите для ключа AzureWebJobsStorage значение скопированной строки подключения.
Повторите предыдущий шаг, чтобы добавить уникальные ключи в массив Values для всех других подключений, которые необходимы для функций.
Подробнее см. в разделе Файл локальных параметров.
Локальная отладка функций
Для отладки функций нажмите клавишу F5. Если основные инструменты недоступны, вам будет предложено установить его. После установки и последующего запуска Core Tools результат отображается в окне терминала. Это равносильно запуску команды Core Tools из терминала, но с дополнительными задачами сборки и подключенным отладчиком.
При запуске проекта можно использовать функцию Execute Function Now... функция расширения для активации функций, как и при развертывании проекта в #REF!. При выполнении проекта в режиме отладки точки останова находятся в Visual Studio Code, как и ожидалось.
В палитре команд введите Функции Azure: выполните функцию и выберите Local project.
Выберите из списка функцию, которую нужно выполнить, и введите текст сообщения запроса в поле Enter request body (Введите текст запроса). Нажмите клавишу ВВОД, чтобы отправить это сообщение запроса в вашу функцию. Текст, заданный по умолчанию в поле Enter request body (Введите текст запроса), должен указывать требуемый формат текста. Если ваше функциональное приложение не содержит функций, отобразится уведомление с этой ошибкой.
Когда функция выполняется локально и после получения ответа, в Visual Studio Code возникает уведомление. Сведения о выполнении функции отображаются на панели Терминал.
Ключи не требуются при локальном запуске. Это правило применяется как к ключам функций, так и к ключам уровня администратора.
Работа с параметрами приложения локально
Когда приложение-функция работает в #REF!, параметры, необходимые вашим функциям, хранятся в параметрах приложения. Во время локальной разработки эти параметры добавляются в коллекцию вместо этого в файлеlocal.settings.json. Файл local.settings.json также сохраняет параметры, используемые локальными средствами разработки.
Элементы в коллекции Values в файле local.settings.json предназначены для отражения элементов в параметрах приложения функции в #REF!.
По умолчанию эти параметры не переносятся автоматически при публикации проекта в #REF!. После завершения публикации можно выбрать опубликование параметров из файла local.settings.json в ваше приложение функции в #REF!. Дополнительные сведения см. в разделе "Публикация параметров приложения".
Значения ConnectionStrings никогда не публикуются.
- Изолированный процесс
- В процессе
Код может считывать значения параметров приложения-функции в виде переменных среды. Дополнительную информацию см. в разделе Переменные среды.
- Код может считывать значения параметров приложения-функции в виде переменных среды. Дополнительную информацию см. в разделе Переменные среды.
- Код может считывать значения параметров приложения-функции в виде переменных среды. Дополнительную информацию см. в разделе Переменные среды.
- Код может считывать значения параметров приложения-функции в виде переменных среды. Дополнительную информацию см. в разделе Переменные среды.
- Код может считывать значения параметров приложения-функции в виде переменных среды. Дополнительную информацию см. в разделе Переменные среды.
Параметры приложения в #REF!
Параметры в файле local.settings.json проекта должны соответствовать параметрам приложения в приложении-функции в #REF!. В #REF! необходимо добавить все новые параметры как в local.settings.json, так и в приложение-функцию. Эти параметры не отправляются автоматически при публикации проекта. Аналогичным образом необходимо скачать все параметры, создаваемые в приложении-функции на портале, в локальный проект.
Публикация параметров приложения
Самый простой способ опубликовать необходимые параметры в приложении-функции в #REF! — использовать ссылку Upload settings, которая отображается после публикации проекта:
Снимок экрана: отправка параметров приложения.
Параметры также можно опубликовать, воспользовавшись командой Функции Azure: загрузить локальные настройки в палитре команд. Отдельные параметры можно добавить в параметры приложения в #REF! с помощью команды Функции Azure. Добавление нового параметра.
Совет
Не забудьте сохранить файл local.settings.json, прежде чем публиковать его.
Если локальный файл зашифрован, процесс расшифровывает его, публикует его и шифрует его снова. Если конфликтующие значения существуют в двух расположениях, вам будет предложено выбрать способ продолжения.
Просмотрите существующие параметры приложения в разделе #REF!: Функции, раскрыв подписку, приложение-функцию и Параметры приложения.
Скачивание параметров из #REF!
Если вы создаете параметры приложения в #REF!, их можно скачать в файл local.settings.json с помощью команды Функции Azure: скачать удаленные параметры.
Как и при отправке, если локальный файл зашифрован, процесс расшифровывает его, обновляет его и шифрует его снова. Если конфликтующие значения существуют в двух расположениях, вам будет предложено выбрать способ продолжения.
Установка расширений привязки
За исключением HTTP-триггеров и таймерных триггеров, привязки реализованы в виде пакетов расширений.
Необходимо явно установить пакеты расширений для триггеров и привязок, необходимых им. Установленный пакет зависит от модели процесса проекта.
- Изолированный процесс
- В процессе
Выполните команду dotnet add package в окне терминала, чтобы установить пакеты расширений, необходимые в проекте. В этом шаблоне показано, как добавить привязку для библиотеки классов изолированного процесса:
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.<BINDING_TYPE_NAME> --version <TARGET_VERSION>
Замените на имя пакета с необходимой привязкой. Справочную статью по нужной вам привязке см. в списке поддерживаемых привязок.
Замените в этом примере определенной версией пакета, например . Допустимые версии перечислены на отдельных страницах пакетов 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 передает данные журнала в консоль терминала. Вы также можете получить данные журнала при запуске проекта "Функции" в приложении-функции в #REF!. Вы можете подключиться к журналам потоковой передачи в #REF!, чтобы просмотреть данные журнала практически в реальном времени. Вы должны включить Application Insights для более полного понимания поведения приложения-функции.
Логи потоковой передачи.
При разработке приложения зачастую бывает полезно наблюдать данные из журналов практически в реальном времени. Вы можете просмотреть поток файлов журналов, созданных вашими функциями. Включите журналы через командную палитру с помощью команды Функции Azure: Start streaming logs. Этот вывод — пример того, как может выглядеть поток журналов при запросе к функции, активируемой HTTP-запросом:
Снимок экрана потокового вывода журналов для HTTP-триггера.
Дополнительные сведения см. в разделе "Журналы потоковой передачи".
Application Insights
Следует мониторить выполнение функций путем интеграции приложения-функций с Application Insights. При создании приложения-функции на портале #REF! эта интеграция выполняется по умолчанию. При создании функционального приложения в процессе публикации через Visual Studio, вы должны самостоятельно интегрировать Application Insights. О том, как это сделать, см. в разделе "Включение интеграции с Application Insights".
Дополнительные сведения о мониторинге с помощью Application Insights см. в статье Monitor Функции Azure.
Проекты на языке сценариев C#
По умолчанию все проекты на языке C# создаются как проекты компилируемых библиотек классов C#. Если вы предпочитаете работать с проектами скриптов C# вместо этого, необходимо выбрать сценарий C# в качестве языка по умолчанию в параметрах расширения Функции Azure:
Выберите File (Файл) Preferences (Настройки) Settings (Параметры).
Перейдите к параметру User Settings>Extensions>Функции Azure.
Выберите C#Script из функции #REF!: язык проекта.
После выполнения этих шагов вызовы к Core Tools будут выполняться с параметром , который генерирует и публикует файлы проекта на языке сценариев C# (.csx). При указании этого языка по умолчанию, все создаваемые вами проекты будут по умолчанию проектами скриптов на языке C#. Когда установлен язык по умолчанию, выбрать язык проекта не предлагается. Для создания проектов на других языках необходимо изменить этот параметр или удалить его из пользовательского файла settings.json. Когда вы удалите этот параметр, запрос на выбор языка снова будет появляться при создании проекта.
Справочник по палитре команд
Расширение Функции Azure предоставляет полезный графический интерфейс для взаимодействия с приложениями-функциями в #REF!. Те же функциональные возможности доступны и в виде команд в палитре команд (клавиша F1). Доступны следующие команды Функции Azure:
| команда Функции Azure | Описание |
|---|---|
| Add New Settings (Добавить новый параметр) | Создает новый параметр приложения в #REF!. Дополнительные сведения см. в разделе "Публикация параметров приложения". Вам также может потребоваться скачать этот параметр и включить его в набор локальных параметров. |
| Configure Deployment Source (Настройка источника развертывания) | Подключает приложение-функцию в #REF! к локальному репозиторию Git. Дополнительные сведения см. в статье Континестное развертывание Функции Azure. |
| Connect to #REF! Repository | Подключает приложение-функцию к репозиторию #REF!. |
| Copy Function URL (Копировать URL-адрес функции) | Возвращает URL удалённой функции, активируемой HTTP и выполняемой в #REF!. Дополнительные сведения см. в разделе "Получение URL-адреса развернутой функции". |
| Создать функциональное приложение в #REF! | Создает новое приложение-функцию в подписке в #REF!. Дополнительные сведения см. в разделе о том, как опубликовать в новом приложении функций в #REF!. |
| Decrypt Settings (Расшифровать параметры) | Расшифровывает локальные параметры, зашифрованные командой Функции Azure: Encrypt Settings. |
| Delete Function App (Удалить приложение-функцию) | Удаляет функциональное приложение из подписки в #REF!. Если в плане службы приложений нет других приложений, вы также можете удалить этот план. Другие ресурсы, например учетные записи хранения и группы ресурсов, не удаляются. Чтобы удалить все ресурсы, следует вместо этого удалить группу ресурсов. Ваш локальный проект не будет затронут. |
| Delete Function (Удалить функцию) | Удаляет существующую функцию из приложения-функции в #REF!. Поскольку такое удаление не затрагивает локальный проект, вместо этого рекомендуется удалить функцию локально, а затем повторно опубликовать проект. |
| Delete Proxy (Удалить прокси-сервер) | Удаляет прокси-сервер Функции Azure из приложения-функции в #REF!. Дополнительные сведения о прокси-серверах см. в разделе Работа с прокси для Функции Azure. |
| Delete Setting (Удалить параметр) | Удаляет параметр приложения-функции в #REF!. Это удаление не влияет на параметры в файле local.settings.json. |
| Disconnect from Repo (Отключить от репозитория) | Удаляет непрерывное развертывание связь между приложением-функцией в #REF! и репозиторием системы контроля версий. |
| Download Remote Settings (Загрузить удаленные параметры) | Загружает параметры из выбранного приложения-функции в #REF! в файл local.settings.json. Если локальный файл зашифрован, он расшифровывается, обновляется, а затем шифруется снова. Если значения каких-то параметров в двух расположениях конфликтуют, вам будет предложено выбрать, как поступить. Перед выполнением этой команды не забудьте сохранить изменения в файле local.settings.json. |
| Edit settings (Изменить параметры) | Изменяет значение существующего параметра приложения-функции в #REF!. Эта команда не влияет на параметры в файле local.settings.json. |
| Encrypt settings (Зашифровать параметры) | Шифрует отдельные элементы в массиве файла локальных параметров. В этом файле также задано как , что указывает, что локальная среда выполнения расшифровывает настройки перед их использованием. Зашифруйте локальные параметры, чтобы снизить риск утечки ценных сведений. В #REF! параметры приложения всегда хранятся в зашифрованном виде. |
| Execute Function Now (Выполнить функцию) | Вручную запускает функцию с помощью API администрирования. Используйте эту команду для тестирования как локально во время отладки, так и для функций, выполняемых в #REF!. При запуске функции в #REF! расширение сначала получает ключ администратора, который используется для вызова API удаленного администратора, запускающих функции в #REF!. Текст сообщения, отправляемого в API, зависит от типа триггера. Таймерные триггеры не требуют передавать какие-либо данные. |
| Initialize Project for Use with VS Code (Инициализировать проект для использования с VS Code) | Добавляет файлы проекта Visual Studio Code, необходимые для существующего проекта Functions. Используйте эту команду для работы с проектом, созданным с помощью Core Tools. |
| Установите или обновите Функции Azure Core Tools | Устанавливает или обновляет Функции Azure Core Tools, которая используется для локального запуска функций. |
| Повторное развертывание | Позволяет повторно развернуть файлы проекта из подключенного репозитория Git в определенное развертывание в #REF!. Чтобы повторно опубликовать локальные обновления из Visual Studio Code, повторно опубликуйте проект. |
| Rename Settings (Переименовать параметры) | Изменяет имя ключа существующего параметра приложения-функции в #REF!. Эта команда не влияет на параметры в файле local.settings.json. После переименования параметров в #REF! необходимо загрузить эти изменения в локальный проект. |
| Перезапуск | Перезапуск приложения-функции в #REF!. При развертывании обновлений приложение-функция также перезапускается. |
| Set AzureWebJobsStorage (Установить параметр AzureWebJobsStorage) | Устанавливает значение параметра приложения . Этот параметр требуется для Функции Azure. Он устанавливается при создании приложения-функции в #REF!. |
| Начало | Запускает остановленное функциональное приложение в #REF!. |
| Запуск журналов потоковой передачи | Запускает потоковую передачу журналов для функционального приложения в #REF!. Используйте журналы потоковой передачи во время удаленного устранения неполадок в #REF!, если вам нужно просмотреть сведения о ведении журнала практически в реальном времени. Дополнительные сведения см. в разделе "Журналы потоковой передачи". |
| Остановить | Останавливает приложение-функцию, работающее в #REF!. |
| Stop Streaming Logs (Остановить потоковую передачу журналов) | Останавливает журналы потоковой передачи для приложения-функции в #REF!. |
| Toggle as Slot Setting (Переключить как настройку слота) | Если этот параметр включен, обеспечивает сохранение параметра приложения для заданного слота развертывания. |
| Uninstall Функции Azure Core Tools | Удаляет Функции Azure Core Tools, которые требуются для расширения. |
| Upload Local Settings (Отправить локальные параметры) | Загружает настройки из файла local.settings.json в выбранное функциональное приложение в #REF!. Если локальный файл зашифрован, он расшифровывается, загружается и шифруется снова. Если значения каких-то параметров в двух расположениях конфликтуют, вам будет предложено выбрать, как поступить. Перед выполнением этой команды не забудьте сохранить изменения в файле local.settings.json. |
| Просмотреть коммит в #REF! | Показывает последний коммит в конкретном развертывании, когда ваше функциональное приложение подключено к репозиторию. |
| View Deployment Logs (Просмотр журналов развертывания) | Отображает журналы для конкретного развертывания в функциональном приложении в #REF!. |
Следующие шаги
Дополнительные сведения о Функции Azure Core Tools см. в разделе Работа с Функции Azure Core Tools.
Дополнительные сведения о разработке функций в виде библиотек классов .NET см. в справочнике по разработчику Функции Azure C#. В этой статье также приведены ссылки на примеры использования атрибутов для объявления различных типов привязок, поддерживаемых Функции Azure.