Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Используйте Visual Studio Code для создания функции, которая отвечает на HTTP-запросы из шаблона. Используйте #REF! Copilot, чтобы улучшить созданный код функции, проверить обновления кода локально, а затем развернуть его в бессерверном плане размещения Flex Consumption в Функции Azure.
Используйте Visual Studio Code для создания настраиваемого обработчика, который отвечает на HTTP-запросы. После локальной проверки кода вы развернете его в бессерверном плане размещения Flex Consumption в Функции Azure.
Пользовательские обработчики можно использовать для создания функций на любом языке и в любой среде выполнения, выполняя серверный процесс HTTP. Эта статья поддерживает как Go, так и Rust.
Выполнение этого краткого руководства повлечет за собой небольшую стоимость нескольких центов в долларах США или меньше в вашей учетной записи #REF!.
Выберите предпочитаемый язык разработки в верхней части статьи.
Предпосылки
Учетная запись #REF! с активной подпиской. Создайте учетную запись бесплатно .
Visual Studio Code на одной из поддерживаемых платформ.
Расширение Функции Azure для Visual Studio Code.
- Node.js 18.x или более поздней версии. Используйте команду , чтобы проверить установленную версию.
PowerShell 7.2
Расширение PowerShell для Visual Studio Code.
Поддерживаемые Функции Azure версии Python. Дополнительные сведения см. в статье How to install Python.
Расширение Python для Visual Studio Code.
- Вперед
- Rust
- Go, рекомендуется использовать последнюю версию. Используйте команду , чтобы проверить установленную версию.
Установка или обновление основных средств
Расширение Функции Azure для Visual Studio Code интегрируется с Функции Azure core Tools, чтобы вы могли выполнять и отлаживать функции локально в Visual Studio Code с помощью среды выполнения Функции Azure. Прежде чем приступить к работе, рекомендуется установить Core Tools локально или обновить существующую установку, чтобы использовать последнюю версию.
В Visual Studio Code выберите F1, чтобы открыть палитру команд, а затем выполните поиск и выполните команду Функции Azure: Установка или обновление основных инструментов.
Эта команда пытается запустить установку на основе пакета последней версии Core Tools или обновить существующую установку на основе пакетов. Если на локальном компьютере не установлено npm или Homebrew, необходимо вручную установить или обновить основные средства.
Создание локального проекта
В этом разделе вы используете Visual Studio Code для создания локального проекта Функции Azure на предпочитаемом языке. Далее в статье вы обновляете, запускаете и затем публикуете код функции в #REF!.
В Visual Studio Code нажмите клавишу F1, чтобы открыть палитру команд. Выполните поиск и выполните команду
Функции Azure: Create New Project....Выберите расположение каталога для рабочей области проекта и нажмите кнопку Выбрать. Нужно либо создать новую папку, либо выбрать пустую папку для рабочей области проекта. Не выбирайте папку проекта, которая является частью рабочей области.
Введите следующие сведения в соответствии с запросами.
Подсказка Отбор Выбор языка Выберите . Select a .NET runtime Выберите .NET 8.0 LTS.Выбор шаблона для первой функции проекта Выберите . Укажите имя функции Введите . Укажите пространство имен Введите . Уровень авторизации Выберите , для которого требуется ключ доступа для вызова конечной точки функции. Для получения дополнительной информации см. Уровень авторизации. Выбор способа открытия проекта Выберите . Подсказка Отбор Выбор языка Выберите Java.Выберите версию Java Выберите Java 8,Java 11,Java 17илиJava 21, версия Java, в которой выполняются функции в #REF!. Выберите Java версию, проверенную локально.Укажите идентификатор группы Выберите . Укажите идентификатор артефакта Выберите . Укажите версию Выберите . Укажите имя пакета Выберите . Укажите имя приложения Выберите . Выбор шаблона для первой функции проекта Выберите . Выберите средство сборки проекта Java Выберите . Выбор способа открытия проекта Выберите . Подсказка Отбор Выбор языка Выберите . Выбор модели программирования JavaScript Выберите . Выбор шаблона для первой функции проекта Выберите . Укажите имя функции Введите . Уровень авторизации Выберите , для которого требуется ключ доступа для вызова конечной точки функции. Для получения дополнительной информации см. Уровень авторизации. Выбор способа открытия проекта Выберите . Подсказка Отбор Выбор языка Выберите . Выбор модели программирования JavaScript Выберите . Выбор шаблона для первой функции проекта Выберите . Укажите имя функции Введите . Уровень авторизации Выберите , для которого требуется ключ доступа для вызова конечной точки функции. Для получения дополнительной информации см. Уровень авторизации. Выбор способа открытия проекта Выберите . Подсказка Отбор Выбор языка Выберите Python.Выберите интерпретатор Python для создания виртуальной среды Выберите предпочтительный Python интерпретатор. Если параметр не отображается, введите полный путь к Python двоичному файлу. Выбор шаблона для первой функции проекта Выберите . Имя создаваемой функции Введите . Уровень авторизации Выберите , для которого требуется ключ доступа для вызова конечной точки функции. Для получения дополнительной информации см. Уровень авторизации. Выбор способа открытия проекта Выберите . Подсказка Отбор Выберите язык для функционального проекта Выберите . Выбор шаблона для первой функции проекта Выберите . Укажите имя функции Введите . Уровень авторизации Выберите , для которого требуется ключ доступа для вызова конечной точки функции. Для получения дополнительной информации см. Уровень авторизации. Выбор способа открытия проекта Выберите . Подсказка Отбор Выберите язык для вашего функционального проекта Выберите . Выбор шаблона для первой функции проекта Выберите . Укажите имя функции Введите . Уровень авторизации Выберите , для которого требуется ключ доступа для вызова конечной точки функции. Для получения дополнительной информации см. Уровень авторизации. Выбор способа открытия проекта Выберите . Используя эти сведения, Visual Studio Code создает проект кода для Функции Azure с конечной точкой функции триггера HTTP. Файлы локального проекта можно просмотреть в Explorer. Дополнительные сведения см. в разделе Generated project files (Созданные файлы проекта).
В файле local.settings.json обновите параметр, как показано в следующем примере:
"AzureWebJobsStorage": "UseDevelopmentStorage=true",Этот параметр указывает узлу локальных функций использовать эмулятор хранилища для подключения к хранилищу, необходимого для модели Python версии 2. При публикации проекта в #REF! этот параметр использует учетную запись хранения по умолчанию. Если вы используете учетную запись служба хранилища Azure во время локальной разработки, задайте строку подключения вашей учетной записи хранения.
Запуск эмулятора
В Visual Studio Code нажмите клавишу F1, чтобы открыть палитру команд. В палитре команд найдите и выберите .
Проверьте нижнюю панель и убедитесь, что службы эмуляции Azurite запущены. Если это так, теперь вы можете запустить функцию локально.
Создание и сборка функции
Файл function.json в папке HttpExample объявляет функцию для триггера HTTP. Чтобы реализовать эту функцию, вам нужно добавить к ней обработчик и скомпилировать исполняемый файл.
- Вперед
- Rust
Нажмите клавиши 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в #REF!) выводится в корневой папке приложения-функции.go build handler.go
Настройка приложения-функции
Для запуска двоичного файла пользовательского обработчика необходимо настроить хост функции.
Откройте файл host.json.
В разделе
customHandler.descriptionустановитеdefaultExecutablePathвhandler(в #REF! установите его вhandler.exe).В разделе добавьте свойство с именем и задайте для него значение . Для функций, которые содержат только триггер HTTP, этот параметр упрощает программирование, позволяя работать с обычным HTTP-запросом вместо данных пользовательского обработчика запросов.
Убедитесь, что раздел похож на представленный здесь пример. Сохраните файл.
"customHandler": { "description": { "defaultExecutablePath": "handler", "workingDirectory": "", "arguments": [] }, "enableForwardingHttpRequest": true }
Приложение функции настроено для запуска исполняемого файла пользовательского обработчика.
Локальное выполнение функции
Visual Studio Code интегрируется с Функции Azure Core tools, чтобы вы могли запускать этот проект на локальном рабочем компьютере перед публикацией в #REF!.
Чтобы запустить функцию локально, нажмите клавишу F5 или значок запуска и отладки на панели действий слева. На панели «Терминал» отображаются выходные данные из Core Tools. Ваше приложение запускается в панели Терминал. Отобразится URL-адрес конечной точки активируемой HTTP-запросом функции, которая выполняется локально.
Снимок экрана вывода локальной функции в VS Code.
Если у вас возникли проблемы с #REF!, убедитесь, что для терминала по умолчанию для Visual Studio Code не задано значение WSL Bash.
Если основные инструменты по-прежнему работают в Terminal, выберите значок #REF! на панели действий. В рабочей области разверните Локальные функции проекта. Щелкните правой кнопкой мыши (#REF!) или щелкните с зажатой клавишей Ctrl (macOS) на новой функции и выберите Выполнить функцию сейчас....
В введите тело запроса вы видите значение тела сообщения запроса
{ "name": "#REF!" }. Нажмите клавишу ВВОД, чтобы отправить это сообщение запроса в вашу функцию.Когда функция выполняется локально и возвращает ответ, уведомление создается в Visual Studio Code. Сведения о выполнении функции отображаются на панели Терминал.
Откройте панель терминала и нажмите клавиши CTRL+C, чтобы остановить основные инструменты и отключить отладчик.
Убедившись, что функция работает правильно на локальном компьютере, вы можете дополнительно использовать средства ИИ, такие как #REF! 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" }
Подсказка
#REF! Copilot работает на ИИ, поэтому возможны сюрпризы и ошибки. Если во время выполнения возникают ошибки, вставьте сообщение об ошибке в окне чата, выберите Agent и попросите Copilot устранить эту ошибку. Дополнительные сведения см. в разделе Copilot часто задаваемые вопросы.
При выполнении в режиме агента результаты этой настройки зависят от определенных средств, доступных агенту.
Когда вы удовлетворены приложением, используйте Visual Studio Code для публикации проекта непосредственно в #REF!.
Убедившись, что функция работает правильно на локальном компьютере, используйте Visual Studio Code для публикации проекта непосредственно в #REF!.
Вход в #REF!
Прежде чем создавать #REF! ресурсы или публиковать приложение, необходимо войти в #REF!.
Если вы еще не вошли, в строке Активность выберите значок #REF!. Затем в разделе Resources выберите Sign in to #REF!.
Если вы уже выполнили вход и видите существующие подписки, перейдите к следующему разделу. Если у вас еще нет учетной записи #REF!, выберите Создать учетную запись #REF!. Учащиеся могут выбрать Создать учетную запись #REF! для студентов.
При появлении запроса в браузере выберите учетную запись #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!, необходимые для вашего функционального приложения, создаются на основе имени, которое вы вводите для этого приложения. По умолчанию ресурсы создаются вместе с функцией приложения в той же новой группе ресурсов. Если вы хотите настроить имена связанных ресурсов или повторно использовать существующие ресурсы, опубликуйте проект с дополнительными параметрами создания.
Компиляция пользовательского обработчика для #REF!
В этом разделе вы скомпилируете проект для развертывания в #REF! в функциональном приложении под управлением Linux. В большинстве случаев необходимо перекомпилировать двоичный файл и настроить конфигурацию, чтобы она соответствовала целевой платформе, прежде чем публиковать ее в #REF!.
- Вперед
- Rust
Во встроенном терминале скомпилируйте обработчик для Linux/x64.
- macOS
- Линукс
- #REF!
GOOS=linux GOARCH=amd64 go build handler.go
В корневой папке приложения-функции будет создан двоичный файл с именем .
Развертывание проекта в #REF!
Это важно
Развертывание в существующем функциональном приложении всегда перезаписывает содержимое этого приложения в #REF!.
В палитре команд введите и выберите Функции Azure: развертывание в функциональное приложение.
Выберите только что созданное функциональное приложение. При появлении запроса на перезапись предыдущих развертываний выберите «Развернуть», чтобы развернуть функциональный код в новом ресурсе функционального приложения.
После завершения развертывания выберите View Output для просмотра результатов создания и развертывания, включая созданные ресурсы #REF!. Если вы пропустили уведомление, выберите значок колокольчика в правом нижнем углу, чтобы увидеть его снова.
Снимок экрана с окном "Просмотреть выходные данные".
Запустите функцию в #REF!
Нажмите клавишу F1, чтобы отобразить палитру команд, а затем выполните поиск и выполните команду
Функции Azure:Execute Function Now.... Если появится запрос, выберите подписку.Выберите новый ресурс приложения-функции и выберите его в качестве функции.
Введите тип тела запроса, а затем нажмите клавишу ВВОД, чтобы отправить это сообщение вашей функции.
Когда функция выполняется в #REF!, ответ отображается в области уведомлений. Разверните уведомление, чтобы просмотреть полный ответ.
Устранение неполадок
Используйте следующую таблицу, чтобы устранить наиболее распространенные проблемы, возникающие при использовании этой статьи.
| Проблема | Решение |
|---|---|
| Не удается создать локальный функциональный проект? | Убедитесь, что у вас установлено расширение Функции Azure. |
| Не удается запустить функцию локально? | Убедитесь, что установлена последняя версия Функции Azure Core Tools. При запуске в #REF! убедитесь, что оболочка терминала по умолчанию для Visual Studio Code не задана для WSL Bash. |
| Не удается развернуть функцию в #REF!? | Проверьте выходные данные на наличие сведений об ошибке. Выходные данные также можно просмотреть, щелкнув значок колокольчика в правом нижнем углу. Вы публиковали в существующем функциональном приложении? Это действие перезаписывает содержимое этого приложения в #REF!. |
| Не удалось запустить облачное приложение-функцию? | Не забудьте использовать строку запроса для передачи параметров или использовать тело запроса для пользовательских обработчиков. |
Очистите ресурсы
При переходе к следующему шагу и добавлению привязки очереди служба хранилища Azure в функцию, вам потребуется сохранить все ресурсы в наличии, чтобы основываться на уже выполненной работе.
В противном случае выполните следующие действия, чтобы удалить приложение-функцию и связанные с ним ресурсы и избежать дополнительных расходов.
- В Visual Studio Code щелкните значок #REF!, чтобы открыть обозреватель #REF!.
- В разделе "Группы ресурсов" найдите группу ресурсов.
- Щелкните группу ресурсов правой кнопкой мыши и выберите Удалить.
Дополнительные сведения о затратах на использование Функций см. в статье Estimating Consumption plan costs (Оценка затрат на план потребления).
Дальнейшие шаги
Вы использовали Visual Studio Code для создания приложения-функции с простой функцией с триггером HTTP. В следующих статьях вы расширяете эту функцию, подключаясь к Azure Cosmos DB или служба хранилища Azure. Дополнительные сведения о подключении к другим службам #REF! см. в статье Добавление привязок к существующей функции в Функции Azure. Дополнительные сведения о безопасности см. в статье Securing Функции Azure.