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


Руководство: Запуск Batch-задания с использованием Azure Functions

В этом руководстве описано, как активировать пакетное задание с помощью Функций Azure. В этой статье описывается пример, который обрабатывает документы, добавленные в контейнер BLOB-объектов службы хранилища Azure, и применяет оптическое распознавание символов (OCR) с помощью пакетной службы Azure. Чтобы упростить обработку OCR, в этом примере настраивается функция Azure, которая запускает пакетную задачу OCR при каждом добавлении файла в контейнер объектов BLOB. Вы узнаете, как:

  • Используйте портал Azure для создания пулов и заданий.
  • Создайте контейнеры объектов BLOB и общую ключевую подпись доступа (SAS).
  • Создайте функцию Azure, активируемую объектом Blob.
  • Отправка входных файлов в хранилище.
  • Мониторинг выполнения задач.
  • Получение выходных файлов.

Предпосылки

Вход в Azure

Войдите на портал Azure.

Создание пула пакетов и пакетной задачи с помощью портала Azure

В этом разделе вы используете портал Azure для создания пула Batch и задания Batch для выполнения задач OCR.

Создание пула

  1. Войдите на портал Azure с помощью учетных данных Azure.

  2. Создайте пул, выбрав пулы на левой стороне навигации, а затем нажмите кнопку "Добавить " над формой поиска.

    Снимок экрана: страница

    1. Введите идентификатор пула. В этом примере имя пула ocr-pool.
    2. Выберите canonical в качестве издателя.
    3. Выберите 0001-com-ubuntu-server-jammy в качестве предложения.
    4. Выберите 22_04-lts в качестве SKU.
    5. Выберите Standard_F2s_v2 - 2 vCPUs, 2 GB Memoryразмер виртуальной машины в разделе "Размер узла ".
    6. Задайте Режим в разделе Масштабирование на Фиксированное, и введите 3 для выделенных целевых узлов.
    7. Задайте для задачи "Пуск" значение "Включить начальную задачу" и введите команду /bin/bash -c "sudo update-locale LC_ALL=C.UTF-8 LANG=C.UTF-8; sudo apt-get update; sudo apt-get -y install ocrmypdf" в командной строке. Не забудьте установить уровень привилегий как Автопользователь пула, Администратор, что позволяет запускать задачи, включая команды с sudo.
    8. Нажмите ОК.

Создание задания

  1. Создайте задание в пуле, выбрав задания в левой части навигации, а затем нажмите кнопку "Добавить " над формой поиска.
    1. Введите идентификатор задания. В этом примере используется ocr-job.
    2. Выберите ocr-pool для текущего пула или любое имя, выбранное для пула.
    3. Нажмите ОК.

Создание контейнеров BLOB-объектов

Здесь можно создать контейнеры blob, которые хранят входные и выходные файлы для пакетного задания OCR. В этом примере входной контейнер называется input и где все документы без OCR изначально отправляются для обработки. Выходной контейнер называется output и является тем местом, где пакетная задача записывает в OCR обработанные документы.

  1. Найдите и выберите учетные записи хранения на портале Azure.

  2. Выберите учетную запись для хранения, связанную с учетной записью Batch.

  3. Выберите контейнеры из левой части навигации и создайте два контейнера BLOB-объектов (один для входных файлов, один для выходных файлов), выполнив действия по созданию контейнера BLOB-объектов.

  4. Создайте подпись общего доступа для вашего выходного контейнера, выбрав выходной контейнер, а на странице токены общего доступа выберите «Запись» в раскрывающемся списке «Разрешения». Никаких других разрешений не требуется.

  5. Выберите Создать маркер и URL-адрес SAS и скопируйте URL-адрес SAS большого двоичного объекта, чтобы использовать его позже для вашей функции.

    Снимок экрана: страница маркеров общего доступа, в которой выделен раскрывающийся список

Создание функции Azure

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

  1. Выполните действия, описанные в статье "Создание функции, активируемой хранилищем BLOB-объектов Azure для создания функции".

    1. Для стека среды выполнения выберите .NET. В этом примере функция на C# демонстрирует преимущества использования пакетного SDK для .NET.
    2. На странице хранилища используйте ту же учетную запись хранилища, которую вы связали с вашей учетной записью Batch.
    3. Выберите Рецензирование и Создать > Создать.

    На следующем снимке экрана показана страница Создание функционального приложения на вкладке Основные сведения с использованием примерной информации.

    Снимок экрана: страница

  2. В функции выберите "Функции " в левой части навигации и нажмите кнопку "Создать".

  3. В области Создание функции выберите триггер для хранилища BLOB-объектов Azure.

  4. Введите имя функции в новой функции. В этом примере имя — OcrTrigger. Введите путь как input/{name}, где input — это имя контейнера BLOB-объектов.

  5. Выберите Создать.

    Скриншот панели

  6. После создания функции, активируемой большим двоичным объектом, выберите "Код и тест". Используйте run.csx и function.proj из GitHub в функции. function.proj По умолчанию не существует, поэтому нажмите кнопку "Отправить ", чтобы отправить ее в рабочую область разработки.

    • run.csx запускается при добавлении нового объекта в ваш входной BLOB-контейнер.
    • function.proj перечисляет внешние библиотеки в коде функции, например Batch .NET SDK.
  7. Измените значения переменных заполнителей в функции Run() файла run.csx, чтобы они соответствовали вашим учетным данным для пакетной обработки и хранения. Учетные данные пакетной службы и учетной записи хранения можно найти на портале Azure в разделе "Ключи " учетной записи пакетной службы и хранения.

Активация функции и получение результатов

Отправьте любой или все сканированные файлы из input_files каталога на GitHub в входной контейнер.

Вы можете протестировать функцию на портале Azure на странице "Код и тест " функции.

  1. Выберите "Тест и запуск " на странице "Код и тест ".
  2. Введите путь к вашему контейнеру ввода в Body на вкладке Входные данные.
  3. Выберите Выполнить.

Через несколько секунд в выходной контейнер добавляется файл с OCR. Информация журнала выводится в нижнее окно. Затем файл становится видимым и доступным для извлечения в Storage Explorer.

Также информацию о журнале можно найти на странице Монитор.

2019-05-29T19:45:25.846 [Information] Creating job...
2019-05-29T19:45:25.847 [Information] Accessing input container <inputContainer>...
2019-05-29T19:45:25.847 [Information] Adding <fileName> as a resource file...
2019-05-29T19:45:25.848 [Information] Name of output text file: <outputTxtFile>
2019-05-29T19:45:25.848 [Information] Name of output PDF file: <outputPdfFile>
2019-05-29T19:45:26.200 [Information] Adding OCR task <taskID> for <fileName> <size of fileName>...

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

Подсказка

Скачанные файлы доступны для поиска при открытии в средстве чтения PDF.

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

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

  1. На странице пулов вашей учетной записи Batch выберите дополнительные параметры вашего пула.
  2. Выберите команду Удалить.

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

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

Дополнительные примеры использования API .NET для планирования и обработки рабочих нагрузок пакетной службы см. в примерах на GitHub.