Руководство, шаг 2. Автоматическое изменение размера переданных изображений с помощью службы "Сетка событий"
В этом руководстве описано, как добавить бессерверное автоматическое создание эскизов с помощью Сетка событий Azure и Функции Azure. Ниже приведен высокоуровневый рабочий процесс.
Вот какие шаги выполняются в этом руководстве:
- Создание учетной записи хранения Azure
- Создание, настройка и развертывание приложения-функции
- Создание подписки на события хранилища
- Поверка примера приложения
Предварительные требования
Для работы с этим руководством сделайте следующее:
- Вам понадобится подписка Azure. Для работы с этим учебником не подойдет подписка уровня Бесплатный.
- Необходимо изучить руководство по использованию хранилища BLOB-объектов Передача данных изображений в облако с помощью службы хранилища Azure.
Создание учетной записи хранения Azure
Для службы "Функции Azure" требуется общая учетная запись хранения. Кроме учетной записи хранения BLOB-объектов, созданной при изучении предыдущего руководства, создайте отдельную общую учетную запись хранения в группе ресурсов. Имя учетной записи хранения должно содержать от 3 до 24 символов и состоять только из цифр и строчных букв.
Задайте переменные для хранения имени группы ресурсов, созданной при изучении предыдущего руководства, расположения создаваемых ресурсов и имени новой учетной записи хранения, которые требуются для Функций Azure. Затем создайте учетную запись хранения для функции Azure.
Выполните команду az storage account create.
Примечание
Выполните приведенные ниже команды в оболочке Bash в Cloud Shell. Воспользуйтесь раскрывающимся списком в левом верхнем углу Cloud Shell, чтобы переключиться на оболочку Bash.
Выполните следующие команды, чтобы создать учетную запись хранения Azure.
functionstorage="funcstorage$RANDOM"
az storage account create --name $functionstorage --location $region --resource-group $rgName --sku Standard_LRS --kind StorageV2 --allow-blob-public-access true
Создание приложения-функции
Для выполнения функций вам понадобится приложение-функция, предоставляющее среду для выполнения кода функции без сервера. В следующей команде укажите уникальное название приложения-функции. Имя приложения-функции используется по умолчанию в качестве его домена DNS. Поэтому оно должно быть уникальным среди всех приложений в Azure. Укажите имя создаваемого приложения-функции и создайте функцию Azure.
Создайте приложение-функцию с помощью команды az functionapp create.
functionapp="funcapp$RANDOM"
az functionapp create --name $functionapp --storage-account $functionstorage --resource-group $rgName --consumption-plan-location $region --functions-version 4
Теперь настройте приложение-функцию для подключения к учетной записи хранения, созданной в ходе выполнения инструкций из предыдущего руководства.
Настройка приложения-функции
Для приложения-функции нужно указать данные для входа в учетную запись хранения BLOB-объектов, добавляемые в параметры приложения-функции с помощью команды az functionapp config appsettings set или Update-AzFunctionAppSetting.
storageConnectionString=$(az storage account show-connection-string --resource-group $rgName --name $blobStorageAccount --query connectionString --output tsv)
az functionapp config appsettings set --name $functionapp --resource-group $rgName --settings AzureWebJobsStorage=$storageConnectionString THUMBNAIL_CONTAINER_NAME=thumbnails THUMBNAIL_WIDTH=100 FUNCTIONS_EXTENSION_VERSION=~2 FUNCTIONS_WORKER_RUNTIME=dotnet
Параметр FUNCTIONS_EXTENSION_VERSION=~2
позволяет запустить приложение-функцию в версии 2 среды выполнения решения "Функции Azure". Теперь можно развернуть проект кода функции в этом приложении-функции.
Развертывание кода функции
Пример функции изменения размера на C# см. на GitHub. Разверните этот код в приложение-функцию с помощью команды az functionapp deployment source config.
az functionapp deployment source config --name $functionapp --resource-group $rgName --branch master --manual-integration --repo-url https://github.com/Azure-Samples/function-image-upload-resize
Функция изменения размера образа активируется HTTP-запросом, отправленным из службы "Сетка событий". Вы указываете этой службе, что хотите получать эти уведомления по URL-адресу функции, создав подписку на события. В этом руководстве вы подписываетесь на события, созданные большим двоичным объектом.
Данные, передаваемые в функцию из уведомления службы "Сетка событий", содержат URL-адрес большого двоичного объекта. Этот URL-адрес передается входной привязке, что позволяет получить отправленный образ из хранилища BLOB-объектов. Функция создает эскиз и записывает результирующий поток в отдельный контейнер в хранилище BLOB-объектов.
Этот проект использует EventGridTrigger
как тип триггера. Рекомендуется использовать триггер Сетки событий, а не универсальные триггеры HTTP. Служба "Сетка событий" автоматически проверяет триггеры функций сетки событий. При использовании универсальных триггеров HTTP вам нужно реализовать ответ проверки.
Дополнительные сведения об этой функции см. в файлах function.json и run.csx.
Код проекта функция развертывается непосредственно из общедоступного примера репозитория. Чтобы узнать больше о параметрах развертывания службы "Функции Azure", ознакомьтесь с разделом Непрерывное развертывание для Функций Azure.
Создание подписки на событие
Подписка на событие определяет, какие создаваемые поставщиком события необходимо отправлять в конкретную конечную точку. В данном случае конечная точка предоставляется функцией. Чтобы создать подписку на событие, которая отправляет уведомления в функцию, выполните следующие действия на портале Azure:
На портале Azureв верхней части страницы выполните поиск по запросу "
Function App
" и выберите результат поиска. Затем выберите созданное приложение-функцию. Щелкните элемент Функции и выберите функцию Эскиз.Щелкните элемент Интеграция. Затем последовательно выберите элементы Триггер сетки событий и Создание подписки для Сетки событий.
Задайте значения параметров подписки на событие, указанные в таблице.
Параметр Рекомендуемое значение Описание имя; imageresizersub Имя, которое идентифицирует новую подписку на событие. Тип раздела Учетные записи хранения Выберите поставщик событий учетной записи хранения. Подписка Ваша подписка Azure. По умолчанию должна быть выбрана ваша текущая подписка Azure. Группа ресурсов myResourceGroup Щелкните Использовать существующую и выберите группу ресурсов, используемую в этом руководстве. Ресурс Учетная запись хранения больших двоичных объектов Выберите учетную запись хранения BLOB-объектов, в которой хранятся образы, а не учетную запись, используемую приложением-функцией Azure. Имя системного раздела imagestoragesystopic Введите имя системного раздела. См. общие сведения о системных разделах. Типы событий Blob created Снимите флажки всех типов, кроме Blob created (Большой двоичный объект создан). Только события типа Microsoft.Storage.BlobCreated
будут передаваться в функцию.Тип конечной точки autogenerated Предопределено как Функция Azure. Конечная точка autogenerated Имя функции. В нашем примере это функция Эскиз. Перейдите на вкладку Фильтры и выполните следующие действия:
Выберите параметр Включить фильтрацию тем.
В поле Тема начинается с укажите следующее значение: /blobServices/default/containers/images/.
Нажмите кнопку Создать, чтобы добавить подписку на событие. Будет создана подписка на событие, которая вызывает функцию
Thumbnail
при добавлении BLOB-объекта в контейнерimages
. Эта функция изменяет размер изображений и добавляет их в контейнерthumbnails
.
Теперь, когда внутренние службы настроены, следует проверить функциональные возможности изменения размера изображений в примере веб-приложения.
Поверка примера приложения
Чтобы проверить изменение размера изображений в веб-приложении, перейдите на URL-адрес опубликованного приложения. URL-адрес приложения по умолчанию: https://<web_app>.azurewebsites.net
.
Выберите Отправить фотографии , чтобы выбрать и отправить файл. Можно также перетащить фотографию в эту область.
Обратите внимание, что после того как переданное изображение исчезнет, его копия появится в карусели Generated Thumbnails (Созданные эскизы). С помощью функции размер этого образа был изменен, после чего он был добавлен в контейнер эскизов и скачан веб-клиентом.
Дальнейшие действия
См. другие руководства в разделе Учебники таблицы содержимого (ОГЛА).