Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Используйте Visual Studio Code для создания функции, которая отвечает на HTTP-запросы из шаблона. Используйте GitHub Copilot, чтобы улучшить созданный код функции, проверить обновления кода локально, а затем развернуть его в бессерверном плане размещения Flex Consumption в Azure Functions.
Используйте Visual Studio Code для создания пользовательского обработчика, который отвечает на HTTP-запросы. После локальной проверки кода вы развернете его в бессерверном плане размещения Flex Consumption в Azure Functions.
Пользовательские обработчики можно использовать для создания функций на любом языке и в любой среде выполнения, выполняя серверный процесс HTTP. Эта статья поддерживает как Go, так и Rust.
Завершение этого краткого руководства будет стоить всего несколько центов в долларах США или даже меньше на вашем счете в Azure.
Выберите предпочитаемый язык разработки в верхней части статьи.
Предпосылки
Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
Visual Studio Code на одной из поддерживаемых платформ.
Расширение Azure Functions для Visual Studio Code.
Пакет средств разработки Java версии 8, 11, 17 или 21 (только для Linux).
Apache Maven 3.0 или более поздней версии.
Пакет расширения Java
-
Node.js 18.x или более поздней версии. Используйте команду
node --version, чтобы проверить установленную версию.
Версии Python поддерживаются Azure Functions. Дополнительные сведения см. в статье How to install Python.
Расширение Python для Visual Studio Code.
Установка или обновление основных средств
Расширение Azure Functions для Visual Studio Code интегрируется с Azure Functions core Tools, чтобы вы могли выполнять и отлаживать функции локально в Visual Studio Code с помощью среды выполнения Azure Functions. Прежде чем приступить к работе, рекомендуется установить Core Tools локально или обновить существующую установку, чтобы использовать последнюю версию.
В Visual Studio Code выберите F1, чтобы открыть палитру команд, а затем выполните поиск и выполните команду Azure Functions: Установка или обновление основных инструментов.
Эта команда пытается запустить установку на основе пакета последней версии Core Tools или обновить существующую установку на основе пакетов. Если на локальном компьютере не установлено npm или Homebrew, необходимо вручную установить или обновить основные средства.
Создание локального проекта
В этом разделе вы используете Visual Studio Code для создания локального проекта Azure Functions на предпочитаемом языке. Далее в статье вы обновляете, запустите и опубликуете код функции в Azure.
В Visual Studio Code нажмите клавишу F1, чтобы открыть палитру команд. Найдите и выполните команду
Azure Functions: Create New Project....Выберите расположение каталога для рабочей области проекта и нажмите кнопку Выбрать. Нужно либо создать новую папку, либо выбрать пустую папку для рабочей области проекта. Не выбирайте папку проекта, которая является частью рабочей области.
Введите следующие сведения в соответствии с запросами.
Подсказка Отбор Выбор языка Выберите C#.Select a .NET runtime Выберите .NET 8.0 LTS.Выбор шаблона для первой функции проекта Выберите HTTP trigger.Укажите имя функции Введите HttpExample.Укажите пространство имен Введите My.Functions.Уровень авторизации Выберите Function, для которого требуется ключ доступа для вызова конечной точки функции. Для получения дополнительной информации см. Уровень авторизации.Выбор способа открытия проекта Выберите Open in current window.Подсказка Отбор Выбор языка Выберите Java.Выберите версию Java Выберите Java 8,Java 11,Java 17илиJava 21, версия Java, в которой выполняются функции в Azure. Выберите Java версию, проверенную локально.Укажите идентификатор группы Выберите com.function.Укажите идентификатор артефакта Выберите myFunction.Укажите версию Выберите 1.0-SNAPSHOT.Укажите имя пакета Выберите com.function.Укажите имя приложения Выберите myFunction-12345.Выбор шаблона для первой функции проекта Выберите HTTP trigger.Выберите инструмент сборки для проекта Java Выберите Maven.Выбор способа открытия проекта Выберите Open in current window.Подсказка Отбор Выбор языка Выберите JavaScript.Выбор модели программирования JavaScript Выберите Model V4.Выбор шаблона для первой функции проекта Выберите HTTP trigger.Укажите имя функции Введите HttpExample.Уровень авторизации Выберите Function, для которого требуется ключ доступа для вызова конечной точки функции. Для получения дополнительной информации см. Уровень авторизации.Выбор способа открытия проекта Выберите Open in current window.Подсказка Отбор Выбор языка Выберите TypeScript.Выбор модели программирования JavaScript Выберите Model V4.Выбор шаблона для первой функции проекта Выберите HTTP trigger.Укажите имя функции Введите HttpExample.Уровень авторизации Выберите Function, для которого требуется ключ доступа для вызова конечной точки функции. Для получения дополнительной информации см. Уровень авторизации.Выбор способа открытия проекта Выберите Open in current window.Подсказка Отбор Выбор языка Выберите Python.Выберите интерпретатор Python для создания виртуальной среды Выберите предпочтительный Python интерпретатор. Если параметр не отображается, введите полный путь к Python двоичному файлу. Выбор шаблона для первой функции проекта Выберите HTTP trigger.Имя создаваемой функции Введите HttpExample.Уровень авторизации Выберите FUNCTION, для которого требуется ключ доступа для вызова конечной точки функции. Для получения дополнительной информации см. Уровень авторизации.Выбор способа открытия проекта Выберите Open in current window.Подсказка Отбор Выбор язык для проекта приложения-функции Выберите PowerShell.Выбор шаблона для первой функции проекта Выберите HTTP trigger.Укажите имя функции Введите HttpExample.Уровень авторизации Выберите Function, для которого требуется ключ доступа для вызова конечной точки функции. Для получения дополнительной информации см. Уровень авторизации.Выбор способа открытия проекта Выберите Open in current window.Подсказка Отбор Выбор язык для проекта приложения-функции Выберите Custom Handler.Выбор шаблона для первой функции проекта Выберите HTTP trigger.Укажите имя функции Введите HttpExample.Уровень авторизации Выберите Function, для которого требуется ключ доступа для вызова конечной точки функции. Для получения дополнительной информации см. Уровень авторизации.Выбор способа открытия проекта Выберите Open in current window.Используя эти сведения, Visual Studio Code создает проект кода для Azure Functions с конечной точкой функции триггера HTTP. Файлы локального проекта можно просмотреть в Explorer. Дополнительные сведения см. в разделе Generated project files (Созданные файлы проекта).
В файле local.settings.json обновите
AzureWebJobsStorageпараметр, как показано в следующем примере:"AzureWebJobsStorage": "UseDevelopmentStorage=true",Этот параметр указывает узлу локальных функций использовать эмулятор хранилища для подключения к хранилищу, необходимого для модели Python версии 2. При публикации проекта в Azure этот параметр использует учетную запись хранения по умолчанию. Если вы используете учетную запись для хранения данных Azure во время локальной разработки, задайте строку подключения вашей учетной записи здесь.
Запуск эмулятора
В Visual Studio Code нажмите клавишу F1, чтобы открыть палитру команд. В палитре команд найдите и выберите
Azurite: Start.Проверьте нижнюю панель и убедитесь, что службы эмуляции Azurite запущены. Если это так, теперь вы можете запустить функцию локально.
Создание и сборка функции
Файл function.json в папке HttpExample объявляет функцию для триггера HTTP. Чтобы реализовать эту функцию, вам нужно добавить к ней обработчик и скомпилировать исполняемый файл.
Нажмите клавиши CTRL+N (или CMD+N в macOS), чтобы создать новый файл. Сохраните его с именем handler.go в корневой папке приложения-функции (где расположен файл host.json).
Добавьте в файл handler.go следующий код и сохраните его. Это и есть ваш пользовательский обработчик Go.
package main import ( "fmt" "log" "net/http" "os" ) func helloHandler(w http.ResponseWriter, r *http.Request) { message := "This HTTP triggered function executed successfully. Pass a name in the query string for a personalized response.\n" name := r.URL.Query().Get("name") if name != "" { message = fmt.Sprintf("Hello, %s. This HTTP triggered function executed successfully.\n", name) } fmt.Fprint(w, message) } func main() { listenAddr := ":8080" if val, ok := os.LookupEnv("FUNCTIONS_CUSTOMHANDLER_PORT"); ok { listenAddr = ":" + val } http.HandleFunc("/api/HttpExample", helloHandler) log.Printf("About to listen on %s. Go to https://127.0.0.1%s/", listenAddr, listenAddr) log.Fatal(http.ListenAndServe(listenAddr, nil)) }Нажмите клавиши CTRL+SHIFT+' или выберите команду New Terminal (Создать терминал) в меню Terminal (Терминал), чтобы открыть новый встроенный терминал VS Code.
Скомпилируйте этот пользовательский обработчик с помощью следующей команды. Исполняемый файл с именем
handler(handler.exeв Windows) выводится в корневой папке приложения-функции.go build handler.go
Настройка приложения-функции
Для запуска двоичного файла пользовательского обработчика необходимо настроить хост функции.
Откройте файл host.json.
В разделе
customHandler.descriptionзадайте дляdefaultExecutablePathзначениеhandler(в Windows задайте значениеhandler.exe).В разделе
customHandlerдобавьте свойство с именемenableForwardingHttpRequestи задайте для него значениеtrue. Для функций, состоящих только из триггера HTTP, эта настройка упрощает программирование, позволяя работать с типичным HTTP-запросом вместо полезной нагрузки пользовательского обработчика запросов.Убедитесь, что раздел
customHandlerпохож на представленный здесь пример. Сохраните файл."customHandler": { "description": { "defaultExecutablePath": "handler", "workingDirectory": "", "arguments": [] }, "enableForwardingHttpRequest": true }
Приложение функции настроено для запуска исполняемого файла пользовательского обработчика.
Локальное выполнение функции
Visual Studio Code интегрируется с основными средствами Azure Functions, позволяя запускать этот проект на локальном компьютере для разработки перед публикацией в Azure.
Чтобы запустить функцию локально, нажмите клавишу F5 или значок запуска и отладки на панели действий слева. На панели Терминал отобразятся выходные данные из Core Tools. Ваше приложение запускается в панели Терминал. Отобразится URL-адрес конечной точки активируемой HTTP-запросом функции, которая выполняется локально.
Если у вас возникли проблемы с Windows, убедитесь, что для терминала по умолчанию для Visual Studio Code не задано значение WSL Bash.
Если основные инструменты по-прежнему работают в Terminal, выберите значок Azure на панели действий. В области Рабочая область разверните Локальный проект>Функции. Щелкните правой кнопкой мыши (Windows) или Ctrl - щелкните (macOS) новую функцию и выберите Выполнить функцию сейчас....
В Enter request body указано значение тела сообщения запроса
{ "name": "Azure" }. Нажмите клавишу ВВОД, чтобы отправить это сообщение запроса в вашу функцию.Когда функция выполняется локально и возвращает ответ, уведомление создается в Visual Studio Code. Сведения о выполнении функции отображаются на панели Терминал.
Откройте панель терминала и нажмите клавиши CTRL+C, чтобы остановить основные инструменты и отключить отладчик.
Убедившись, что функция работает правильно на локальном компьютере, вы можете дополнительно использовать средства ИИ, такие как GitHub Copilot в Visual Studio Code, для обновления кода функции, созданного шаблоном.
Использование ИИ для нормализации и проверки входных данных
В этом примере подсказки для Copilot Chat обновляется существующий код функции, чтобы извлечь параметры либо из строки запроса, либо из тела JSON. Он применяет форматирование или преобразование типов и возвращает параметры в формате JSON в ответе.
Modify the function to accept name, email, and age from the JSON body of the
request. If any of these parameters are missing from the query string, read
them from the JSON body. Return all three parameters in the JSON response,
applying these rules:
Title-case the name
Lowercase the email
Convert age to an integer if possible, otherwise return "not provided"
Use sensible defaults if any parameter is missing
Make sure that any added packages are compatible with the version of the packages already in the project
Modify the function to accept name, email, and age from the JSON body of the
request. If any of these parameters are missing from the query string, read
them from the JSON body. Return all three parameters in the JSON response,
applying these rules:
Title-case the name
Lowercase the email
Convert age to an integer if possible, otherwise return "not provided"
Use sensible defaults if any parameter is missing
Modify the function to accept name, email, and age from the JSON body of the
request. If any of these parameters are missing from the query string, read
them from the JSON body. Return all three parameters in the JSON response,
applying these rules:
Title-case the name
Lowercase the email
Convert age to an integer if possible, otherwise return "not provided"
Use sensible defaults if any parameter is missing
Update the FunctionTest.java file to test the new logic.
При необходимости можно настроить запрос на добавление конкретных данных. Затем снова запустите приложение локально и убедитесь, что оно работает должным образом после изменения кода. На этот раз используйте текст сообщения, например:
{ "name": "devon torres", "email": "torres.devon@contoso.com", "age": "34" }
Подсказка
GitHub Copilot работает на базе ИИ, поэтому возможны сюрпризы и ошибки. Если во время выполнения возникают ошибки, вставьте сообщение об ошибке в окне чата, выберите Agent и попросите Copilot устранить эту ошибку. Дополнительные сведения см. в разделе Copilot часто задаваемые вопросы.
При выполнении в режиме агента результаты этой настройки зависят от определенных средств, доступных агенту.
Когда вы удовлетворены приложением, используйте Visual Studio Code для публикации проекта непосредственно в Azure.
Убедившись, что функция работает правильно на локальном компьютере, используйте Visual Studio Code для публикации проекта непосредственно в Azure.
Вход в Azure
Прежде чем создавать Azure ресурсы или публиковать приложение, необходимо войти в Azure.
Если вы еще не вошли, в строке Активность выберите значок Azure. Затем в разделе Resources выберите Sign in to Azure.
Если вы уже выполнили вход и видите существующие подписки, перейдите к следующему разделу. Если у вас еще нет учетной записи Azure, выберите Создать учетную запись Azure. Учащиеся могут выбрать Создать учетную запись Azure для учащихся.
При появлении запроса в браузере выберите учетную запись Azure и войдите с помощью учетных данных учетной записи Azure. Если вы создадите новую учетную запись, вы сможете войти после ее создания.
После успешного входа можно закрыть новое окно браузера. Подписки, принадлежащие вашей учетной записи Azure, отображаются на боковой панели.
Создание приложения-функции в Azure
В этом разделе описано, как создать приложение-функцию в плане потребления Flex, а также связанные ресурсы в подписке Azure. Многие решения по созданию ресурсов принимаются на основе поведения по умолчанию. Для получения большего контроля над созданными ресурсами необходимо создать приложение-функцию с дополнительными параметрами.
В Visual Studio Code выберите F1, чтобы открыть палитру команд. В командной строке (
>) введите и выберите Azure Functions: создание приложения-функции в Azure.В подсказках укажите следующие сведения:
Подсказка Действие Выбор подписки Выберите используемую подписку Azure. Запрос не отображается, если в разделе "Ресурсы" отображается только одна подписка. Введите новое имя приложения-функции Введите глобально уникальное имя, допустимое в пути URL-адреса. Введенное имя проверяется, чтобы убедиться, что оно уникально в Azure Functions. Выбор расположения для новых ресурсов Выберите регион Azure. Для повышения производительности выберите регион рядом с вами. Отображаются только регионы, поддерживаемые планами потребления Flex. Выберите стек сред выполнения Выберите языковую версию, выполняемую локально. Выбор типа проверки подлинности ресурса Выберите управляемое удостоверение, которое является наиболее безопасным вариантом подключения к учетной записи хранения узла по умолчанию. На панели Azure: журнал действий расширение Azure отображает состояние отдельных ресурсов при создании в Azure.
При создании приложения-функции в подписке Azure создаются следующие связанные ресурсы. Ресурсы именуются на основе имени, введенного для функционального приложения.
- группу ресурсов — логический контейнер связанных ресурсов;
- Приложение-функция, которое предоставляет окружение для выполнения кода вашей функции. Приложение-функция позволяет группировать функции в логические единицы и упростить развертывание, масштабирование и совместное использование ресурсов, а также управление ими в рамках единого плана размещения.
- План Azure App Service, определяющий базовый узел для приложения-функции.
- Стандартная учетная запись Azure Storage, которая используется узлом функций для поддержания состояния и других сведений о приложении-функции.
- Экземпляр Application Insights, подключенный к функциональному приложению, который отслеживает использование функций в приложении.
- Управляемое удостоверение, назначенное пользователем, которое добавляется в роль участника данных объектного хранилища Blob в новой учетной записи хранилища узла по умолчанию.
После создания приложения-функции и применения пакета развертывания отобразится уведомление.
Подсказка
По умолчанию ресурсы Azure, необходимые для вашего функционального приложения, создаются на основе имени, введенного для вашего функционального приложения. По умолчанию ресурсы создаются вместе с функцией приложения в той же новой группе ресурсов. Если вы хотите настроить имена связанных ресурсов или повторно использовать существующие ресурсы, опубликуйте проект с дополнительными параметрами создания.
Компиляция пользовательского обработчика для Azure
В этом разделе вы собираете проект для развертывания в Azure в функциональном приложении, работающем на Linux. В большинстве случаев необходимо перекомпилировать двоичный файл и настроить конфигурацию, чтобы она соответствовала целевой платформе, прежде чем публиковать ее в Azure.
Развертывание проекта в Azure
Это важно
Развертывание в существующем приложении-функции всегда перезаписывает содержимое этого приложения в Azure.
В палитре команд введите и выберите Azure Functions: развертывание в приложении-функции.
Выберите только что созданное функциональное приложение. При появлении запроса на перезапись предыдущих развертываний выберите «Развернуть», чтобы развернуть функциональный код в новом ресурсе функционального приложения.
После завершения развертывания выберите View Output для просмотра результатов создания и развертывания, включая созданные ресурсы Azure. Если вы пропустили уведомление, выберите значок колокольчика в правом нижнем углу, чтобы увидеть его снова.
Запустите функцию в Azure
Нажмите клавишу F1, чтобы отобразить палитру команд, а затем выполните поиск и выполните команду
Azure Functions:Execute Function Now.... Если появится запрос, выберите подписку.Выберите новый ресурс функционального приложения и
HttpExampleв качестве функции.Введите тело запроса в , затем введите
{ "name": "Contoso", "email": "me@contoso.com", "age": "34" }, а затем нажмите клавишу Enter, чтобы отправить это сообщение в вашу функцию.Когда функция выполняется в Azure, ответ отображается в области уведомлений. Разверните уведомление, чтобы просмотреть полный ответ.
Устранение неполадок
Используйте следующую таблицу, чтобы устранить наиболее распространенные проблемы, возникающие при использовании этой статьи.
| Проблема | Решение |
|---|---|
| Не удается создать локальный функциональный проект? | Убедитесь, что у вас установлено расширение Azure Functions. |
| Не удается запустить функцию локально? | Убедитесь, что установлена последняя версия Azure Functions Core Tools. При запуске в Windows убедитесь, что оболочка терминала по умолчанию для Visual Studio Code не задана для WSL Bash. |
| Не удается развернуть функцию в Azure? | Проверьте выходные данные на наличие сведений об ошибке. Выходные данные также можно просмотреть, щелкнув значок колокольчика в правом нижнем углу. Вы публиковали в существующем функциональном приложении? Это действие перезаписывает содержимое этого приложения в Azure. |
| Не удалось запустить облачное приложение-функцию? | Не забудьте использовать строку запроса для передачи параметров или использовать тело запроса для пользовательских обработчиков. |
Очистите ресурсы
При переходе к следующему шагу и добавлению привязки очереди Azure Storage в вашу функцию, вам потребуется сохранить все ресурсы, чтобы развивать уже сделанное.
В противном случае выполните следующие действия, чтобы удалить приложение-функцию и связанные с ним ресурсы и избежать дополнительных расходов.
- В Visual Studio Code щелкните значок Azure, чтобы открыть обозреватель Azure.
- В разделе "Группы ресурсов" найдите группу ресурсов.
- Щелкните группу ресурсов правой кнопкой мыши и выберите Удалить.
Дополнительные сведения о затратах на использование Функций см. в статье Estimating Consumption plan costs (Оценка затрат на план потребления).
Дальнейшие шаги
Вы использовали Visual Studio Code для создания приложения-функции с простой функцией с триггером HTTP. В следующих статьях вы расширяете эту функцию, подключаясь к Azure Cosmos DB или Azure Storage. Для получения дополнительной информации о подключении к другим службам Azure см. в разделе Добавление привязок к существующей функции в Azure Functions. Дополнительные сведения о безопасности см. в статье Securing Azure Functions.
Azure Functions пользовательские обработчики