Краткое руководство. Создание функции Python, активируемой HTTP, в AzureQuickstart: Create an HTTP triggered Python function in Azure

В этой статье показано, как использовать программы командной строки для создания проекта Python, выполняющегося в решении "Функции Azure".This article shows you how to use command-line tools to create a Python project that runs in Azure Functions. Вы также создаете функцию, запускаемую по HTTP-запросу.You also create a function that is triggered by an HTTP request. После запуска в локальной среде вы опубликуете проект для выполнения в качестве независимой от сервера функции в Azure.After running locally, you publish your project to run as a serverless function in Azure.

Эта статья представляет собой первое из двух кратких руководств Python по Функциям Azure.This article is the first of two Python quickstarts for Azure Functions. Выполнив действия из этого краткого руководства, вы сможете добавить выходную привязку очереди службы хранилища Azure в свою функцию.After you complete this quickstart, you can add an Azure Storage queue output binding to your function.

Существует также версия этой статьи для Visual Studio Code.There is also a Visual Studio Code-based version of this article.

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

Перед началом работы вам следует:Before you start, you must:

Создание и активация виртуальной средыCreate and activate a virtual environment

Для локальной разработки функций Python следует использовать среду Python 3.7.You should use a Python 3.7 environment to locally develop Python functions. Для создания и активации виртуальной среды с именем .venv выполните следующие команды.Run the following commands to create and activate a virtual environment named .venv.

Примечание

Если модуль venv не был установлен Python для вашего дистрибутива Linux, вы можете установить его с помощью следующей команды:If Python didn't install venv on your Linux distribution, you can install it using the following command:

sudo apt-get install python3-venv

Bash:Bash:

python -m venv .venv
source .venv/bin/activate

Командная строка PowerShell или Windows:PowerShell or a Windows command prompt:

py -m venv .venv
.venv\scripts\activate

После активации виртуальной среды выполните в ней остальные команды.Now that you activated the virtual environment, run the remaining commands in it. Чтобы выйти из виртуальной среды, выполните deactivate.To get out of the virtual environment, run deactivate.

Создание локального проекта службы "Функции"Create a local functions project

Проект службы "Функции" может содержать несколько функций, которые совместно используют те же локальные конфигурации и конфигурации размещения.A functions project can have multiple functions that all share the same local and hosting configurations.

В виртуальной среде выполните следующую команду:In the virtual environment, run the following commands:

func init MyFunctionProj --python
cd MyFunctionProj

Команда func init создает папку MyFunctionProj.The func init command creates a MyFunctionProj folder. Проект Python в этой папке пока не содержит функций.The Python project in this folder doesn't yet have any functions. Вы добавите их позже.You'll add them next.

Создание функцииCreate a function

Чтобы добавить функцию в проект, выполните следующую команду:To add a function to your project, run the following command:

func new --name HttpTrigger --template "HTTP trigger"

Эта команда создает вложенную папку HttpTrigger, которая содержит следующие файлы:This commands creates a subfolder named HttpTrigger, which contains the following files:

  • function.json. Файл конфигурации, который определяет функцию, триггер и другие привязки.function.json: configuration file that defines the function, trigger, and other bindings. Убедитесь, что значение scriptFile в этом файле указывает на файл, содержащий функцию, а триггер вызова и привязки определены в массиве bindings.Notice that in this file, the value for scriptFile points to the file containing the function, and the bindings array defines the invocation trigger and bindings.

    Каждой привязке требуется направление, тип и уникальное имя.Each binding requires a direction, type and a unique name. В HTTP-триггере есть входная привязка типа httpTrigger и выходная привязка типа http.The HTTP trigger has an input binding of type httpTrigger and output binding of type http.

  • __init__.py. Файл скрипта, который является функцией, активируемой HTTP-запросами.__init__.py: script file that is your HTTP triggered function. Обратите внимание, что этот сценарий имеет значение по умолчанию main().Notice that this script has a default main(). Данные HTTP из триггера передаются в функцию с помощью req с именем binding parameter.HTTP data from the trigger passes to the function using the req named binding parameter. req, определенный в файле function.json, является экземпляром класса azure.functions.HttpRequest.The req, which is defined in function.json, is an instance of the azure.functions.HttpRequest class.

    Возвращаемый объект, определенный как $return в файле function.json, — это экземпляр класса azure.functions.HttpResponse.The return object, defined as $return in function.json, is an instance of azure.functions.HttpResponse class. Дополнительные сведения см. в статье Триггеры и привязки HTTP в службе "Функции Azure".To learn more, see Azure Functions HTTP triggers and bindings.

Теперь новую функцию можно выполнить на локальном компьютере.Now you can run the new function on your local computer.

Локальное выполнение функцииRun the function locally

Эта команда запускает приложение-функцию с помощью среды выполнения Функций Azure (func.exe):This command starts the function app using the Azure Functions runtime (func.exe):

func host start

Вы должны увидеть следующие выходные данные:You should see the following information written to the output:

Http Functions:

        HttpTrigger: http://localhost:7071/api/HttpTrigger    

Скопируйте URL-адрес функции HttpTrigger из этих выходных данных и вставьте его в адресную строку браузера.Copy the URL of your HttpTrigger function from this output and paste it into your browser's address bar. Добавьте строку запроса ?name=<yourname> в этот URL-адрес и выполните запрос.Append the query string ?name=<yourname> to this URL and execute the request. Ниже показан снимок экрана на запрос GET, возвращаемый в браузер локальной функцией.The following screenshot shows the response to the GET request that the local function returns to the browser:

Проверьте локальное тестирование в браузере

Нажмите клавиши CTRL+C, чтобы завершить выполнение приложения-функции.Use Ctrl+C to shut down your function app execution.

Теперь, когда функция запущена локально, вы можете развернуть код функции в Azure.Now that you have run your function locally, you can deploy your function code to Azure.
Перед развертыванием приложения необходимо создать некоторые ресурсы Azure.Before you can deploy your app, you'll need to create some Azure resources.

Создание группы ресурсовCreate a resource group

Создайте группу ресурсов с помощью команды az group create.Create a resource group with the az group create command. Группа ресурсов Azure — это логический контейнер, в котором происходит развертывание ресурсов Azure (приложений-функций, баз данных и учетных записей хранения) и управление ими.An Azure resource group is a logical container into which Azure resources like function apps, databases, and storage accounts are deployed and managed.

В следующем примере создается группа ресурсов myResourceGroup.The following example creates a resource group named myResourceGroup.
Если вы не используете Cloud Shell, сначала войдите с помощью az login.If you aren't using Cloud Shell, sign in first using az login.

az group create --name myResourceGroup --location westeurope

Группу ресурсов и ресурсы целесообразно создавать в ближайшем к вам регионе.You generally create your resource group and the resources in a region near you.

Создание учетной записи хранения AzureCreate an Azure Storage account

В службе "Функции" используется учетная запись хранения Azure общего назначения для сохранения состояния и других сведений о функциях.Functions uses a general-purpose account in Azure Storage to maintain state and other information about your functions. Создайте учетную запись хранения общего назначения в созданной вами группе ресурсов с помощью команды az storage account create.Create a general-purpose storage account in the resource group you created by using the az storage account create command.

В следующей команде замените <storage_name> глобально уникальным именем своей учетной записи хранения везде, где встречается этот заполнитель.In the following command, substitute a globally unique storage account name where you see the <storage_name> placeholder. Имя учетной записи хранения должно содержать от 3 до 24 символов и состоять только из цифр и строчных букв.Storage account names must be between 3 and 24 characters in length and may contain numbers and lowercase letters only.

az storage account create --name <storage_name> --location westeurope --resource-group myResourceGroup --sku Standard_LRS

Создание приложения-функции в AzureCreate a function app in Azure

Приложение-функция предоставляет среду для выполнения кода функции.A function app provides an environment for executing your function code. Это позволяет группировать функции в логические единицы, чтобы упростить управление, развертывание и совместное использование ресурсов.It lets you group functions as a logical unit for easier management, deployment, and sharing of resources.

Выполните следующую команду:Run the following command. Замените <APP_NAME> уникальным именем приложения-функции.Replace <APP_NAME> with a unique function app name. Замените <STORAGE_NAME> на имя учетной записи хранения.Replace <STORAGE_NAME> with a storage account name. <APP_NAME> также является доменом DNS по умолчанию для приложения-функции.The <APP_NAME> is also the default DNS domain for the function app. Это имя должно быть уникальным среди всех приложений Azure.This name needs to be unique across all apps in Azure.

Примечание

Вы не можете разместить приложения Windows и Linux в одной группе ресурсов.You can't host Linux and Windows apps in the same resource group. Если у вас есть группа ресурсов myResourceGroup с приложением-функцией Windows или веб-приложением, необходимо использовать другую группу ресурсов.If you have an existing resource group named myResourceGroup with a Windows function app or web app, you must use a different resource group.

az functionapp create --resource-group myResourceGroup --os-type Linux \
--consumption-plan-location westeurope  --runtime python --runtime-version 3.7 \
--name <APP_NAME> --storage-account  <STORAGE_NAME>

Предыдущая команда создает приложение-функцию, в которой используется Python 3.7.4.The preceding command creates a function app running Python 3.7.4. Кроме того, эта команда подготавливает связанный экземпляр Application Insights Azure в той же группе ресурсов.It also provisions an associated Azure Application Insights instance in the same resource group. Этот экземпляр можно использовать для мониторинга приложения-функции и просмотра журналов.You can use this instance to monitor your function app and view logs.

Теперь вы готовы опубликовать локальный проект функций в приложение-функцию в Azure.You're now ready to publish your local functions project to the function app in Azure.

Развертывание проекта приложения-функции в облако AzureDeploy the function app project to Azure

Создав в Azure приложение-функцию, вы можете развернуть код проекта в Azure с помощью команды Core Tools func azure functionapp publish.After you create the function app in Azure, you can use the func azure functionapp publish Core Tools command to deploy your project code to Azure. В этом примере следует заменить <APP_NAME> именем приложения.In this example, replace <APP_NAME> with the name of your app.

func azure functionapp publish <APP_NAME> --build remote

Параметр --build remote позволяет удаленно выполнить сборку проекта Python в Azure из файлов в пакете развертывания (что рекомендуется).The --build remote option builds your Python project remotely in Azure from the files in the deployment package, which is recommended.

Появится выходные данные, аналогичные указанному ниже сообщению.You'll see output similar to the following message. Они усекаются для удобства чтения.It's truncated here so you can read it better:

Getting site publishing info...
...

Preparing archive...
Uploading content...
Upload completed successfully.
Deployment completed successfully.
Syncing triggers...
Functions in myfunctionapp:
    HttpTrigger - [httpTrigger]
        Invoke url: https://myfunctionapp.azurewebsites.net/api/httptrigger?code=cCr8sAxfBiow548FBDLS1....

Вы можете скопировать значение Invoke url для HttpTrigger и использовать его для проверки функции в Azure.You can copy the Invoke url value for your HttpTrigger and use it to verify your function in Azure. URL-адрес содержит значение строки запроса code, которое является ключом функции, что затрудняет вызов конечных точек триггера HTTP в Azure другими пользователями.The URL contains a code query string value that is your function key, which makes it difficult for others to call your HTTP trigger endpoint in Azure.

Проверка функции в AzureVerify the function in Azure

Для проверки развернутой функции используйте cURL.Use cURL to verify the deployed function. С помощью URL-адреса и ключа функции, скопированным на предыдущем шаге, добавьте строку запроса &name=<yourname> к URL-адресу.Using the URL, including the function key, that you copied from the previous step, append the query string &name=<yourname> to the URL.

Использование cURL для вызова функции в Azure

Кроме того, вы можете вставить скопированный URL-адрес с ключом функции в адресную строку в веб-браузере.You can also paste the copied URL, including the function key, into the address bar of your web browser. Перед выполнением запроса добавьте в URL-адрес строку запроса &name=<yourname>.Again, append the query string &name=<yourname> to the URL before you execute the request.

Использование веб-браузера для вызова функции

Примечание

Чтобы просматривать журналы для опубликованного приложения Python, которые ведутся практически в режиме реального времени, используйте Live Metrics Stream для Application Insights.To view near real-time logs for a published Python app, use the Application Insights Live Metrics Stream.

Дополнительная информацияNext steps

Вы создали проект функций Python с функцией, активируемой HTTP-запросами, запустили ее на своем локальном компьютере и развернули в Azure.You've created a Python functions project with an HTTP triggered function, run it on your local machine, and deployed it to Azure. Теперь расширьте свою функцию путем...Now, extend your function by...