Краткое руководство. Создание функции Python в Azure с помощью Visual Studio Code

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

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

Примечание

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

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

Существует также версия этой статьи для интерфейса командной строки.

Настройка среды

Перед началом работы убедитесь, что выполнены следующие требования:

  • Расширение Функции Azure для Visual Studio Code версии 1.8.1 или более поздней.

  • Эмулятор локального хранения расширения Azurite версии 3 . Хотя вы также можете использовать фактическую учетную запись хранения Azure, в этой статье предполагается, что вы используете эмулятор Azurite.

Создание локального проекта

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

  1. Щелкните значок Azure на панели действий. Затем в области Рабочая область (локальная) нажмите кнопку + и выберите пункт Создать функцию в раскрывающемся списке. В ответ на запрос выберите вариант Создать проект.

    Снимок экрана: окно создания проекта.

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

  1. Введите следующие сведения по соответствующим запросам:

    prompt Выбор
    Выбор языка Выберите Python.
    Выберите интерпретатор Python для создания виртуальной среды Выберите предпочтительный интерпретатор Python. Если нужный вариант не отображается, введите полный путь к двоичному файлу Python.
    Выбор шаблона для первой функции проекта Выберите HTTP trigger.
    Provide a function name (Укажите имя функции) Введите HttpExample.
    Уровень авторизации Выберите Anonymous, что позволит любому пользователю вызывать конечную точку функции. Дополнительные сведения об уровне авторизации см. в разделе Ключи авторизации.
    Выбор способа открытия проекта Выберите Add to workspace.
  2. Используя эти сведения, Visual Studio Code создает проект функций Azure с триггером HTTP. Файлы локального проекта можно просмотреть в Explorer. Дополнительные сведения о созданных файлах см. в разделе Созданные файлы проекта.

  1. Введите следующие сведения по соответствующим запросам:

    prompt Выбор
    Выбор языка Выберите Python (Programming Model V2).
    Выберите интерпретатор Python для создания виртуальной среды Выберите предпочтительный интерпретатор Python. Если нужный вариант не отображается, введите полный путь к двоичному файлу Python.
    Выбор способа открытия проекта Выберите Add to workspace.
  2. Visual Studio Code использует предоставленные сведения и создает проект Функции Azure.

  3. Откройте созданный function_app.py файл проекта, содержащий ваши функции.

  4. Раскомментируйте функцию test_function , которая является функцией, активаемой HTTP.

  5. Замените app.route() вызов метода следующим кодом:

    @app.route(route="hello", auth_level=func.AuthLevel.ANONYMOUS)
    

    Этот код позволяет вызывать конечную точку функции HTTP в Azure без необходимости предоставлять ключи авторизации. Для локального выполнения не требуются ключи авторизации.

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

    @app.function_name(name="HttpTrigger1")
    @app.route(route="hello", auth_level=func.AuthLevel.ANONYMOUS)
    def test_function(req: func.HttpRequest) -> func.HttpResponse:
        logging.info('Python HTTP trigger function processed a request.')
    
        name = req.params.get('name')
        if not name:
            try:
                req_body = req.get_json()
            except ValueError:
                pass
            else:
                name = req_body.get('name')
    
        if name:
            return func.HttpResponse(f"Hello, {name}. This HTTP triggered function executed successfully.")
        else:
            return func.HttpResponse(
                "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.",
                status_code=200
            ) 
    
  6. Откройте файл проекта local.settings.json и обновите AzureWebJobsStorage параметр, как показано в следующем примере:

    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    

    Это указывает локальному узлу Функций использовать эмулятор хранения для подключения к хранилищу, требуемого в настоящее время для модели версии 2. При публикации проекта в Azure вы будете использовать учетную запись хранения по умолчанию. Если вместо этого вы используете учетную запись хранения Azure, задайте строку подключения к учетной записи хранения здесь.

Запуск эмулятора

  1. В Visual Studio Code нажмите клавишу F1, чтобы открыть палитру команд. В палитре команд найдите и щелкните Azurite: Start.

  2. Проверьте нижнюю панель и убедитесь, что службы эмуляции Azurite запущены. Если это так, теперь можно запустить функцию локально.

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

Visual Studio Code интегрируется с Azure Functions Core Tools, чтобы перед публикацией в Azure можно было запустить этот проект на локальном компьютере разработки.

  1. Чтобы запустить функцию локально, нажмите клавишу F5 или значок Выполнить и отладка на панели действий слева. На панели Терминал отобразятся выходные данные из Core Tools. Ваше приложение запускается в панели Терминал. Отобразится URL-адрес конечной точки активируемой HTTP-запросом функции, которая выполняется локально.

    Снимок экрана: выходные данные VS Code локальной функции.

    При возникновении проблем с запуском в Windows убедитесь, что в качестве терминала по умолчанию для Visual Studio Code не используется оболочка WSL.

  2. Во время выполнения Core Tools в Терминале щелкните значок Azure на панели действий. В области Рабочая область разверните узел Локальный проект>Функции. Щелкните правой кнопкой мыши (Windows) или CTRL— щелкните (macOS) новую функцию и выберите команду Выполнить функцию сейчас....

    Вариант

  3. В поле Ввести текст запроса вы увидите значение текста запроса { "name": "Azure" }. Нажмите клавишу ВВОД, чтобы отправить это сообщение запроса в свою функцию.

  4. При выполнении функции локально и возврате ответа в Visual Studio Code отобразится уведомление. Сведения о выполнении функции отображаются на панели Терминал.

  5. Откройте панель терминала и нажмите клавиши CTRL+C, чтобы остановить основные инструменты и отключить отладчик.

Убедившись, что функция выполняется правильно на локальном компьютере, опубликуйте проект в Azure с помощью Visual Studio Code.

Вход в Azure

Прежде чем публиковать приложение, необходимо войти в Azure.

  1. Если вы не выполнили вход, щелкните значок Azure на панели действий. Затем в области Ресурсы выберите Вход в Azure....

    Снимок экрана с окном входа в Azure в VS Code.

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

  2. При появлении запроса в браузере выберите учетную запись Azure и войдите в нее с помощью учетных данных. Если вы создаете новую учетную запись, вы можете выполнить вход после ее создания.

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

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

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

  1. Щелкните значок Azure на панели действий. Затем в области Ресурсы щелкните значок + и выберите вариант Создать приложение-функцию в Azure.

    Создание ресурса в подписке Azure

  2. Введите следующие сведения по соответствующим запросам:

    prompt Выбор
    Выбор подписки Выберите подписку, которую нужно использовать. Эта подсказка не отобразится, если в области Ресурсы отображается только одна подписка.
    Ввод глобально уникального имени для приложения-функции Введите имя, допустимое в пути URL-адреса. Имя, которое вы вводите, проверяется, чтобы убедиться, что оно уникально в функциях Azure.
    Выбор стека среды выполнения Выберите версию языка, которая запускалась локально.
    Выбор расположения для новых ресурсов Выберите регион для приложения-функции.

    В текущей предварительной версии модели программирования версии 2 выберите регион из одного из следующих расположений: Центральная Франция, Центрально-западная часть США, Северная Европа, Восточный Китай, Восточная часть США или Центрально-северная часть США.

    Расширение показывает на панели Azure: журнал действий состояние отдельных ресурсов по мере их создания в Azure.

    Журнал создания ресурсов Azure

  3. После завершения создания в вашей подписке будут созданы приведенные ниже ресурсы Azure. Имена ресурсов основаны на имени приложения-функции.

    • Группа ресурсов — логический контейнер связанных ресурсов.
    • Учетная запись хранения Azure уровня "Стандартный" для сохранения состояния и других сведений о проектах.
    • приложение-функцию — среду для выполнения кода функции. Приложение-функция позволяет группировать функции в логические единицы и упростить развертывание, масштабирование и совместное использование ресурсов, а также управление ими в рамках единого плана размещения.
    • План службы приложений, который определяет базовый узел для приложения-функции.
    • Экземпляр Application Insights, подключенный к приложению-функции, который отслеживает использование функций в приложении.

    После создания приложения-функции и применения пакета развертывания отобразится уведомление.

    Совет

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

Развертывание проекта в Azure

Важно!

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

  1. Щелкните значок Azure на панели действий, а затем в области Рабочая область выберите папку проекта и нажмите кнопку Развернуть....

    Развертывание проекта из рабочей области Visual Studio Code

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

  3. После завершения развертывания выберите Просмотреть выходные данные, чтобы просмотреть результаты создания и развертывания, включая созданные ресурсы Azure. Если вы пропустили уведомление, щелкните значок колокольчика в правом нижнем углу, чтобы снова просмотреть его.

    Снимок экрана с окном

Обновление параметров приложения

Чтобы использовать модель Python версии 2 в приложении-функции, необходимо добавить новый параметр приложения в Azure с именем AzureWebJobsFeatureFlags со значением EnableWorkerIndexing. Этот параметр уже находится в файле local.settings.json.

  1. В Visual Studio Code нажмите клавишу F1, чтобы открыть палитру команд. В палитре команд найдите и щелкните Azure Functions: Add New Setting....

  2. Выберите новое приложение-функцию, введите AzureWebJobsFeatureFlags имя нового параметра приложения и нажмите клавишу ВВОД.

  3. Введите EnableWorkerIndexing значение и нажмите клавишу ВВОД.

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

Запуск функции в Azure

  1. Вернувшись в область Ресурсы на боковой панели, разверните узел подписки, узел нового приложения-функции и узел Функции. Щелкните правой кнопкой мыши (в Windows) или используйте Ctrl-щелчок (в macOS) на функции HttpExample и выберите Выполнить функцию... .

    Снимок экрана: выполнение функции в Azure из Visual Studio Code.

  2. В поле Ввести текст запроса вы увидите значение текста запроса { "name": "Azure" }. Нажмите клавишу ВВОД, чтобы отправить это сообщение запроса в свою функцию.

  3. При выполнении функции в Azure и возврате ответа в Visual Studio Code отобразится уведомление.

Очистка ресурсов

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

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

  1. В Visual Studio Code нажмите клавишу F1, чтобы открыть палитру команд. В палитре команд найдите и щелкните Azure: Open in portal.

  2. Выберите приложение-функцию и нажмите клавишу ВВОД. Страница приложения-функции откроется на портале Azure.

  3. На вкладке Обзор выберите именованную ссылку рядом с полем Группа ресурсов.

    Снимок экрана: выбор группы ресурсов, которую требуется удалить со страницы приложения-функции.

  4. На странице Группа ресурсов просмотрите список включенных ресурсов и убедитесь, что именно их нужно удалить.

  5. Выберите Удалить группу ресурсов и следуйте инструкциям.

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

Дополнительные сведения о затратах на использование Функций см. в статье Оценка затрат на план потребления.

Дальнейшие действия

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

Возникли проблемы? Сообщите нам свое мнение.