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


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

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

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

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

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

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

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

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

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

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

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

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

Добавление выходной привязки таблицы хранилища

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

Prompt значение Описание
Select binding direction (Выберите направление привязки) out Привязка является выходной привязкой.
Select binding with direction... (Выберите привязку с направлением...) Azure Table Storage Привязка — это привязка служба хранилища Azure табличной привязки.
The name used to identify this binding in your code (Имя, используемое для идентификации этой привязки в коде) outMessage Имя, которое используется для идентификации параметров привязки, указанных в коде.
Имя таблицы в учетной записи хранения, в которой будут записываться данные testTable Имя таблицы, записываемой функцией в виде выходных данных. Создайте таблицу с именем testTable в учетной записи хранения, если она не существует.
Select setting from "local.setting.json" (Выберите параметр из файла local.setting.json) Create new local app settings Выберите учетную запись хранения, в качестве выходных данных записывается функция. Visual Studio Code извлекает строка подключения для подключения к локальному проекту.

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

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

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

import logging
import uuid
import json
import azure.functions as func

def main(req: func.HttpRequest, outMessage: func.Out[str]) -> func.HttpResponse:

    rowKey = str(uuid.uuid4())
    data = {
        "Name": "Output binding message",
        "PartitionKey": "message",
        "RowKey": rowKey
    }

    outMessage.set(json.dumps(data))
    return func.HttpResponse(f"Message created with the rowKey: {rowKey}")

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

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

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

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

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

  1. function.json Откройте файл в локальном проекте, измените значение connection свойства.bindings AZURE_STORAGETABLE_CONNECTIONSTRING
  2. Выполните следующую команду Azure CLI, чтобы создать соединение между функцией Azure и служба хранилища Azure.
az functionapp connection create storage-table --source-id "<your-function-resource-id>" --target-id "<your-storage-table-resource-id>" --secret
  • --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}/tableServices/default

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

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

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

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

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

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

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

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

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

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

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

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

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