Создание и управление функциональными приложениями в плане потребления Flex

В этой статье показано, как создавать приложения-функции, размещенные в плане Flex Consumption в Функциях Azure. В нем также показано, как управлять определенными функциями приложения, размещенного на плане потребления Flex.

Ресурсы функционального приложения зависят от языка. Выберите предпочитаемый язык разработки кода в начале статьи.

Предварительные требования

  • Учетная запись Azure с активной подпиской. Если ее нет, можно создать учетную запись бесплатно.

  • Azure CLI: используется для создания ресурсов и управления ими в Azure. При использовании Azure CLI на локальном компьютере обязательно используйте версию 2.60.0 или более позднюю версию. Вы также можете использовать Azure Cloud Shell, которая имеет правильную версию Azure CLI.

  • Visual Studio Code: используется для создания и разработки приложений, создания ресурсов Azure и развертывания проектов кода в Azure. При использовании Visual Studio Code также установите последнее расширение Azure Functions. Вы также можете установить пакет расширений средств Azure.

  • Хотя не требуется для создания приложения плана потребления Flex, вам потребуется проект кода для развертывания и проверки нового приложения-функции. Выполните первую часть одной из следующих статей краткого руководства, в которой вы создадите проект кода с активированной функцией HTTP:

    Чтобы создать приложение в новом плане потребления Flex во время развертывания Maven, необходимо создать проект локального приложения, а затем обновить файл pom.xml проекта. Дополнительные сведения см. в статье "Создание приложения потребления Java Flex с помощью Maven"

    Вернитесь к этой статье после создания и запуска локального проекта, но прежде чем вам будет предложено создать ресурсы Azure. Вы создадите приложение-функцию и другие ресурсы Azure в следующем разделе.

Создание приложения Flex Consumption

В этом разделе показано, как создать функциональное приложение в плане потребления Flex с помощью Azure CLI, портала Azure или Visual Studio Code. Пример создания приложения в плане Flex Consumption с использованием шаблонов Bicep/ARM см. в репозитории Flex Consumption.

Этот раздел можно пропустить, если вы решили создать и развернуть приложение с помощью Maven.

Для поддержки кода функции необходимо создать три ресурса:

  • группу ресурсов — логический контейнер связанных ресурсов;
  • учетную запись хранения, которая используется для сохранения состояния и других сведений о функциях;
  • Функциональное приложение в плане Flex Consumption, которое предоставляет среду для выполнения кода вашей функции. Приложение-функция сопоставляется с проектом локальной функции и позволяет группировать функции как логическую единицу для упрощения управления, развертывания и совместного использования ресурсов в плане потребления Flex.
  1. Войдите в Azure, если вы еще этого не сделали:

    az login
    

    Команда az login выполняет вход в вашу учетную запись Azure.

  2. Используйте команду az functionapp list-flexconsumption-locations, чтобы просмотреть список регионов, которые в настоящее время поддерживают Flex Consumption в алфавитном порядке.

    az functionapp list-flexconsumption-locations --query "sort_by(@, &name)[].{Region:name}" -o table
    
  1. Создайте группу ресурсов в одном из поддерживаемых в настоящее время регионов, перечисленных командой на предыдущем шаге.

    az group create --name <RESOURCE_GROUP> --location <REGION>
    

    В предыдущей команде замените <RESOURCE_GROUP> на значение, уникальное в вашей подписке, и <REGION> на один из поддерживаемых в настоящее время регионов. Чтобы создать группу ресурсов, выполните команду az group create.

  2. В группе ресурсов и регионе создайте учетную запись хранения общего назначения:

    az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group <RESOURCE_GROUP> --sku Standard_LRS --allow-blob-public-access false
    

    В предыдущем примере замените <STORAGE_NAME> на имя, которое подходит вам и является уникальным в хранилище Azure. Имена должны содержать три до 24 символов, состоящие только из чисел и строчных букв. Standard_LRS указывает учетную запись общего назначения, которую Функции Azure поддерживают в соответствии с требованиями учетной записи хранения. Создайте учетную запись хранения с помощью команды az storage account create.

    Внимание

    Учетная запись хранения используется для хранения важных данных приложения, иногда включая сам код приложения. Необходимо ограничить доступ от других приложений и пользователей к учетной записи хранения.

  3. Создайте приложение-функцию в Azure:

    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime dotnet-isolated --runtime-version 8.0 
    

    Приложения C#, которые выполняются в рамках процесса, в настоящее время не поддерживаются в плане Flex Consumption.

    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime java --runtime-version 17 
    
    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime node --runtime-version 20 
    
    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime python --runtime-version 3.11 
    

    Для приложений Python в настоящее время поддерживается Python 3.10.

    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime powershell --runtime-version 7.4 
    

    В этом примере замените <RESOURCE_GROUP> на группу ресурсов и <STORAGE_NAME> на имя учетной записи, которые вы использовали на предыдущем шаге, соответственно. Кроме того, замените <APP_NAME> на глобально уникальное имя, подходящее вам. Это <APP_NAME> также домен DNS по умолчанию для функционального приложения. Команда az functionapp create создает приложение-функцию в Azure.

    Эта команда создает приложение-функцию, работающее в плане потребления Flex.

    Так как вы создали приложение без указания всегда готовых экземпляров, ваше приложение будет нести затраты только при активном выполнении функций. Команда также создает связанный экземпляр Azure Application Insights в той же группе ресурсов, которое позволяет отслеживать ваше функциональное приложение и просматривать журналы. Дополнительные сведения см. в разделе Мониторинг функций Azure.

Разверните ваш кодовый проект

Для развертывания приложения плана потребления Flex используется контейнер хранилища Blob для размещения пакетных файлов .zip, содержащих код вашего проекта и все библиотеки, необходимые для работы приложения. Дополнительные сведения см. в разделе Развертывания.

Этот раздел можно пропустить, если вы решили создать и развернуть приложение с помощью Maven.

Вы можете развернуть код проекта в существующем функциональном приложении, используя различные инструменты.

Azure CLI можно использовать для отправки файла пакета развертывания в общую папку развертывания для приложения-функции в Azure. Чтобы сделать это развертывание, необходимо создать файл пакета .zip, который может выполняться при подключении пакета к приложению.

Этот файл пакета должен содержать все выходные файлы сборки и ссылки на библиотеки, необходимые для запуска проекта.

Для проектов с большим количеством библиотек следует упаковать корень файла проекта и запросить удаленную сборку.

Для проектов Python необходимо упаковать корень файла проекта и всегда запрашивать удаленную сборку. Использование удаленной сборки предотвращает потенциальные проблемы, которые могут возникнуть при сборке проекта в Windows для развертывания в Linux.

  1. Используя предпочитаемое средство разработки, создайте проект кода.

  2. Создайте файл .zip, содержащий выходные данные каталога сборки. Дополнительные сведения см. в разделе "Структура проекта".

  3. При необходимости войдите в учетную запись Azure и выберите активную подписку с помощью az login команды.

    az login
    
  4. Запустите команду az functionapp deployment source config-zip, чтобы развернуть пакет приложения, расположенный в относительном каталоге <FILE_PATH>.

    az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
    
  1. Используя предпочитаемое средство разработки, создайте проект кода.

  2. Создайте файл .zip, содержащий выходные данные каталога сборки. Дополнительные сведения см. в разделе "Структура папок".

  3. При необходимости войдите в учетную запись Azure и выберите активную подписку с помощью az login команды.

    az login
    
  4. Запустите команду az functionapp deployment source config-zip, чтобы развернуть пакет приложения, расположенный в относительном каталоге <FILE_PATH>.

    az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
    
  1. Создайте файл .zip, содержащий корневой каталог проекта кода. Дополнительные сведения см. в разделе "Структура папок".

  2. При необходимости войдите в учетную запись Azure и выберите активную подписку с помощью az login команды.

    az login
    
  3. Запустите команду az functionapp deployment source config-zip, чтобы развернуть пакет приложения, расположенный в относительном каталоге <FILE_PATH>.

    az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
    
  1. Создайте файл .zip, содержащий корневой каталог проекта кода. Дополнительные сведения см. в разделе "Структура папок".

  2. При необходимости войдите в учетную запись Azure и выберите активную подписку с помощью az login команды.

    az login
    
  3. Запустите команду az functionapp deployment source config-zip, чтобы развернуть пакет приложения, расположенный в относительном каталоге <FILE_PATH>.

    az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP> --build-remote true
    

    --build-remote true Обязательно установите для выполнения удаленной сборки.

  1. Создайте файл .zip, содержащий корневой каталог проекта кода. Дополнительные сведения см. в разделе "Структура папок".

  2. При необходимости войдите в учетную запись Azure и выберите активную подписку с помощью az login команды.

    az login
    
  3. Запустите команду az functionapp deployment source config-zip, чтобы развернуть пакет приложения, расположенный в относительном каталоге <FILE_PATH>.

    az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP> --build-remote true
    

    --build-remote true Обязательно установите для выполнения удаленной сборки.

Создание и развертывание приложения с помощью Maven

Используя Maven, вы можете создать размещенное в Flex Consumption приложение-функцию и необходимые ресурсы во время развертывания, изменив файл pom.xml.

  1. Создайте проект кода Java, выполнив первую часть одной из следующих статей краткого руководства:

  2. В проекте кода Java откройте файл pom.xml и внесите эти изменения, чтобы создать приложение-функцию в плане потребления Flex:

    • Измените значение атрибута <properties>.<azure.functions.maven.plugin.version> на 1.34.0.

    • В разделе <plugin>.<configuration> для azure-functions-maven-plugin добавьте или раскомментируйте элемент <pricingTier> следующим образом:

      <pricingTier>Flex Consumption</pricingTier>
      
  3. (Необязательно) Настройте план потребления Flex в развертывании Maven, включив в раздел следующие элементы <plugin>.<configuration> :

    • <instanceSize> — задает размер памяти экземпляра для функционального приложения. Значение по умолчанию — 2048.
    • <maximumInstances> — задает наибольшее значение для максимального количества экземпляров приложения-функции.
    • <alwaysReadyInstances> — задает количество всегда готовых экземпляров с дочерними элементами для групп триггеров HTTP (<http>), групп Durable Functions (<durable>), а также для других конкретных триггеров (<my_function>). При установке любого числа экземпляров больше нуля плата взимается за эти экземпляры независимо от того, выполняются ли ваши функции. Дополнительные сведения см. в разделе о выставлении счетов.
  4. Перед развертыванием войдите в подписку Azure с помощью Azure CLI.

    az login
    

    Команда az login позволяет вам войти в учетную запись Azure.

  5. Используйте следующую команду, чтобы развернуть проект кода в новом приложении-функции в Flex Consumption.

    mvn azure-functions:deploy
    

    Maven использует параметры в шаблоне pom.xml для создания функционального приложения в плане Flex Consumption в Azure, вместе с другими необходимыми ресурсами. Если эти ресурсы уже существуют, код развертывается в приложении функции, перезаписывая любой предыдущий код.

Включение интеграции с виртуальной сетью

Вы можете включить интеграцию виртуальной сети для вашего приложения в плане Flex Consumption. В примерах этого раздела предполагается, что ваша учетная запись уже содержит виртуальную сеть и подсеть. Вы можете включить интеграцию виртуальной сети при создании приложения или позже.

Внимание

План потребления Flex в настоящее время не поддерживает подсети с именами, содержащими символы подчеркивания (_).

Чтобы включить виртуальную сеть при создании приложения, выполните следующие действия.

Вы можете включить интеграцию виртуальной сети, выполнив az functionapp create команду и включив параметры --vnet--subnet .

  1. Создайте виртуальную сеть и подсеть, если у вас еще нет.

  2. Выполните шаги 1–4 в Создание приложения Flex Consumption, чтобы создать требуемые вашим приложением ресурсы.

  3. Выполните команду az functionapp create, включая параметры --vnet и --subnet, как в следующем примере:

    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime <RUNTIME_NAME> --runtime-version <RUNTIME_VERSION> --vnet <VNET_RESOURCE_ID> --subnet <SUBNET_NAME>
    

    Значением <VNET_RESOURCE_ID> является идентификатор ресурса для виртуальной сети, который находится в формате: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Network/virtualNetworks/<VNET_NAME> Эту команду можно использовать для получения списка идентификаторов виртуальных сетей, отфильтрованных по <RESOURCE_GROUP>: az network vnet list --resource-group <RESOURCE_GROUP> --output tsv --query "[]".id.

Полные примеры создания приложений в Flex Consumption с интеграцией виртуальной сети см. в следующих ресурсах:

Чтобы изменить или удалить интеграцию виртуальной сети в существующем приложении:

az functionapp vnet-integration add Используйте команду, чтобы включить интеграцию виртуальной сети с существующим приложением-функцией:

az functionapp vnet-integration add --resource-group <RESOURCE_GROUP> --name <APP_NAME> --vnet <VNET_RESOURCE_ID> --subnet <SUBNET_NAME>

az functionapp vnet-integration remove Используйте команду, чтобы отключить интеграцию виртуальной сети в приложении:

az functionapp vnet-integration remove --resource-group <RESOURCE_GROUP> --name <APP_NAME>

Используйте команду az functionapp vnet-integration list для перечисления текущих интеграций виртуальной сети для вашего приложения.

az functionapp vnet-integration list --resource-group <RESOURCE_GROUP> --name <APP_NAME>

При выборе подсети эти рекомендации применяются:

  • Выбранную подсеть нельзя использовать в других целях (например, с частными конечными точками или конечными точками службы) либо делегировать любому другому плану размещения или службе.
  • Вы не можете совместно использовать одну подсеть между средой "Приложения контейнеров" и приложением Flex Consumption.
  • Вы можете совместно использовать одну подсеть с несколькими приложениями, работающими в плане потребления Flex. Так как сетевые ресурсы совместно используются во всех приложениях, одно приложение-функция может повлиять на производительность других пользователей в одной подсети.
  • В рамках плана потребления Flex одно приложение-функция может использовать до 40 IP-адресов, даже если масштабирование приложения выходит за рамки 40 экземпляров. Хотя это правило полезно при оценке нужного размера подсети, оно не применяется строго.

Настройка параметров развертывания

В плане гибкого потребления пакет развертывания, содержащий код вашего приложения, сохраняется в контейнере хранилища Blob в Azure. По умолчанию развертывания используют ту же учетную запись хранения (AzureWebJobsStorage) и значение строки подключения, используемого средой выполнения Функций для обслуживания приложения. Строка подключения хранится в параметре DEPLOYMENT_STORAGE_CONNECTION_STRING приложения. Однако вместо этого можно назначить контейнер BLOB-объектов в отдельной учетной записи хранения в качестве источника развертывания для кода. Можно также изменить метод проверки подлинности, используемый для доступа к контейнеру.

Настраиваемый источник развертывания должен соответствовать этим критериям:

  • Учетная запись хранения уже должна существовать.
  • Контейнер, используемый для развертываний, также должен существовать.
  • Если несколько приложений используют одну и ту же учетную запись хранения, каждый из них должен иметь собственный контейнер развертывания. Использование уникального контейнера для каждого приложения предотвращает перезапись пакетов развертывания, что произойдет, если приложения совместно используют один и тот же контейнер.

При настройке проверки подлинности хранилища развертывания следует учитывать следующие рекомендации.

  • Рекомендуется в целях безопасности использовать управляемые удостоверения при подключении к хранилищу Azure из ваших приложений. Дополнительные сведения см. в разделе Соединения.
  • При использовании строки подключения для подключения к учетной записи хранения развертывания, параметр приложения, содержащий эту строку подключения, уже должен существовать.
  • При использовании управляемого удостоверения, назначаемого пользователем, предоставленное удостоверение связывается с функцией приложения. Роль Storage Blob Data Contributor, доступ к которой ограничен учетной записью хранения развертывания, также назначается удостоверению.
  • При использовании управляемого удостоверения, назначаемого системой, удостоверение создается, когда допустимое удостоверение, назначаемое системой, еще не существует в приложении. Если удостоверение, назначенное системой, действительно существует, то роль, связанная с учетной записью хранения для развертывания, также присваивается этому удостоверению.

Чтобы настроить параметры развертывания при создании функционального приложения в плане потребления "Flex Consumption":

az functionapp create Используйте команду и укажите следующие дополнительные параметры, которые настраивают хранилище развертывания:

Параметр Описание
--deployment-storage-name Имя учетной записи хранения развертывания.
--deployment-storage-container-name Имя контейнера в учетной записи, содержащей пакет развертывания приложения.
--deployment-storage-auth-type Тип аутентификации, используемый для подключения к учетной записи хранилища развертывания. Допустимые значения включают StorageAccountConnectionString, UserAssignedIdentityи SystemAssignedIdentity.
--deployment-storage-auth-value При использовании StorageAccountConnectionString этот параметр устанавливается в имя настройки приложения, содержащей строку подключения для учетной записи хранилища развертывания. При установке UserAssignedIdentity этот параметр назначается именем идентификатора ресурса удостоверения, которое вы хотите использовать.

В этом примере создается функциональное приложение в плане Flex Consumption с отдельной учетной записью для хранения развертывания и удостоверением, назначенным пользователем.

az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage <STORAGE_NAME> --runtime dotnet-isolated --runtime-version 8.0 --flexconsumption-location "<REGION>" --deployment-storage-name <DEPLOYMENT_ACCOUNT_NAME> --deployment-storage-container-name <DEPLOYMENT_CONTAINER_NAME> --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value <MI_RESOURCE_ID>

Вы также можете изменить конфигурацию хранилища развертывания для существующего приложения.

az functionapp deployment config set Используйте команду для изменения конфигурации хранилища развертывания:

az functionapp deployment config set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --deployment-storage-name <DEPLOYMENT_ACCOUNT_NAME> --deployment-storage-container-name <DEPLOYMENT_CONTAINER_NAME>

Настройка памяти экземпляра

Размер памяти экземпляра, используемый вашим планом Flex Consumption, можно явно задать при создании приложения. Дополнительные сведения о поддерживаемых размерах см. в разделе "Размеры экземпляров".

Чтобы задать размер памяти экземпляра, отличный от значения по умолчанию при создании приложения:

--instance-memory Укажите параметр в командеaz functionapp create. В этом примере создается приложение C# с размером 4096экземпляра:

az functionapp create --instance-memory 4096 --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime dotnet-isolated --runtime-version 8.0

В любой момент можно изменить параметр размера памяти экземпляра, используемый приложением.

В этом примере используется az functionapp scale config set команда для изменения параметра размера памяти экземпляра на 512 МБ:

az functionapp scale config set --resource-group <resourceGroup> --name <APP_NAME> --instance-memory 512

Настройка количества всегда готовых экземпляров

Вы можете задать определенное количество всегда готовых экземпляров для групп с масштабированием на уровне функции или отдельных функций, с целью поддержания функций в загруженном и готовом к выполнению состоянии. Существует три специальные группы, как при масштабировании функций.

  • http — Все HTTP-триггерные функции в приложении масштабируются вместе, образуя собственные экземпляры.
  • durable — Все устойчивые триггерные функции (оркестрация, действие, сущность) в приложении масштабируются вместе в собственные экземпляры.
  • blob — Все функции, реагирующие на события в большой двоичной среде (Event Grid) в приложении, масштабируются вместе в собственные экземпляры.

Используйте http, durableили blob в качестве имени для параметра пары значений имени, чтобы настроить всегда готовые счетчики для этих групп. Для всех остальных функций в приложении необходимо настроить всегда готовый для каждой отдельной функции с помощью формата function:<FUNCTION_NAME>=n.

Чтобы определить одно или несколько всегда готовых обозначений экземпляров, используйте --always-ready-instances параметр с командой az functionapp create . Число экземпляров всегда готовых для всех функций, запускаемых HTTP-триггером, установлено в 10:

az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage <STORAGE_NAME> --runtime <LANGUAGE_RUNTIME> --runtime-version <RUNTIME_VERSION> --flexconsumption-location <REGION> --always-ready-instances http=10

В этом примере устанавливается число экземпляров, всегда находящихся в готовности, равное 3, для всех функций, использующих устойчивые триггеры, и число экземпляров, равное 2, для функции с триггером служебной шины, с именем function5:

az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage <STORAGE_NAME> --runtime <LANGUAGE_RUNTIME> --runtime-version <RUNTIME_VERSION> --flexconsumption-location <REGION> --always-ready-instances durable=3 function:function5=2

Вы также можете изменять всегда готовые экземпляры в существующем приложении, добавляя или удаляя обозначения экземпляров или изменяя существующие числа обозначений экземпляров.

В этом примере команда az functionapp scale config always-ready set используется для изменения количества всегда готовых экземпляров для группы триггеров HTTP на 10:

az functionapp scale config always-ready set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --settings http=10

Чтобы удалить всегда готовые экземпляры, используйте az functionapp scale config always-ready delete команду, как в этом примере, которая удаляет все всегда готовые экземпляры из группы триггеров HTTP, а также функцию с именем hello_world:

az functionapp scale config always-ready delete --resource-group <RESOURCE_GROUP> --name <APP_NAME> --setting-names http function:hello_world

Настройка ограничений параллелизма HTTP

Если вы не устанавливаете определенные ограничения, параметры параллельности по умолчанию для приложений плана Flex Consumption определяются на основе настройки размера экземпляра. Дополнительные сведения см. в разделе параллелизм триггера HTTP.

Вот как можно задать ограничения параллелизма HTTP для существующего приложения:

Используйте команду az functionapp scale config set, чтобы задать конкретные ограничения параллелизма HTTP для вашего приложения, независимо от размера экземпляра.

az functionapp scale config set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --trigger-type http --trigger-settings perInstanceConcurrency=10

В этом примере для уровня параллелизма триггера HTTP задано значение 10. После конкретного задания значения параллелизма HTTP это значение сохраняется, несмотря на любые изменения в параметре размера экземпляра приложения.

Настройка стратегии обновления сайта

План потребления Flex особенно поддерживает две различные стратегии обновления сайта, которые управляют тем, как ваше функциональное приложение обрабатывает развертывания кода и изменения конфигурации. По умолчанию приложения плана потребления Flex используют Recreate стратегию, которая завершает выполнение функций во время развертывания. Можно настроить стратегию RollingUpdate, чтобы обеспечить развертывания системы без простоя. Дополнительные сведения см. в стратегиях обновления сайта в Flex Consumption.

Замечание

Конфигурация стратегии обновления сайта в настоящее время доступна в общедоступной предварительной версии и доступна только с помощью шаблонов Bicep или ARM. Этот параметр нельзя настроить с помощью Azure CLI, портала Azure или Visual Studio Code.

Конфигурация стратегии обновления сайта в настоящее время не поддерживается в Azure CLI. Используйте шаблоны Bicep или ARM, как описано в статье "Настройка стратегии обновления сайта".

Просмотр поддерживаемых в настоящее время регионов

Чтобы просмотреть список регионов, которые в настоящее время поддерживают планы потребления Flex:

  1. Войдите в Azure, если вы еще этого не сделали:

    az login
    

    Команда az login позволяет вам войти в учетную запись Azure.

  2. Используйте команду az functionapp list-flexconsumption-locations, чтобы просмотреть список регионов, которые в настоящее время поддерживают Flex Consumption в алфавитном порядке.

    az functionapp list-flexconsumption-locations --query "sort_by(@, &name)[].{Region:name}" -o table
    

При создании приложения в портал Azure или с помощью Visual Studio Code в настоящее время неподдерживаемые регионы фильтруются из списка регионов.

Мониторинг приложения в Azure

Azure Monitor предоставляет эти различные наборы метрик, чтобы лучше понять, как работает приложение-функция в Azure:

  • Метрики платформы: предоставляет аналитические сведения на уровне инфраструктуры
  • Application Insights: предоставляет аналитические сведения на уровне кода, включая трассировки и журналы ошибок.

Если вы включите Application Insights в приложении, вы можете:

  • Отслеживание подробного времени выполнения и зависимостей
  • Мониторинг производительности отдельных функций
  • Анализ сбоев и исключений
  • Сопоставление метрик платформы с поведением приложения с пользовательскими запросами

Дополнительные сведения см. в разделе Мониторинг функций Azure.

Поддерживаемые метрики

Запустите этот скрипт, чтобы просмотреть все метрики платформы, доступные в настоящее время в приложении:

appId=$(az functionapp show --name <APP_NAME> --resource-group <RESOURCE_GROUP> --query id -o tsv)
az monitor metrics list-definitions --resource $appId --query "[].{Name:name.localizedValue,Value:name.value}" -o table

В этом примере замените <RESOURCE_GROUP> и <APP_NAME> на имена вашей группы ресурсов и приложения-функции соответственно. Этот скрипт получает полный идентификатор приложения и возвращает доступные метрики платформы в таблице.

Просмотр метрик

Текущие метрики можно просмотреть на портале Azure или с помощью Azure CLI.

На портале Azure можно также создавать оповещения метрик и закреплять диаграммы и другие отчеты на панелях мониторинга на портале.

Используйте этот скрипт для создания отчета о текущих метриках для приложения:

appId=$(az functionapp show --name <APP_NAME> --resource-group <RESOURCE_GROUP> --query id -o tsv)

appId=$(az functionapp show --name func-fuxigh6c255de --resource-group exampleRG --query id -o tsv)

echo -e "\nAlways-ready and on-emand execution counts..."
az monitor metrics list --resource $appId --metric "AlwaysReadyFunctionExecutionCount" --interval PT1H --output table
az monitor metrics list --resource $appId --metric "OnDemandFunctionExecutionCount" --interval PT1H --output table

echo -e "\nExecution units (MB-ms) in always-ready and on-emand execution counts..."
az monitor metrics list --resource $appId --metric "AlwaysReadyFunctionExecutionUnits" --interval PT1H --output table
az monitor metrics list --resource $appId --metric "OnDemandFunctionExecutionUnits" --interval PT1H --output table

echo -e "\nAlways-ready resource utilization..."
az monitor metrics list --resource $appId --metric "AlwaysReadyUnits" --interval PT1H --output table

echo -e "\nMemory utilization..."
az monitor metrics list --resource $appId --metric "AverageMemoryWorkingSet" --interval PT1H --output table
az monitor metrics list --resource $appId --metric "MemoryWorkingSet" --interval PT1H --output table

echo -e "\nInstance count and CPU utilization..."
az monitor metrics list --resource $appId --metric "InstanceCount" --interval PT1H --output table
az monitor metrics list --resource $appId --metric "CpuPercentage" --interval PT1H --output table

Дополнительные сведения о метриках для функций Azure см. в статье "Мониторинг функций Azure".

Просмотреть журналы

Когда приложение подключено к Application Insights, вы можете лучше проанализировать производительность приложения и устранить неполадки во время выполнения.

  • Использование "Производительность" для анализа времени отклика и зависимостей
  • Используйте "Сбои" для выявления ошибок, возникающих после миграции
  • Создайте настраиваемые запросы в журналах для анализа поведения функции. Рассмотрим пример.

Используйте этот запрос для сравнения уровня успешности по инстанциям.

requests
| where timestamp > ago(7d)
| summarize successCount=countif(success == true), failureCount=countif(success == false) by bin(timestamp, 1h), cloud_RoleName
| render timechart

Используйте этот запрос для анализа количества экземпляров, которые активно обрабатывали функцию:

let _startTime = ago(20m); //Adjust start time as needed
let _endTime = now(); //Adjust end time as needed
let bins = 1s; //Adjust bin as needed - this will give per second results
requests 
| where operation_Name == 'EventHubsTrigger' //Replace with the name of the function in the function app that you are analyzing
| where timestamp between(_startTime .. _endTime)
| make-series dcount(cloud_RoleInstance) default=0 on timestamp from _startTime to _endTime step bins
| render columnchart

Просмотр затрат

Так как вы можете настроить приложение для настройки производительности и операционных затрат, важно отслеживать затраты, связанные с запуском приложения в плане потребления Flex.

Чтобы просмотреть текущие затраты, выполните следующие действия.

  1. На странице приложения-функции на портале Azure выберите ссылку группы ресурсов.

  2. На странице группы ресурсов выберите анализ затрат на управление>затратами.

  3. Просмотрите текущие затраты и траекторию стоимости самого приложения.

  4. При необходимости выберите "Оповещения по управлению>затратами ", а затем + "Добавить ", чтобы создать новое оповещение для приложения.

Точная настройка приложения

План потребления Flex предоставляет несколько параметров, которые можно настроить для уточнения производительности приложения. Фактические затраты и производительность могут отличаться в зависимости от шаблонов и конфигурации рабочих нагрузок для конкретного приложения. Например, более высокие размеры экземпляров памяти могут повысить производительность операций с большим объемом памяти, но при более высокой стоимости за активный период.

Ниже приведены некоторые корректировки, которые можно настроить для точной настройки производительности и затрат: