Краткое руководство. Создание функции Python в Azure из командной строки

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

В этой статье используется модель программирования Python версии 2 для Функции Azure, которая обеспечивает подход на основе декоратора для создания функций. Дополнительные сведения о модели программирования Python версии 2 см. в справочном руководстве разработчика

Выполнение этого краткого руководства предполагает небольшую дополнительную плату в несколько центов США в учетной записи Azure.

Существует также версия этой статьи для Visual Studio Code.

Настройка локальной среды

Перед началом работы с этой статьей необходимо подготовить следующее:

Установка основных инструментов Функций Azure

Рекомендуемый способ установки основных средств зависит от операционной системы локального компьютера разработки.

Следующая процедура устанавливает Core Tools версии v4.x с помощью установщика Windows (MSI). Дополнительные сведения о других установщиках на основе пакетов, см. в файле readme для Core Tools.

Скачайте и запустите установщик Core Tools для используемой версии Windows:

Если вы ранее использовали установщик 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.

  1. Выполните следующую func init команду, чтобы создать проект функций Python версии 2 в виртуальной среде.

    func init --python
    

    Теперь среда содержит различные файлы для проекта, включая файлы конфигурации с именем local.settings.json и host.json. Файл local.settings.json может содержать секреты, скачанные из Azure, поэтому файл по умолчанию исключен из системы управления версиями в GITIGNORE-файле.

  2. Добавьте функцию в проект с помощью приведенной ниже команды, где аргумент --name — уникальное имя функции (HttpExample), а аргумент --template позволяет указать триггер функции (HTTP).

    func new --name HttpExample --template "HTTP trigger" --authlevel "anonymous"
    

    Если появится запрос, выберите параметр ANONYMOUS . func new добавляет конечную точку триггера HTTP с именем HttpExample в function_app.py файл, который доступен без проверки подлинности.

Локальное выполнение функции

  1. Выполните функцию, запустив локальное хост-приложение среды выполнения Функций Azure из папки LocalFunctionProj.

    func start
    

    Ближе к концу выходных данных появятся следующие строки:

    Screenshot of terminal window output when running function locally.

    Примечание.

    Если результат HttpExample не похож на пример выше, скорее всего, вы запустили основное приложение из папки, отличной от корневой папки проекта. В этом случае остановите хост-приложение клавишами CTRL+C, перейдите в корневую папку проекта и снова выполните указанную выше команду.

  2. Скопируйте URL-адрес функции HTTP из этих выходных данных в браузер и добавьте строку ?name=<YOUR_NAME>запроса, выполнив полный URL-адрес, например http://localhost:7071/api/HttpExample?name=Functions. Браузер отобразит ответное сообщение, содержащее значение строки запроса. Терминал, в котором вы запустили проект, также выводит данные журнала при выполнении запросов.

  3. Когда все будет готово, нажмите клавиши CTRL+C и введите y, чтобы отключить хост-приложение функции.

Создание вспомогательных ресурсов Azure для функции

Прежде чем развернуть код функции в Azure, необходимо создать три ресурса:

  • группу ресурсов — логический контейнер связанных ресурсов;
  • учетную запись хранения — для сохранения состояния и других сведений о проектах;
  • Приложение-функция, которое предоставляет окружение для выполнения кода вашей функции. Оно сопоставляется с локальным проектом функций и позволяет группировать функции в логические единицы, чтобы упростить развертывание, масштабирование и совместное использование ресурсов, а также управление ими.

Чтобы создать эти элементы, выполните следующие команды: Поддерживается Azure CLI и PowerShell.

  1. При необходимости войдите в Azure.

    az login
    

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

  2. Создайте группу ресурсов с именем AzureFunctionsQuickstart-rg в нужном регионе.

    az group create --name AzureFunctionsQuickstart-rg --location <REGION>
    

    Чтобы создать группу ресурсов, выполните команду az group create. В приведенной выше команде замените <REGION> на ближайший к вам регион. Укажите его код, полученный с помощью команды az account list-locations.

    Примечание.

    Вы не можете разместить приложения Windows и Linux в одной группе ресурсов. Если у вас есть группа ресурсов AzureFunctionsQuickstart-rg с приложением-функцией Windows или веб-приложением, необходимо использовать другую группу ресурсов.

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

    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 указывает учетную запись общего назначения, которая поддерживается Функциями.

    В этом кратком руководстве с учетной записи хранения будет взиматься плата лишь в несколько центов США.

  4. Создайте приложение-функцию в 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 Аналитика в той же группе ресурсов, с помощью которой можно отслеживать приложение-функцию и просматривать журналы. Дополнительные сведения см. в разделе Мониторинг функций Azure. Этот экземпляр не создает затраты, пока вы не активируете его.

Развертывание проекта функций в Azure

После того как вы успешно создадите приложение-функцию в Azure, вы сможете развернуть локальный проект функций с помощью команды func azure functionapp publish.

В следующем примере замените <APP_NAME> на имя своего приложения.

func azure functionapp publish <APP_NAME>

Команда publish показывает результаты, аналогичные приведенным ниже (усечены для простоты):

...

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

Следующие шаги

Наличие проблем с этой статьей?