Краткое руководство. Создание функции Python в Azure из командной строки
В этой статье используются средства командной строки для создания функции Python, которая отвечает на HTTP-запросы. После тестирования кода в локальной среде его необходимо развернуть в бессерверной среде Функций Azure.
В этой статье используется модель программирования Python версии 2 для Функции Azure, которая обеспечивает подход на основе декоратора для создания функций. Дополнительные сведения о модели программирования Python версии 2 см. в справочном руководстве разработчика
Выполнение этого краткого руководства предполагает небольшую дополнительную плату в несколько центов США в учетной записи Azure.
Существует также версия этой статьи для Visual Studio Code.
Настройка локальной среды
Перед началом работы с этой статьей необходимо подготовить следующее:
Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
Один из следующих инструментов для создания ресурсов Azure:
Azure CLI версии 2.4 или более поздней.
Модуль Azure PowerShell 5.9.0 или более поздней версии.
Эмулятор хранилища Azurite. Хотя вы также можете использовать фактическую учетную запись служба хранилища Azure, в статье предполагается, что вы используете этот эмулятор.
Установка основных инструментов Функций 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-bit
Если вы ранее использовали установщик Windows (MSI) для установки основных инструментов в Windows, перед установкой последней версии удалите старую версию из команды "Добавить программы".
func --version
Используйте команду, чтобы убедиться, что версия Core Tools не менее4.0.5530
.
Создание и активация виртуальной среды
В подходящей папке выполните следующие команды, чтобы создать и активировать виртуальную среду с именем .venv
. Убедитесь, что вы используете версию Python, поддерживаемую Функции Azure.
python -m venv .venv
source .venv/bin/activate
Если пакет venv не установлен Python для вашего дистрибутива Linux, выполните следующую команду:
sudo apt-get install python3-venv
Все последующие команды будут выполняться в этой активированной виртуальной среде.
Создание локальной функции
В Функциях Azure проект функций представляет собой контейнер для одной или нескольких отдельных функций, каждая из которых реагирует на конкретный триггер. Все функции в проекте совместно используют те же локальные конфигурации и конфигурации размещения.
В этом разделе описано, как создать проект функции и добавить активированную функцию HTTP.
Выполните следующую
func init
команду, чтобы создать проект функций Python версии 2 в виртуальной среде.func init --python
Теперь среда содержит различные файлы для проекта, включая файлы конфигурации с именем local.settings.json и host.json. Файл local.settings.json может содержать секреты, скачанные из Azure, поэтому файл по умолчанию исключен из системы управления версиями в GITIGNORE-файле.
Добавьте функцию в проект с помощью приведенной ниже команды, где аргумент
--name
— уникальное имя функции (HttpExample), а аргумент--template
позволяет указать триггер функции (HTTP).func new --name HttpExample --template "HTTP trigger" --authlevel "anonymous"
Если появится запрос, выберите параметр ANONYMOUS .
func new
добавляет конечную точку триггера HTTP с именемHttpExample
вfunction_app.py
файл, который доступен без проверки подлинности.
Локальное выполнение функции
Выполните функцию, запустив локальное хост-приложение среды выполнения Функций Azure из папки LocalFunctionProj.
func start
Ближе к концу выходных данных появятся следующие строки:
Примечание.
Если результат HttpExample не похож на пример выше, скорее всего, вы запустили основное приложение из папки, отличной от корневой папки проекта. В этом случае остановите хост-приложение клавишами CTRL+C, перейдите в корневую папку проекта и снова выполните указанную выше команду.
Скопируйте URL-адрес функции HTTP из этих выходных данных в браузер и добавьте строку
?name=<YOUR_NAME>
запроса, выполнив полный URL-адрес, напримерhttp://localhost:7071/api/HttpExample?name=Functions
. Браузер отобразит ответное сообщение, содержащее значение строки запроса. Терминал, в котором вы запустили проект, также выводит данные журнала при выполнении запросов.Когда все будет готово, нажмите клавиши CTRL+C и введите
y
, чтобы отключить хост-приложение функции.
Создание вспомогательных ресурсов Azure для функции
Прежде чем развернуть код функции в Azure, необходимо создать три ресурса:
- группу ресурсов — логический контейнер связанных ресурсов;
- учетную запись хранения — для сохранения состояния и других сведений о проектах;
- Приложение-функция, которое предоставляет окружение для выполнения кода вашей функции. Оно сопоставляется с локальным проектом функций и позволяет группировать функции в логические единицы, чтобы упростить развертывание, масштабирование и совместное использование ресурсов, а также управление ими.
Чтобы создать эти элементы, выполните следующие команды: Поддерживается Azure CLI и PowerShell.
При необходимости войдите в Azure.
az login
Команда
az login
входит в учетную запись Azure.Создайте группу ресурсов с именем
AzureFunctionsQuickstart-rg
в нужном регионе.az group create --name AzureFunctionsQuickstart-rg --location <REGION>
Чтобы создать группу ресурсов, выполните команду az group create. В приведенной выше команде замените
<REGION>
на ближайший к вам регион. Укажите его код, полученный с помощью команды az account list-locations.Примечание.
Вы не можете разместить приложения Windows и Linux в одной группе ресурсов. Если у вас есть группа ресурсов
AzureFunctionsQuickstart-rg
с приложением-функцией Windows или веб-приложением, необходимо использовать другую группу ресурсов.В группе ресурсов и регионе создайте учетную запись хранения общего назначения.
az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group AzureFunctionsQuickstart-rg --sku Standard_LRS
Создайте учетную запись хранения с помощью команды az storage account create.
В предыдущем примере замените
<STORAGE_NAME>
соответствующим именем, которое является уникальным в службе хранилища Azure. Имена должны содержать от трех до 24 символов и только в нижнем регистре.Standard_LRS
указывает учетную запись общего назначения, которая поддерживается Функциями.В этом кратком руководстве с учетной записи хранения будет взиматься плата лишь в несколько центов США.
Создайте приложение-функцию в Azure.
az functionapp create --resource-group AzureFunctionsQuickstart-rg --consumption-plan-location westeurope --runtime python --runtime-version <PYTHON_VERSION> --functions-version 4 --name <APP_NAME> --os-type linux --storage-account <STORAGE_NAME>
Чтобы создать приложение-функцию в Azure, выполните команду az functionapp create. Необходимо указать
--os-type linux
, так как функции Python выполняются только в Linux.В предыдущем примере замените
<APP_NAME>
подходящим глобально уникальным именем приложения. Это<APP_NAME>
также поддомен по умолчанию для приложения-функции. Убедитесь, что заданное значение<PYTHON_VERSION>
является версией, поддерживаемой функциями и той же версией, которую вы использовали во время локальной разработки.Эта команда создает приложение-функцию, работающее в указанной языковой среде выполнения в рамках плана использования Функций Azure, который не предусматривает плату за объем, используемый здесь. Команда также создает связанный экземпляр приложение Azure Insights в той же группе ресурсов, с помощью которой можно отслеживать приложение-функцию и просматривать журналы. Дополнительные сведения см. в разделе Мониторинг функций Azure. Этот экземпляр не создает затраты, пока вы не активируете его.
Развертывание проекта функций в 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
Вызов функции в Azure
Функция использует триггер HTTP, поэтому ее необходимо вызывать через HTTP-запрос по URL-адресу в браузере или с помощью такого средства, как curl.
Скопируйте полный URL-адрес вызова Invoke URL, показанный в выходных данных команды publish
, в адресную строку браузера, добавив параметр запроса ?name=Functions
. В браузере должны отображаться выходные данные, аналогичные данным при локальном запуске функции.
Очистка ресурсов
Если вы намерены перейти к следующему шагу и добавить выходную привязку очереди службы хранилища Azure, можете сохранить все ресурсы, которые пригодятся на этом этапе.
В противном случае используйте следующую команду, чтобы удалить группу ресурсов и все содержащиеся в ней ресурсы и избежать дополнительных расходов.
az group delete --name AzureFunctionsQuickstart-rg
Следующие шаги
Наличие проблем с этой статьей?