Поделиться через


Руководство. Функция Python с Хранилище BLOB-объектов Azure в качестве входных данных

В этом руководстве описано, как настроить функцию Python с хранилищем BLOB-объектов Azure в качестве входных данных, выполнив следующие задачи:

  • Используйте Visual Studio Code для создания проекта функции Python.
  • Измените коды, чтобы добавить привязку входной функции BLOB-объектов хранилища.
  • Используйте Visual Studio Code для локального запуска функции.
  • Используйте Azure CLI для создания подключения между функцией Azure и BLOB-объектом хранилища с помощью соединителя службы.
  • Используйте Visual Studio для развертывания функции.

Общие сведения о компонентах проекта функции в этом руководстве:

Компонент проекта Выбор или решение
Исходная служба функции Azure;
Целевая служба Azure Storage Blob.
Привязка функции Триггер HTTP, BLOB-объект хранилища в качестве входных данных
Тип проверки подлинности локального проекта Строка подключения
Тип проверки подлинности облачной функции Управляемое удостоверение, назначаемое системой

Предупреждение

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

Необходимые компоненты

Создание проекта функции Python

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

Prompt Выбор
Выбор языка Выберите Python. (модель языка программирования версии 1)
Выберите интерпретатор Python для создания виртуальной среды Выберите предпочтительный интерпретатор Python. Если нужный вариант не отображается, введите полный путь к двоичному файлу Python.
Выбор шаблона для первой функции проекта Выберите HTTP trigger.
Укажите имя функции Введите BlobStorageInputFunc.
Уровень авторизации Выберите Anonymous, что позволит любому пользователю вызывать конечную точку функции. 

Вы создали проект функции Python с триггером HTTP.

Добавление входной привязки хранилища BLOB-объектов

Атрибуты привязки определяются в файле function.json для данной функции. Чтобы создать привязку, щелкните правой кнопкой мыши (CTRL+щелкните macOS) function.json файл в папке функции и нажмите кнопку "Добавить привязку... Выполните инструкции, указанные на экране, чтобы определить следующие свойства для новой привязки:

Prompt значение Описание
Select binding direction (Выберите направление привязки) in Привязка — это входная привязка.
Select binding with direction... (Выберите привязку с направлением...) Azure Blob Storage Привязка — это привязка служба хранилища Azure привязки BLOB-объектов.
The name used to identify this binding in your code (Имя, используемое для идентификации этой привязки в коде) inputBlob Имя, которое используется для идентификации параметров привязки, указанных в коде.
Путь к учетной записи хранения, из которой будет считываться большой двоичный объект testcontainer/test.txt Путь к большому двоичному объекту, который функция считывает как входные данные. Подготовьте файл с Hello, World! именем test.txtс содержимым файла. Создайте контейнер с именем testcontainer и отправьте файл в контейнер.
Select setting from "local.setting.json" (Выберите параметр из файла local.setting.json) Create new local app settings Выберите учетную запись хранения, считываемую функцией в качестве входных данных. Visual Studio Code извлекает строка подключения для подключения к локальному проекту.

Чтобы проверить успешность добавления привязки,

  1. BlobStorageInputFunc/function.json Откройте файл, убедитесь, что новая привязка была type: blob добавлена в direction: in этот файл.
  2. local.settings.json Откройте файл, убедитесь, что в этот файл добавлена новая пара <your-storage-account-name>_STORAGE: <your-storage-account-connection-string> "ключ-значение", содержащая учетную запись хранения строка подключения.

После добавления привязки обновите коды функций, чтобы использовать привязку, заменив BlobStorageInputFunc/__init__.py файл Python здесь.

import logging
import azure.functions as func

def main(req: func.HttpRequest, inputBlob: bytes) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')
    return func.HttpResponse('The triggered function executed successfully. And read blob content: {}'.format(inputBlob))

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

Следуйте инструкциям, чтобы выполнить функцию локально и проверить входные данные большого двоичного объекта.

  1. Выберите учетную запись хранения, используемую при создании ресурса функции Azure, если вам будет предложено подключиться к хранилищу. Это для внутреннего использования среды выполнения функций Azure и не обязательно совпадает с тем, который используется для ввода.
  2. Чтобы запустить функцию локально, нажмите <kbd>клавишу F5 </kbd> или щелкните значок запуска и отладки на панели действий слева.
  3. Чтобы проверить, что функция может считывать большой двоичный объект, щелкните правой кнопкой мыши Exucute Function Now... функцию в рабочей области Visual Studio Code и проверьте ответ функции. Ответное сообщение должно содержать содержимое в файле BLOB-объекта.

Создание подключения с помощью соединителя службы

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

Теперь вы узнаете, как настроить подключение между функцией Azure и Хранилище BLOB-объектов Azure, чтобы функция могли считывать большой двоичный объект после развертывания в облаке. В облачной среде мы покажем, как пройти проверку подлинности с помощью управляемого удостоверения, назначаемого системой.

  1. function.json Откройте файл в локальном проекте, измените значение connection свойства.bindings MyBlobInputConnection
  2. Выполните следующую команду Azure CLI, чтобы создать соединение между функцией Azure и служба хранилища Azure.
az functionapp connection create storage-blob --source-id "<your-function-resource-id>" --target-id "<your-storage-blob-resource-id>" --system-identity --customized-keys AZURE_STORAGEBLOB_RESOURCEENDPOINT=MyBlobInputConnection__serviceUri
  • --source-id формат: /subscriptions/{subscription}/resourceG roups/{source_resource_group}/providers/Microsoft.Web/sites/{site}
  • --target-id формат: /subscriptions/{subscription}/resourceGroups/{target_resource_group}/providers/Microsoft.Storage/storageAccounts/{account}/blobServices/default

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

Соединитель службы настраивает MyBlobInputConnection__serviceUri переменную в параметрах приложения функции, используемых средой выполнения привязки функции для подключения к хранилищу, чтобы функция могли считывать данные из хранилища BLOB-объектов. Дополнительные сведения о том, как соединитель служб помогает Функции Azure подключаться к службам.

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

Теперь вы можете развернуть функцию в Azure и проверить, работает ли входная привязка BLOB-объектов хранилища.

  1. Следуйте инструкциям из руководства по развертыванию функции в Azure.
  2. Чтобы проверить, что функция может прочитать большой двоичный объект, щелкните правой кнопкой мыши Exucute Function Now... функцию в представлении РЕСУРСОВ Visual Studio Code и проверьте ответ функции. Ответное сообщение должно содержать содержимое в файле BLOB-объекта.

Устранение неполадок

Если возникают ошибки, связанные с узлом хранилища, напримерNo such host is known (<acount-name>.blob.core.windows.net:443), необходимо проверить, используется ли строка подключения для подключения к служба хранилища Azure содержит конечную точку БОЛЬШОго двоичного объекта или нет. Если это не так, перейдите к служба хранилища Azure в портал Azure, скопируйте строка подключения из Access keys колонки и замените значения.

Если ошибка возникает при локальном запуске проекта, проверьте local.settings.json файл.

Если ошибка возникает при развертывании функции в облаке (в данном случае развертывание функции обычно завершается сбоем Syncing triggers ), проверьте параметры приложения функции.

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

Если вы не собираетесь продолжать использовать этот проект, удалите ресурс приложения-функции, созданный ранее.

  1. В портал Azure откройте ресурс приложения-функции и нажмите кнопку "Удалить".
  2. Введите имя приложения и нажмите кнопку "Удалить ", чтобы подтвердить.

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

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