Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье вы используете локальные средства командной строки для создания функции, которая отвечает на 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 версии v4.x с помощью установщика Windows (MSI). Дополнительные сведения о других установщиках на основе пакетов, см. в файле readme для Core Tools.
Скачайте и запустите установщик Core Tools для используемой версии Windows:
- v4.x — Windows 64-разрядная версия (рекомендуется для отладки Visual Studio Code требуется 64-разрядная версия.)
- v4.x — Windows 32-разрядная версия
Если вы ранее использовали установщик Windows (MSI) для установки основных инструментов в Windows, перед установкой последней версии удалите старую версию из команды "Добавить программы".
Подсказка
Чтобы установить основные средства в подсистеме Windows для Linux (WSL), следуйте инструкциям на вкладке Linux.
Создание и активация виртуальной среды
В подходящей папке выполните следующие команды, чтобы создать и активировать виртуальную среду с именем .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 см. в следующих ресурсах: