Руководство. Функция 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-объект хранилища в качестве входных данных |
Тип проверки подлинности локального проекта | Строка подключения |
Тип проверки подлинности облачной функции | Управляемое удостоверение, назначаемое системой |
Предупреждение
Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Поток проверки подлинности, описанный в этой процедуре, требует очень высокого уровня доверия к приложению и несет риски, которые отсутствуют в других потоках. Этот поток следует использовать только в том случае, если другие более безопасные потоки, такие как управляемые удостоверения, не являются жизнеспособными.
Необходимые компоненты
- Установите Visual Studio Code на одной из поддерживаемых платформ.
- Azure CLI. Его можно использовать в Azure Cloud Shell или установить локально.
- Учетная запись служба хранилища Azure и большой двоичный объект хранилища. Если у вас нет учетной записи служба хранилища Azure, создайте ее.
- В этом руководстве предполагается, что вы знаете понятия, представленные в руководстве разработчика функций, и как подключиться к службам в Функциях.
Создание проекта функции 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 извлекает строка подключения для подключения к локальному проекту. |
Чтобы проверить успешность добавления привязки,
BlobStorageInputFunc/function.json
Откройте файл, убедитесь, что новая привязка былаtype: blob
добавлена вdirection: in
этот файл.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))
Локальное выполнение функции
Следуйте инструкциям, чтобы выполнить функцию локально и проверить входные данные большого двоичного объекта.
- Выберите учетную запись хранения, используемую при создании ресурса функции Azure, если вам будет предложено подключиться к хранилищу. Это для внутреннего использования среды выполнения функций Azure и не обязательно совпадает с тем, который используется для ввода.
- Чтобы запустить функцию локально, нажмите
<kbd>
клавишу F5</kbd>
или щелкните значок запуска и отладки на панели действий слева. - Чтобы проверить, что функция может считывать большой двоичный объект, щелкните правой кнопкой мыши
Exucute Function Now...
функцию в рабочей области Visual Studio Code и проверьте ответ функции. Ответное сообщение должно содержать содержимое в файле BLOB-объекта.
Создание подключения с помощью соединителя службы
Вы только что выполнили проект и проверили функцию локально, и локальный проект подключается к большому двоичному объекту хранилища с помощью строка подключения.
Теперь вы узнаете, как настроить подключение между функцией Azure и Хранилище BLOB-объектов Azure, чтобы функция могли считывать большой двоичный объект после развертывания в облаке. В облачной среде мы покажем, как пройти проверку подлинности с помощью управляемого удостоверения, назначаемого системой.
function.json
Откройте файл в локальном проекте, измените значениеconnection
свойства.bindings
MyBlobInputConnection
- Выполните следующую команду 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-объектов хранилища.
- Следуйте инструкциям из руководства по развертыванию функции в Azure.
- Чтобы проверить, что функция может прочитать большой двоичный объект, щелкните правой кнопкой мыши
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
), проверьте параметры приложения функции.
Очистка ресурсов
Если вы не собираетесь продолжать использовать этот проект, удалите ресурс приложения-функции, созданный ранее.
- В портал Azure откройте ресурс приложения-функции и нажмите кнопку "Удалить".
- Введите имя приложения и нажмите кнопку "Удалить ", чтобы подтвердить.
Следующие шаги
Ознакомьтесь со статьями ниже, чтобы узнать больше о концепциях соединителя служб и о том, как он помогает Функции Azure подключаться к другим облачным службам.