Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье вы используете локальные средства командной строки для создания функции, которая отвечает на HTTP-запросы. После того как вы проверите код локально, вы развернете его в Функции Azure на бессерверном плане размещения Flex Consumption.
Завершение этого быстрого старта влечет за собой небольшие расходы в несколько центов США или меньше в вашей учетной записи Azure.
Выберите предпочитаемый язык разработки в верхней части статьи.
Important
Поддержка Go для Функции Azure сейчас находится на этапе общедоступной предварительной версии. Во время предварительной версии приложения-функции Go поддерживаются только в плане потребления Flex.
Prerequisites
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
-
Пакет разработчиков Java 17
- Если вы используете другую поддерживаемую версию Java, необходимо обновить файл pom.xml проекта.
- Переменная
JAVA_HOMEсреды должна быть задана в расположении установки правильной версии пакета средств разработки Java (JDK).
- Apache Maven 3.8.x
Go 1.24 или более поздняя версия.
Функции Azure Core Tools версии
4.12или более поздней версии. Выполните командуfunc --version, чтобы проверить установленную версию.Azure CLI версии
2.87.0или более поздней. Выполните командуaz version, чтобы проверить установленную версию.
- Цепочка инструментов Rust с использованием rustup. Используйте команду
rustc --version, чтобы проверить установленную версию.
-
Обработчик JSON командной
jqстроки, используемый для анализа выходных данных JSON, а также доступен в Azure Cloud Shell.
Установка основных инструментов Функций Azure
Рекомендуемый метод установки для Core Tools зависит от операционной системы локального компьютера разработки.
Два основных способа установки последней версии Core Tools на Windows:
| Метод установки | Оптимален для | Расположение установки/команда |
|---|---|---|
| установщик Windows (MSI) | разработка Visual Studio или командной строки без Node.js | • 64-разрядная(рекомендуется) • 32-разрядная версия |
npm пакет |
разработка Visual Studio Code (используется расширением Функции Azure для обновлений) | • npm: npm i -g azure-functions-core-tools@4 --unsafe-perm true• chocolatey: choco install azure-functions-core-tools |
Рекомендации по установке:
- Выберите наиболее подходящий метод исходя из вашей локальной среды разработки и используйте его для обновлений.
- Расширение Visual Studio Code для Функции Azure устанавливает и поддерживает Core Tools, используя
npm. - Если вы ранее использовали MSI для установки Core Tools в Windows, удалите его через «Установка и удаление программ», прежде чем устанавливать Core Tools с помощью Visual Studio Code для разработки, которое предпочитает
npm. Если установлены оба, это вызывает конфликты версий, поскольку MSI имеет приоритет в переменной PATH. Чтобы проверить, что у вас есть, запуститеwhere funcв терминале. - Чтобы установить основные средства в подсистеме Windows для Linux (WSL), следуйте инструкциям на вкладке Linux.
Дополнительные сведения см. в файле README для Core Tools.
Создание и активация виртуальной среды
В подходящей папке выполните следующие команды, чтобы создать и активировать виртуальную среду с именем .venv. Обязательно используйте одну из версий Python, поддерживаемых функциями Azure.
python -m venv .venv
source .venv/bin/activate
Если пакет venv не установлен Python для вашего дистрибутива Linux, выполните следующую команду:
sudo apt-get install python3-venv
Все последующие команды будут выполняться в этой активированной виртуальной среде.
Создание локального проекта кода и функции
В Функциях Azure проект кода — это приложение, содержащее одну или несколько отдельных функций, которые отвечают каждому триггеру. Все функции в проекте используют одинаковые конфигурации и развертываются как единица в Azure. В этом разделе вы создадите проект кода, содержащий одну функцию.
func initВыполните команду, чтобы создать проект функций Go:func init MyGoFunctionApp --worker-runtime goЭта команда создает папку проекта с именем
MyGoFunctionApp, включающую следующие файлы:File Description host.jsonКонфигурация хоста для приложения-функции. local.settings.jsonПараметры, используемые при локальном запуске. main.goТочка входа с примером функции, активируемой по HTTP. go.modФайл модуля Go для управления зависимостями. go.sumФайл контрольной суммы модуля Go. Перейдите в папку проекта:
cd MyGoFunctionAppОткройте
main.goдля просмотра созданного кода. Он содержит пример функции, активаемой HTTP:package main import ( "log" "net/http" "github.com/azure/azure-functions-golang-worker/sdk" "github.com/azure/azure-functions-golang-worker/worker" ) // HTTPTriggerHandler handles standard HTTP requests func HTTPTriggerHandler(w http.ResponseWriter, r *http.Request) { log.Printf("Processing HTTP Trigger for %s", r.URL.Path) w.WriteHeader(http.StatusOK) w.Write([]byte("Hello from Go Worker!")) } func main() { app := sdk.FunctionApp() app.HTTP("hello", HTTPTriggerHandler, sdk.WithMethods("GET", "POST"), sdk.WithAuth("anonymous"), ) worker.Start(app) }Функции Go используют стандартные
net/httpтипы (http.ResponseWriterи*http.Request) для триггеров HTTP. Функции регистрируются вmain()с помощью Go Worker SDK и функциональных опций, и файлыfunction.jsonне требуются.
В терминале или командной строке выполните следующую
func initкоманду, чтобы создать проект приложения-функции в текущей папке:func init --worker-runtime dotnet-isolated
В терминале или командной строке выполните следующую
func initкоманду, чтобы создать проект приложения-функции в текущей папке:func init --worker-runtime node --language javascript
В терминале или командной строке выполните следующую
func initкоманду, чтобы создать проект приложения-функции в текущей папке:func init --worker-runtime powershell
В терминале или командной строке выполните следующую
func initкоманду, чтобы создать проект приложения-функции в текущей папке:func init --worker-runtime python
В терминале или командной строке выполните следующую
func initкоманду, чтобы создать проект приложения-функции в текущей папке:func init --worker-runtime node --language typescript
В терминале или командной строке выполните следующую
func initкоманду, чтобы создать проект приложения-функции в текущей папке:func init --worker-runtime custom
В пустой папке выполните следующую
mvnкоманду, чтобы создать проект кода из архетипа Функций Azure Maven:mvn archetype:generate -DarchetypeGroupId=com.microsoft.azure -DarchetypeArtifactId=azure-functions-archetype -DjavaVersion=17Important
- Используйте
-DjavaVersion=11, чтобы функции выполнялись на Java 11. Дополнительные сведения см. в версиях Java. -
JAVA_HOMEЗадайте для переменной среды расположение установки правильной версии JDK, чтобы завершить эту статью.
- Используйте
Maven запрашивает значения, необходимые для завершения создания проекта при развертывании.
При появлении запроса укажите следующие значения:Prompt Value Description groupId com.fabrikamЭто значение уникально идентифицирует проект среди всех остальных. Оно должно соответствовать правилам именования пакетов для Java. artifactId fabrikam-functionsЭто значение содержит имя JAR-файла, без номера версии. version 1.0-SNAPSHOTВыберите значение по умолчанию. package com.fabrikamЗначение, представляющее собой пакет Java для сгенерированного кода функции. Используйте значения по умолчанию. Введите
Yили нажмите Enter, чтобы подтвердить.Maven создает файлы проекта в новой папке с именем artifactId, который в этом примере является
fabrikam-functions.Перейдите в папку проекта:
cd fabrikam-functionsВы можете просмотреть созданный шаблоном код для новой функции триггера HTTP в Function.java в каталоге проекта \src\main\java\com\fabrikam .
Используйте эту
func newкоманду, чтобы добавить функцию в проект:func new --name HttpExample --template "HTTP trigger" --authlevel "function"Новый файл кода добавляется в проект. В этом случае
--nameаргумент — это уникальное имя функции (HttpExample), а--templateаргумент указывает триггер HTTP.
Корневая папка проекта содержит различные файлы для проекта, включая файлы конфигураций с именем local.settings.json и host.json. Файл local.settings.json может содержать секреты, скачанные из Azure, поэтому файл по умолчанию исключен из системы управления версиями в GITIGNORE-файле.
Создание и сборка функции
Файл function.json в папке HttpExample объявляет функцию для триггера HTTP. Чтобы реализовать эту функцию, вам нужно добавить к ней обработчик и скомпилировать исполняемый файл.
Нажмите клавиши CTRL+SHIFT+' или выберите команду New Terminal (Создать терминал) в меню Terminal (Терминал), чтобы открыть новый встроенный терминал VS Code.
В корневой папке приложения-функции (где размещен файл host.json) инициализируйте проект Rust с именем
handler.cargo init --name handlerВ файл Cargo.toml добавьте следующие зависимости, требуемые для работы с этим кратким руководством. В нашем примере используется платформа веб-сервера warp.
[dependencies] warp = "0.3" tokio = { version = "1", features = ["rt", "macros", "rt-multi-thread"] }Добавьте в файл src/main.rs следующий код и сохраните его. Это и есть ваш пользовательский обработчик Rust.
use std::collections::HashMap; use std::env; use std::net::Ipv4Addr; use warp::{http::Response, Filter}; #[tokio::main] async fn main() { let example1 = warp::get() .and(warp::path("api")) .and(warp::path("HttpExample")) .and(warp::query::<HashMap<String, String>>()) .map(|p: HashMap<String, String>| match p.get("name") { Some(name) => Response::builder().body(format!("Hello, {}. This HTTP triggered function executed successfully.", name)), None => Response::builder().body(String::from("This HTTP triggered function executed successfully. Pass a name in the query string for a personalized response.")), }); let port_key = "FUNCTIONS_CUSTOMHANDLER_PORT"; let port: u16 = match env::var(port_key) { Ok(val) => val.parse().expect("Custom Handler port is not a number!"), Err(_) => 3000, }; warp::serve(example1).run((Ipv4Addr::LOCALHOST, port)).await }Скомпилируйте двоичный файл для этого обработчика. Исполняемый файл с именем
handler(handler.exeв Windows) выводится в корневую папку приложения-функции.cargo build --release cp target/release/handler .
Настройте приложение-функцию
Хост функций должен быть настроен на запуск двоичного файла пользовательского обработчика при своем запуске.
Откройте файл host.json.
В разделе
customHandler.descriptionзадайте значениеdefaultExecutablePathдля параметраhandler(илиhandler.exeв среде Windows).В разделе
customHandlerдобавьте свойство с именемenableForwardingHttpRequestи задайте для него значениеtrue. Для функций, состоящих только из HTTP-триггера, этот параметр упрощает разработку, позволяя работать с обычным HTTP-запросом вместо тела запроса, передаваемого настраиваемому обработчику.Убедитесь, что раздел
customHandlerпохож на представленный здесь пример. Сохраните файл."customHandler": { "description": { "defaultExecutablePath": "handler", "workingDirectory": "", "arguments": [] }, "enableForwardingHttpRequest": true }
Приложение-функция настроено на запуск исполняемого файла пользовательского обработчика.
Локальное выполнение функции
Проверьте новую функцию, запустив проект локально и вызвав конечную точку функции.
Используйте эту команду, чтобы запустить локальный узел среды выполнения Функций Azure в корневой папке проекта:
func startnpm install npm startmvn clean package mvn azure-functions:runВ конце выходных данных отображаются следующие строки:
... Now listening on: http://0.0.0.0:7071 Application started. Press Ctrl+C to shut down. Http Functions: HttpExample: [GET,POST] http://localhost:7071/api/HttpExample ...В конце выходных данных отображается конечная точка HTTP для функции:
Functions: hello: [GET,POST] http://localhost:7071/api/helloВызовите конечную точку функции, чтобы убедиться, что она работает:
Скопируйте URL-адрес вашей функции из этих данных
HttpExample, вставьте в браузер и перейдите по URL-адресу функции. Вы должны получить успешный ответ с сообщением «hello world».Note
Так как авторизация ключа доступа не применяется при локальном запуске, url-адрес функции, возвращенный не включает значение ключа доступа, и вам не нужно вызывать функцию.
При локальной работе функции откройте браузер и перейдите по следующему URL-адресу:
http://localhost:7071/api/helloВы должны увидеть следующий ответ:
Hello from Go Worker!Когда закончите, нажмите клавиши Ctrl+C и выберите
y, чтобы остановить хост функций.
Создание вспомогательных ресурсов Azure для функции
Прежде чем развернуть код функции в Azure, необходимо создать следующие ресурсы:
- группу ресурсов — логический контейнер связанных ресурсов;
- Учетная запись хранения по умолчанию, которая используется узлом функций для поддержания состояния и других сведений о функциях.
- Управляемое удостоверение, назначенное пользователем, которое хост функций использует для подключения к учетной записи хранения по умолчанию.
- Приложение-функция, которое предоставляет окружение для выполнения кода вашей функции. Приложение функций соответствует вашему локальному проекту функций и позволяет группировать функции в логические единицы для более простого управления, развертывания и совместного использования ресурсов.
Используйте команды Azure CLI, описанные в этих шагах, чтобы создать необходимые ресурсы.
Войдите в Azure, если вы еще этого не сделали:
az loginКоманда
az loginвходит в вашу учетную запись Azure. Пропустите этот шаг при запуске в Azure Cloud Shell.Если вы еще этого не сделали, используйте эту
az extension addкоманду для установки расширения Application Insights:az extension add --name application-insightsИспользуйте команду az group create , чтобы создать группу ресурсов с именем
AzureFunctionsQuickstart-rgв выбранном регионе:az group create --name "AzureFunctionsQuickstart-rg" --location "<REGION>"В этом примере замените
<REGION>на регион рядом с вами, который поддерживает план потребления Flex. Используйте команду az functionapp list-flexconsumption-locations , чтобы просмотреть список поддерживаемых в настоящее время регионов.Используйте команду az storage account create, чтобы создать учетную запись хранения общего назначения в группе ресурсов и регионе:
az storage account create --name <STORAGE_NAME> --location "<REGION>" --resource-group "AzureFunctionsQuickstart-rg" \ --sku "Standard_LRS" --allow-blob-public-access false --allow-shared-key-access falseВ этом примере замените
<STORAGE_NAME>на имя, подходящее вам и уникальное в хранилище Azure. Имена должны содержать от трех до 24 символов и содержать только цифры и строчные буквы.Standard_LRSуказывает учетную запись общего назначения, которая поддерживается Функциями. Доступ к этой новой учетной записи можно получить только с помощью удостоверений, прошедших проверку подлинности Microsoft Entra, которым предоставлены разрешения для определенных ресурсов.Используйте этот скрипт для создания управляемого удостоверения, назначаемого пользователем, анализа возвращаемых свойств JSON объекта с помощью
jqи предоставленияStorage Blob Data Ownerразрешений в учетной записи хранения по умолчанию:output=$(az identity create --name "func-host-storage-user" --resource-group "AzureFunctionsQuickstart-rg" --location <REGION> \ --query "{userId:id, principalId: principalId, clientId: clientId}" -o json) userId=$(echo $output | jq -r '.userId') principalId=$(echo $output | jq -r '.principalId') clientId=$(echo $output | jq -r '.clientId') storageId=$(az storage account show --resource-group "AzureFunctionsQuickstart-rg" --name <STORAGE_NAME> --query 'id' -o tsv) az role assignment create --assignee-object-id $principalId --assignee-principal-type ServicePrincipal \ --role "Storage Blob Data Owner" --scope $storageIdЕсли у вас нет служебной
jqпрограммы в локальной оболочке Bash, она доступна в Azure Cloud Shell. В этом примере замените<STORAGE_NAME>на имя вашей учетной записи хранения по умолчанию и<REGION>на регион соответственно.Команда az identity create создает удостоверение с именем
func-host-storage-user. ВозвращенныйprincipalIdиспользуется для назначения разрешений этому новому удостоверению в учетной записи хранения по умолчанию с помощью командыaz role assignment create. Командаaz storage account showиспользуется для получения идентификатора учетной записи хранения.Используйте следующую команду az functionapp create для создания приложения-функции в Azure:
az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \ --runtime dotnet-isolated --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \ --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \ --runtime java --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \ --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \ --runtime node --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \ --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \ --runtime python --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \ --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \ --runtime python --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \ --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \ --runtime other --storage-account <STORAGE_NAME> \ --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"В этом примере замените эти заполнители соответствующими значениями:
-
<APP_NAME>: глобально уникальное имя, соответствующее вам.<APP_NAME>также является доменом DNS по умолчанию для приложения-функции. -
<STORAGE_NAME>: имя учетной записи, используемой на предыдущем шаге. -
<REGION>: текущий регион. -
<LANGUAGE_VERSION>: используйте ту же поддерживаемую версию стека языков , проверенную локально, если применимо.
Эта команда создает функциональное приложение, работающее в указанной языковой среде выполнения на Linux в плане потребления Flex, который является бесплатным для объема использования, который вы создаете здесь. Эта команда также создает связанный экземпляр приложение Azure Insights в той же группе ресурсов, с помощью которой можно отслеживать выполнение приложения-функции и просматривать журналы. Дополнительные сведения см. в разделе Мониторинг функций Azure. Этот экземпляр не создает затраты, пока вы не активируете его.
-
Используйте этот скрипт, чтобы добавить ваше пользовательское управляемое удостоверение в роль издателя метрик мониторинга в экземпляре Application Insights.
appInsights=$(az monitor app-insights component show --resource-group "AzureFunctionsQuickstart-rg" \ --app <APP_NAME> --query "id" --output tsv) principalId=$(az identity show --name "func-host-storage-user" --resource-group "AzureFunctionsQuickstart-rg" \ --query principalId -o tsv) az role assignment create --role "Monitoring Metrics Publisher" --assignee $principalId --scope $appInsightsВ нашем примере замените
<APP_NAME>именем реального приложения-функции. Команда az role assignment create добавляет пользователя в роль. Идентификатор ресурса вашего экземпляра Application Insights и основной идентификатор пользователя получаются с помощью команд az monitor app-insights component show иaz identity show, соответственно.
Обновление параметров приложения
Чтобы включить подключение узла Функций к учетной записи хранения по умолчанию с помощью общих секретов, замените параметр строки подключения AzureWebJobsStorage несколькими параметрами, которые имеют префикс AzureWebJobsStorage__. Эти параметры определяют сложный набор настроек, который ваше приложение использует для подключения к хранилищу и Application Insights с назначенным пользователем управляемым удостоверением.
Используйте этот скрипт, чтобы получить ID клиента для управляемого удостоверения, назначенного пользователем, и используйте его для определения подключений управляемого удостоверения к хранилищу и Application Insights.
clientId=$(az identity show --name func-host-storage-user \ --resource-group AzureFunctionsQuickstart-rg --query 'clientId' -o tsv) az functionapp config appsettings set --name <APP_NAME> --resource-group "AzureFunctionsQuickstart-rg" \ --settings AzureWebJobsStorage__accountName=<STORAGE_NAME> \ AzureWebJobsStorage__credential=managedidentity AzureWebJobsStorage__clientId=$clientId \ APPLICATIONINSIGHTS_AUTHENTICATION_STRING="ClientId=$clientId;Authorization=AAD"В этом скрипте замените
<APP_NAME>на название вашего приложения-функции, а<STORAGE_NAME>на название вашей учетной записи хранения соответственно.Выполните команду az functionapp config appsettings delete , чтобы удалить существующий
AzureWebJobsStorageпараметр строки подключения, содержащий общий секретный ключ:az functionapp config appsettings delete --name <APP_NAME> --resource-group "AzureFunctionsQuickstart-rg" --setting-names AzureWebJobsStorageВ этом примере замените
<APP_NAME>на имя вашего приложения-функции.
На этом этапе хост функций может безопасно подключиться к учетной записи хранилища с помощью управляемых удостоверений вместо общих секретов. Теперь вы можете развернуть код проекта в ресурсах Azure.
Создание вспомогательных ресурсов Azure для функции
Прежде чем развернуть код функции для Azure, необходимо создать группу ресурсов, учетную запись хранения и приложение-функцию. Используйте команды Azure CLI, описанные в этих шагах, чтобы создать необходимые ресурсы.
Войдите в Azure, если вы еще этого не сделали:
az loginКоманда
az loginвходит в вашу учетную запись Azure. Пропустите этот шаг при запуске в Azure Cloud Shell.az group createИспользуйте команду, чтобы создать группу ресурсов с именемAzureFunctionsQuickstart-rgв выбранном регионе:az group create --name AzureFunctionsQuickstart-rg --location <REGION>В этом примере замените
<REGION>на регион рядом с вами, который поддерживает план потребления Flex.az functionapp list-flexconsumption-locationsИспользуйте команду для просмотра списка поддерживаемых в настоящее время регионов.az storage account createИспользуйте команду, чтобы создать учетную запись хранения общего назначения в группе ресурсов и регионе:az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group AzureFunctionsQuickstart-rg --sku Standard_LRSВ этом примере замените
<STORAGE_NAME>глобально уникальным именем. Имена должны содержать три до 24 символов и только строчные буквы и цифры.Создайте приложение-функцию в Azure:
az functionapp create --resource-group AzureFunctionsQuickstart-rg --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime go --runtime-version 1.0 --functions-version 4Замените
<APP_NAME>глобально уникальным именем и<STORAGE_NAME>именем учетной записи, используемой на предыдущем шаге. Эта команда также создает связанный экземпляр приложение Azure Insights в той же группе ресурсов, с помощью которой можно отслеживать приложение-функцию и просматривать журналы. Дополнительные сведения см. в разделе Мониторинг функций Azure.Отключите HTTP/2 в приложении-функции, которое требуется во время общедоступной предварительной версии Go:
az resource update --resource-group AzureFunctionsQuickstart-rg --resource-type Microsoft.Web/sites --name <APP_NAME> --set properties.siteConfig.http20Enabled=false
Развертывание проекта функций в Azure
После успешного создания приложения-функции в Azure теперь можно развернуть проект локальных функций с помощью func azure functionapp publish команды.
В корневой папке проекта выполните следующую
func azure functionapp publishкоманду:func azure functionapp publish <APP_NAME>В этом примере следует заменить
<APP_NAME>именем приложения. Успешное развертывание показывает результаты, аналогичные следующим выходным данным (усеченным для простоты):... Getting site publishing info... Creating archive for current directory... Performing remote build for functions project. ... Deployment successful. Remote build succeeded! Syncing triggers... Functions in msdocs-azurefunctions-qs: HttpExample - [httpTrigger] Invoke url: https://msdocs-azurefunctions-qs.azurewebsites.net/api/httpexampleВ локальном терминале или командной строке выполните следующую команду, чтобы получить значение конечной точки URL-адреса, включая ключ доступа:
func azure functionapp list-functions <APP_NAME> --show-keysВ этом примере снова замените
<APP_NAME>на имя вашего приложения.Скопируйте возвращаемый URL-адрес конечной точки и ключ, который используется для вызова конечной точки функции.
Обновление файла pom.xml
После успешного создания приложения-функции в Azure обновите файл pom.xml, чтобы Maven смог развернуть ваше новое приложение. В противном случае Maven создает новый набор ресурсов Azure во время развертывания.
В Azure Cloud Shell используйте эту
az functionapp showкоманду, чтобы получить URL-адрес контейнера развертывания и идентификатор нового управляемого удостоверения, назначаемого пользователем:az functionapp show --name <APP_NAME> --resource-group AzureFunctionsQuickstart-rg \ --query "{userAssignedIdentityResourceId: properties.functionAppConfig.deployment.storage.authentication.userAssignedIdentityResourceId, \ containerUrl: properties.functionAppConfig.deployment.storage.value}"В этом примере замените
<APP_NAME>на имя вашего приложения-функции.В корневом каталоге проекта откройте файл pom.xml в текстовом редакторе, найдите
propertiesэлемент и обновите следующие значения свойств:Название свойства Value java.versionИспользуйте ту же поддерживаемую версию стека языков , проверенную локально, например 17.azure.functions.maven.plugin.version1.37.1azure.functions.java.library.version3.1.0functionAppNameИмя приложения-функции в Azure. configurationНайдите разделazure-functions-maven-pluginи замените его этим фрагментом XML:<configuration> <appName>${functionAppName}</appName> <resourceGroup>AzureFunctionsQuickstart-rg</resourceGroup> <pricingTier>Flex Consumption</pricingTier> <region>....</region> <runtime> <os>linux</os> <javaVersion>${java.version}</javaVersion> </runtime> <deploymentStorageAccount>...</deploymentStorageAccount> <deploymentStorageResourceGroup>AzureFunctionsQuickstart-rg</deploymentStorageResourceGroup> <deploymentStorageContainer>...</deploymentStorageContainer> <storageAuthenticationMethod>UserAssignedIdentity</storageAuthenticationMethod> <userAssignedIdentityResourceId>...</userAssignedIdentityResourceId> <appSettings> <property> <name>FUNCTIONS_EXTENSION_VERSION</name> <value>~4</value> </property> </appSettings> </configuration>В новом элементе
configurationвыполните следующие точные замены значений, представленных многоточиями (...):Configuration Value regionКод региона существующего приложения-функции, например eastus.deploymentStorageAccountИмя учетной записи хранения. deploymentStorageContainerИмя общей папки развертывания, которое следует после \в значенииcontainerUrl, которое вы получили.userAssignedIdentityResourceIdПолный идентификатор ресурса управляемого удостоверения, полученного вами. Сохраните изменения в файле pom.xml .
Теперь вы можете использовать Maven для развертывания проекта кода в существующем приложении.
Развертывание проекта функций в Azure
В командной строке выполните следующую команду:
mvn clean package azure-functions:deployПосле успешного развертывания выполните следующую команду Core Tools, чтобы получить значение конечной точки URL-адреса, включая ключ доступа:
func azure functionapp list-functions <APP_NAME> --show-keysВ этом примере снова замените
<APP_NAME>на имя вашего приложения.Скопируйте возвращаемый URL-адрес конечной точки и ключ, который используется для вызова конечной точки функции.
Развертывание проекта функций в Azure
После успешного создания приложения-функции в Azure вы можете развернуть проект локальных функций. Используйте команду func azure functionapp publish для развертывания проекта в Azure:
func azure functionapp publish <APP_NAME>
Замените <APP_NAME> на имя приложения-функции.
Вызов функции в Azure
Так как функция использует триггер HTTP и поддерживает запросы GET, вы вызываете его, выполняя HTTP-запрос к URL-адресу с помощью ключа доступа на уровне функции. Проще всего выполнить запрос GET в браузере.
Вставьте URL-адрес и ключ доступа, скопированный в адресную строку браузера.
URL-адрес конечной точки должен выглядеть примерно так:
https://contoso-app.azurewebsites.net/api/httpexample?code=aabbccdd...
В этом случае необходимо также указать ключ доступа в строке запроса при выполнении запроса GET к URL-адресу конечной точки. Рекомендуется использовать ключ доступа, чтобы ограничить доступ для случайных клиентов. При выполнении запроса POST с помощью HTTP-клиента вместо этого следует указать ключ доступа в заголовке x-functions-key .
При переходе к этому URL-адресу в браузере должны отображаться выходные данные, аналогичные данным при локальном запуске функции.
Вызов функции в Azure
После завершения развертывания откройте следующий URL-адрес в браузере, чтобы убедиться, что функция выполняется в Azure:
https://<APP_NAME>.azurewebsites.net/api/hello
Вы должны увидеть тот же Hello from Go Worker! ответ, что и при локальном запуске функции.
Очистите ресурсы
Если вы намерены перейти к следующему шагу и добавить выходную привязку очереди службы хранилища Azure, сохраните все ваши ресурсы в неизменном виде, так как вам предстоит работать с уже выполненными действиями.
В противном случае используйте следующую команду, чтобы удалить группу ресурсов и все содержащиеся в ней ресурсы и избежать дополнительных расходов.
az group delete --name AzureFunctionsQuickstart-rg
Очистите ресурсы
Если вы переходите к следующему шагу, оставьте все ресурсы на месте, опираясь на то, что вы уже создали.
В противном случае используйте следующую команду, чтобы удалить группу ресурсов и все содержащиеся в ней ресурсы и избежать дополнительных расходов.
az group delete --name AzureFunctionsQuickstart-rg
Дальнейшие шаги
Дальнейшие шаги
Дополнительные сведения о разработке функций Go см. в следующих ресурсах: