Краткое руководство. Создание функции Go или Rust в Azure с помощью Visual Studio Code
Из этой статьи вы узнаете, как с помощью Visual Studio Code создать пользовательский обработчик, который отвечает на HTTP-запросы. После тестирования кода в локальной среде его необходимо развернуть в бессерверной среде Функций Azure.
Пользовательские обработчики можно использовать для создания функций на любом языке и в любой среде выполнения, выполняя серверный процесс HTTP. В этой статье описываются процедуры для Go и Rust.
Выполнение этого краткого руководства предполагает небольшую дополнительную плату в несколько центов США в учетной записи Azure.
Настройка вашей среды
Перед началом работы убедитесь, что выполнены следующие предварительные требования.
Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
Visual Studio Code на одной из поддерживаемых платформ.
Расширение "Функции Azure" для Visual Studio Code.
Go, рекомендуется использовать последнюю версию. Используйте команду
go version
, чтобы проверить установленную версию.
Установка или обновление основных средств
Расширение Функции 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 для пользовательских обработчиков. Далее в этой статье вы опубликуете код функции в Azure.
В Visual Studio Code нажмите клавишу F1 , чтобы открыть палитру команд и выполнить поиск и выполнить команду
Azure Functions: Create New Project...
.Выберите расположение каталога для рабочей области проекта и нажмите кнопку Выбрать. Нужно либо создать новую папку, либо выбрать пустую папку для рабочей области проекта. Не выбирайте папку проекта, которая является частью рабочей области.
Введите следующие сведения по соответствующим запросам:
Prompt Выбор Выбор язык для проекта приложения-функции Выберите Custom Handler
.Выбор шаблона для первой функции проекта Выберите HTTP trigger
.Укажите имя функции Введите HttpExample
.Уровень авторизации выберите Anonymous
, что позволит любому пользователю вызывать конечную точку функции. Дополнительные сведения см . на уровне авторизации.Выбор способа открытия проекта Выберите Open in current window
.Используя эти сведения, Visual Studio Code создает проект функций Azure с триггером HTTP. Файлы локального проекта можно просмотреть в Explorer.
Создание и сборка функции
Файл 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
(илиhandler.exe
в среде Windows).В разделе
customHandler
добавьте свойство с именемenableForwardingHttpRequest
и задайте для него значениеtrue
. Для функций, которые содержат только триггер HTTP, этот параметр упрощает программирование. Он позволяет работать с обычным HTTP-запросом вместо полезных данных пользовательского обработчика запросов.Убедитесь, что раздел
customHandler
похож на представленный здесь пример. Сохраните файл."customHandler": { "description": { "defaultExecutablePath": "handler", "workingDirectory": "", "arguments": [] }, "enableForwardingHttpRequest": true }
Теперь приложение-функция будет запускать исполняемый файл пользовательского обработчика.
Локальное выполнение функции
Этот проект можно запустить на локальном компьютере разработки, прежде чем публиковать его в Azure.
В интегрированном терминале запустите приложение-функцию с помощью Azure Functions Core Tools.
func start
Запустив Core Tools, перейдите по указанному далее URL-адресу, чтобы выполнить запрос GET, который включает строку запроса
?name=Functions
.http://localhost:7071/api/HttpExample?name=Functions
Возвращается ответ, который в браузере выглядит следующим образом:
Сведения о запросе отображаются на панели Терминал.
Чтобы остановить работу Core Tools, нажмите клавиши CTRL+C.
Убедившись, что функция выполняется правильно на локальном компьютере, опубликуйте проект в Azure с помощью Visual Studio Code.
Вход в Azure
Прежде чем создавать ресурсы Azure или публиковать приложение, необходимо войти в Azure.
Если вы еще не вошли, на панели действий выберите значок Azure. Затем в разделе "Ресурсы" выберите вход в Azure.
Если вы уже выполнили вход и видите существующие подписки, перейдите к следующему разделу. Если у вас еще нет учетной записи Azure, выберите "Создать учетную запись Azure". Учащиеся могут выбрать "Создать учетную запись Azure для учащихся".
При появлении запроса в браузере выберите свою учетную запись Azure и войдите с помощью учетных данных учетной записи Azure. Если вы создаете новую учетную запись, вы можете выполнить вход после ее создания.
После успешного входа можно закрыть новое окно браузера. Подписки, принадлежащие вашей учетной записи Azure, отображаются на боковой панели.
Компиляция пользовательского обработчика для Azure
В этом разделе показано, как опубликовать проект в Azure в виде приложения-функции под управлением Linux. В большинстве случаев перед публикацией в Azure вам придется заново компилировать двоичный файл и настраивать конфигурацию для целевой платформы.
Во встроенном терминале скомпилируйте обработчик для Linux/x64. В корневой папке приложения-функции будет создан двоичный файл с именем
handler
.
Создание приложения-функции в Azure
В этом разделе показано, как создать приложение-функцию и связанные ресурсы в подписке Azure.
Щелкните значок Azure на панели действий. Затем в области Ресурсы щелкните значок + и выберите вариант Создать приложение-функцию в Azure.
Введите следующие сведения по соответствующим запросам:
Prompt Выбор Выбор подписки Выберите подписку, которую нужно использовать. Эта подсказка не отобразится, если в области Ресурсы отображается только одна подписка. Ввод глобально уникального имени для приложения-функции Введите имя, допустимое в пути URL-адреса. Имя, которое вы вводите, проверяется, чтобы убедиться, что оно уникально в функциях Azure. Выберите стек сред выполнения Выберите Настраиваемый обработчик. Выбор расположения для новых ресурсов Для повышения производительности выберите регион рядом с вами. Расширение показывает состояние отдельных ресурсов по мере их создания в Azure на панели Azure: журнал действий.
После завершения создания в вашей подписке будут созданы приведенные ниже ресурсы Azure. Имена ресурсов основаны на имени приложения-функции.
- группу ресурсов — логический контейнер связанных ресурсов;
- Учетная запись хранения Azure уровня "Стандартный" для сохранения состояния и других сведений о проектах.
- Приложение-функция, которое предоставляет окружение для выполнения кода вашей функции. Приложение-функция позволяет группировать функции в логические единицы и упростить развертывание, масштабирование и совместное использование ресурсов, а также управление ими в рамках единого плана размещения.
- План службы приложение Azure, определяющий базовый узел приложения-функции.
- Экземпляр Application Insights, подключенный к приложению-функции, и который отслеживает использование функций в приложении.
После создания приложения-функции и применения пакета развертывания отобразится уведомление.
Совет
По умолчанию ресурсы Azure, необходимые приложению-функции, создаются на основе имени, введенного для приложения-функции. По умолчанию ресурсы создаются с приложением-функцией в той же группе ресурсов. Если вы хотите настроить имена связанных ресурсов или повторно использовать существующие ресурсы, опубликуйте проект с дополнительными параметрами создания.
Развертывание проекта в Azure
Внимание
Развертывание в существующем приложении-функции всегда перезаписывает содержимое этого приложения в Azure.
В палитре команд введите и выберите Функции Azure: Развернуть в приложении-функции.
Выберите только что созданное приложение-функцию. При появлении запроса на перезапись предыдущих развертываний выберите "Развернуть ", чтобы развернуть код функции в новом ресурсе приложения-функции.
После завершения развертывания выберите "Просмотреть выходные данные ", чтобы просмотреть результаты создания и развертывания, включая созданные ресурсы Azure. Если вы пропустили уведомление, выберите значок колокольчика в правом нижнем углу, чтобы увидеть его снова.
Запуск функции в Azure
Нажмите клавишу F1 , чтобы отобразить палитру команд, а затем выполните команду
Azure Functions:Execute Function Now...
. Если появится запрос, выберите подписку.Выберите новый ресурс приложения-функции и
HttpExample
в качестве функции.Введите тип
{ "name": "Azure" }
текста запроса, а затем нажмите клавишу ВВОД, чтобы отправить это сообщение в функцию.При выполнении функции в Azure ответ отображается в области уведомлений. Разверните уведомление, чтобы просмотреть полный ответ.
Очистка ресурсов
При переходе к следующему шагу и добавлении привязки очереди службы хранилища Azure к функции, вам потребуется сохранить все ресурсы, чтобы использовать их в будущем.
В противном случае выполните следующие действия, чтобы удалить приложение-функцию и связанные с ним ресурсы и избежать дополнительных расходов.
В Visual Studio Code нажмите клавишу F1, чтобы открыть палитру команд. В палитре команд найдите и щелкните
Azure: Open in portal
.Выберите приложение-функцию и нажмите клавишу ВВОД. Страница приложения-функции откроется на портале Azure.
На вкладке Обзор выберите именованную ссылку рядом с полем Группа ресурсов.
На странице Группа ресурсов просмотрите список включенных ресурсов и убедитесь, что именно их нужно удалить.
Выберите Удалить группу ресурсов и следуйте инструкциям.
Удаление может занять несколько минут. После этого на несколько секунд появится уведомление. Кроме того, можно выбрать значок колокольчика в верхней части страницы, чтобы просмотреть уведомление.
Дополнительные сведения о затратах на использование Функций см. в статье Оценка затрат на план потребления.