Краткое руководство. Создание функции 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
    

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

    Снимок экрана: вывод окна терминала при локальном выполнении функции.

    Примечание.

    Если результат 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 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

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

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