Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этом кратком руководстве вы используете Visual Studio Code для сборки приложения, реагирующего на события в контейнере хранилища BLOB. После локального тестирования кода с помощью эмулятора вы развернете его в новом бессерверном приложении-функции, работающем в плане потребления Flex в Функциях Azure.
Проект использует расширение Интерфейса командной строки разработчика Azure (azd) с Visual Studio Code для упрощения инициализации и проверки кода проекта локально, а также развертывания кода в Azure. Это развертывание следует текущим рекомендациям по безопасным и масштабируемым Функции Azure развертываниям.
Эта статья поддерживает версию 4 модели программирования Node.js для Функции Azure.
Эта статья поддерживает версию 2 модели программирования Python для Функции Azure.
Предпосылки
Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
Visual Studio Code на одной из поддерживаемых платформ.
Расширение "Функции Azure" для Visual Studio Code. Для этого расширения требуются основные средства Azure Functions Core Tools. Если это средство недоступно локально, расширение пытается установить его с помощью установщика на основе пакетов. Вы также можете установить или обновить пакет Core Tools, выполнив команду
Azure Functions: Install or Update Azure Functions Core Toolsиз палитры команд. Если на локальном компьютере не установлено npm или Homebrew, необходимо вручную установить или обновить основные средства.
Расширение C# для Visual Studio Code.
Пакет средств разработки Java версии 8, 11, 17 или 21 (Linux).
Apache Maven 3.0 или более поздней версии.
-
Node.js 18.x или более поздней версии. Используйте команду
node --version, чтобы проверить установленную версию.
Версии Python, поддерживаемые Функциями Azure. Дополнительные сведения см. в разделе Как установить Python.
Расширение Python для Visual Studio Code.
- Расширение Azure Developer CLI для Visual Studio Code.
Расширение клиента REST или эквивалентное средство REST, используемое для безопасного выполнения HTTP-запросов.
Инициализируйте проект
azd init Используйте команду из палитры команд, чтобы создать локальный проект кода Функций Azure на основе шаблона.
В Visual Studio Code откройте папку или рабочую область, в которой вы хотите создать проект.
Нажмите клавишу F1 , чтобы открыть палитру команд, найдите и выполните команду
Azure Developer CLI (azd): Initialize App (init), а затем выберите шаблон.При инициализации
azdтекущей папки или рабочей области может возникнуть небольшая задержка.
При появлении запроса выберите " Выбрать шаблон", а затем найдите и выберите
Azure Functions C# Event Grid Blob Trigger using Azure Developer CLI.При появлении запроса в терминале введите уникальное имя среды, например
blobevents-dotnet.Эта команда извлекает файлы проекта из репозитория шаблонов и инициализирует проект в текущей папке или рабочей области.
При появлении запроса выберите " Выбрать шаблон", а затем найдите и выберите
Azure Functions Python Event Grid Blob Trigger using Azure Developer CLI.При появлении запроса в терминале введите уникальное имя среды, например
blobevents-python.Эта команда извлекает файлы проекта из репозитория шаблонов и инициализирует проект в текущей папке или рабочей области.
При появлении запроса выберите " Выбрать шаблон", а затем найдите и выберите
Azure Functions TypeScript Event Grid Blob Trigger using Azure Developer CLI.При появлении запроса введите уникальное имя среды, например
blobevents-typescript.Эта команда извлекает файлы проекта из репозитория шаблонов и инициализирует проект в текущей папке или рабочей области.
При появлении запроса выберите " Выбрать шаблон", а затем найдите и выберите
Azure Functions Java Event Grid Blob Trigger using Azure Developer CLI.При появлении запроса введите уникальное имя среды, например
blobevents-java.Эта команда извлекает файлы проекта из репозитория шаблонов и инициализирует проект в текущей папке или рабочей области.
При появлении запроса выберите " Выбрать шаблон", а затем найдите и выберите
Azure Functions PowerShell Event Grid Blob Trigger using Azure Developer CLI.При появлении запроса введите уникальное имя среды, например
blobevents-powershell.Эта команда извлекает файлы проекта из репозитория шаблонов и инициализирует проект в текущей папке или рабочей области.
В azd среде поддерживается уникальный контекст развертывания для вашего приложения, и вы можете определить более одного контекста. Это также часть имени группы ресурсов, создаваемой в Azure.
Добавление файла local.settings.json
Для настройки узла при локальном выполнении функций требуется файл local.settings.json.
Выполните следующую команду, чтобы перейти в папку
srcприложения:cd src
Создайте файл с именемlocal.settings.json в папке
src, содержащей эти данные JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Создайте файл с именемlocal.settings.json в папке
src, содержащей эти данные JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "java", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Создайте файл с именемlocal.settings.json в папке
src, содержащей эти данные JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Создайте файл с именемlocal.settings.json в папке
src, содержащей эти данные JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "powershell", "FUNCTIONS_WORKER_RUNTIME_VERSION": "7.2", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Создайте файл с именемlocal.settings.json в папке
src, содержащей эти данные JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "python", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Создание и активация виртуальной среды
В папке src выполните следующие команды, чтобы создать и активировать виртуальную среду с именем .venv:
python3 -m venv .venv
source .venv/bin/activate
Если Python не устанавливает пакет venv в дистрибутиве Linux, выполните следующую команду:
sudo apt-get install python3-venv
Настройка локального эмулятора хранилища
Используйте эмулятор Azurite для локального запуска проекта кода перед созданием и использованием ресурсов Azure.
Если вы еще не сделали этого, установите Azurite.
Нажмите клавишу F1. В палитре команд найдите и запустите команду
Azurite: Start, чтобы запустить локальный эмулятор хранилища.В области Azure разверните Рабочая область>Присоединенные учетные записи хранения> и Локальный эмулятор, щелкните правой кнопкой мыши (Ctrl-click на Mac) Контейнеры BLOB, выберите Создать контейнер BLOB... и создайте два контейнера BLOB в локальном эмуляторе:
-
unprocessed-pdf: контейнер, который триггер отслеживает для событий хранения. -
processed-pdf: контейнер, в который функция отправляет обработанные BLOB в качестве выходных данных.
-
Разверните контейнеры Blob, щелкните правой кнопкой мыши (Ctrl-клик на Mac) unprocessed-pdf, выберите "Загрузить файлы...", нажмите клавишу ВВОД, чтобы принять корневой каталог, и загрузите PDF-файлы из
dataпапки проекта.
При локальном запуске можно использовать REST для активации функции, имитируя функцию, получающую сообщение из подписки на события.
Локальное выполнение функции
Visual Studio Code интегрируется с инструментами Azure Functions Core , чтобы позволить запускать этот проект на локальном компьютере разработки с помощью эмулятора Azurite. Переменная PDFProcessorSTORAGE среды определяет подключение учетной записи хранилища, которое также устанавливается "UseDevelopmentStorage=true" в файле local.settings.json при запуске на локальной машине.
Выполните следующую команду из
srcпапки проекта в терминале или командной строке:func startmvn clean package mvn azure-functions:runnpm install func startnpm install npm startПри запуске узла Функций он записывает имя триггера и тип триггера в выходные данные терминала. В функциях корневая папка проекта содержит файл host.json.
С Core Tools, которые по-прежнему работают в терминале, откройте
test.httpфайл в проекте и выберите Отправить запрос, чтобы активироватьProcessBlobUploadфункцию, отправив тестовое blob-событие в вебхук для blob-событий.Этот шаг имитирует получение события из подписки на события при локальном запуске, и вы увидите сведения о запросе и обработанных файлах, записанных в журналах. Если вы не используете REST Client, необходимо использовать другой безопасный инструмент для работы с REST, чтобы вызывать конечную точку с полезной нагрузкой в
test.http.В рабочей области контейнера BLOB разверните обработанный-pdf и убедитесь, что функция обработала PDF-файл и скопировала его с префиксом
processed-.По завершении нажмите клавиши CTRL+C в окне терминала, чтобы остановить
func.exeпроцесс узла.
Просмотр кода (необязательно)
Вы можете просмотреть код, определяющий триггер BLOB в Event Grid в файле проекта ProcessBlobUpload.cs. Функция демонстрирует, как:
- Используйте
BlobTriggerиSource = BlobTriggerSource.EventGridдля обработки почти в режиме реального времени -
BlobClientПривязка к исходному BLOB-объекту иBlobContainerClientцелевому объекту - Обработка содержимого BLOB-объектов и копирование его в другой контейнер с помощью потоков
Вы можете просмотреть код, определяющий триггер Blob для Event Grid в файле проекта function_app.py. Функция демонстрирует, как:
- Используйте
@app.blob_triggerиsource="EventGrid"для обработки почти в режиме реального времени - Доступ к содержимому BLOB-объектов с помощью
InputStreamпараметра - Копирование обработанных файлов в целевой контейнер с помощью пакета SDK службы хранилища Azure
Вы можете просмотреть код, который определяет Blob-триггер в Event Grid, в файле проекта processBlobUpload.ts. Функция демонстрирует, как:
- Используйте
app.storageBlob()иsource: 'EventGrid'для обработки почти в режиме реального времени - Доступ к содержимому BLOB-объектов с помощью пакета SDK службы хранилища Azure Node.js
- Обработка и копирование файлов в целевой контейнер асинхронно
Вы можете просмотреть код, определяющий триггер Blob для Event Grid в файле проекта ProcessBlobUpload.java. Функция демонстрирует, как:
- Используйте
@BlobTriggerиsource = "EventGrid"для обработки почти в режиме реального времени - Доступ к содержимому BLOB-объектов с помощью
BlobInputStreamпараметра - Копирование обработанных файлов в целевой контейнер с помощью пакета SDK службы хранилища Azure для Java
Вы можете просмотреть код, определяющий триггер Blob в Event Grid в файле проекта ProcessBlobUpload/run.ps1 и соответствующем Function.json. Функция демонстрирует, как:
- Настройте триггер blob в function.json для обработки данных почти в режиме реального времени.
- Доступ к содержимому BLOB-объектов с помощью командлетов службы хранилища Azure PowerShell
- Обработка и копирование файлов в целевой контейнер с помощью модулей Azure PowerShell
Проверив и подтвердив правильность кода функции локально, настало время опубликовать проект в Azure.
Создание ресурсов Azure и развертывание
Используйте команду azd up для создания приложения-функции в плане Flex Consumption вместе с другими необходимыми ресурсами Azure, включая подписку на события. После подготовки инфраструктуры azd также развертывает код вашего проекта в новом функциональном приложении в Azure.
В Visual Studio Code нажмите клавишу F1, чтобы открыть палитру команд. Выполните поиск и выполните команду
Azure Developer CLI (azd): Sign In with Azure Developer CLI, а затем выполните вход с помощью учетной записи Azure.В корневом каталоге проекта нажмите клавишу F1 , чтобы открыть палитру команд. Найдите и выполните команду
Azure Developer CLI (azd): Provision and Deploy (up), чтобы создать необходимые ресурсы Azure и развернуть ваш код.При появлении запроса в окне терминала укажите следующие необходимые параметры развертывания:
Подсказка Description Выбор подписки Azure для использования Выберите подписку, в которой вы хотите создать ресурсы. Название среды Среда, используемая для поддержания уникального контекста развертывания для приложения. Расположение Azure Регион Azure, в котором создается группа ресурсов, содержащая новые ресурсы Azure. Отображаются только регионы, поддерживающие план потребления Flex. Команда
azd upиспользует ваши ответы на эти запросы вместе с файлами конфигурации Bicep, чтобы создать и настроить эти необходимые ресурсы Azure, следуя последним передовым практикам.- План потребления и приложение-функция Flex
- Учетная запись хранения Azure с контейнерами BLOB
- Application Insights (рекомендуется)
- Политики и роли доступа для учетной записи
- Подписка на Event Grid на события объектов BLOB
- Подключения между службами с использованием управляемых удостоверений (вместо использования хранимых строк подключения)
После успешного выполнения команды ваше приложение запускается в Azure с настроенной подпиской на события для активации вашей функции при добавлении BLOB в контейнер
unprocessed-pdf.Запишите
AZURE_STORAGE_ACCOUNT_NAMEиAZURE_FUNCTION_APP_NAMEв выходных данных. Эти имена уникальны для учетной записи хранения и приложения-функции в Azure соответственно.
Проверьте развернутую функцию
В Visual Studio Code нажмите клавишу F1. В палитре команд найдите и выполните команду
Azure Storage: Upload Files.... Примите корневой каталог и, как и раньше, отправьте один или несколько PDF-файлов изdataпапки проекта.При появлении запроса выберите имя новой учетной записи хранения (из
AZURE_STORAGE_ACCOUNT_NAME). Выберите контейнеры BLOB>unprocessed-pdf.Нажмите клавишу F1. В палитре команд найдите и выполните команду
Azure Storage: Open in Explorer. Выберите одну и ту же учетную запись > хранения контейнеры>BLOB-объектов, обработанные в формате PDF, а затем откройте новое окно.В проводнике убедитесь, что загруженные вами PDF-файлы были обработаны вашей функцией. Выходные данные записываются в
processed-pdfконтейнер сprocessed-префиксом.
Триггер blob в Event Grid обрабатывает файлы в течение нескольких секунд после загрузки. Эта скорость демонстрирует возможности этого подхода в почти реальном времени по сравнению с традиционными триггерами на основе опроса.
Повторное развертывание кода
Выполните команду azd up столько раз, сколько потребуется, чтобы развернуть обновления кода в функции-приложении и настроить ресурсы Azure.
Замечание
Развернутые файлы кода всегда перезаписываются последним пакетом развертывания.
Исходные ответы на azd запросы и любые переменные среды, созданные с помощью azd , хранятся локально в именованной среде.
azd env get-values Используйте команду, чтобы просмотреть все переменные в вашей среде, которые использовались при создании ресурсов Azure.
Очистите ресурсы
Когда вы закончите работу с приложением-функцией и связанными ресурсами, используйте эту команду для удаления приложения-функции и связанных с ним ресурсов из Azure. Это действие помогает избежать дополнительных затрат:
azd down --no-prompt
Замечание
Параметр --no-prompt указывает azd удалить группу ресурсов без подтверждения.
Эта команда не влияет на локальный проект кода.