Tutorial Passo 2: Automatizar o redimensionamento de imagens carregadas com o Event Grid

Este tutorial expande o tutorial Carregar dados de imagem na cloud com o Armazenamento do Azure para adicionar a geração automática de miniaturas sem servidor com Azure Event Grid e Funções do Azure. Eis o fluxo de trabalho de alto nível:

Neste tutorial, vai executar os seguintes passos:

  • Criar uma conta de Armazenamento do Azure
  • Criar, configurar e implementar uma aplicação de funções
  • Criar uma subscrição de eventos para eventos de armazenamento
  • Testar a aplicação de exemplo

Pré-requisitos

Para concluir este tutorial:

Criar uma conta de Armazenamento do Azure

As Funções do Azure requerem uma conta de armazenamento geral. Além da conta de armazenamento de Blobs que criou no tutorial anterior, crie uma conta de armazenamento geral separada no grupo de recursos. Os nomes das contas de armazenamento têm de ter entre 3 e 24 carateres de comprimento e apenas podem conter números e letras minúsculas.

Defina variáveis para conter o nome do grupo de recursos que criou no tutorial anterior, a localização para os recursos a criar e o nome da nova conta de armazenamento que Funções do Azure requer. Em seguida, crie a conta de armazenamento para a função do Azure.

Utilize o comando az storage account create .

Nota

Utilize os seguintes comandos na shell bash do Cloud Shell. Utilize a lista drop-drown no canto superior esquerdo do Cloud Shell para mudar para a shell bash, se necessário.

Execute os seguintes comandos para criar uma conta de armazenamento do 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

Criar uma aplicação de funções

Precisa de uma aplicação de funções para alojar a execução da sua função. A aplicação Function App proporciona um ambiente para a execução sem servidor do código da sua função. No seguinte comando, forneça o seu próprio nome exclusivo da aplicação de funções. O nome da aplicação de funções vai ser utilizado como o domínio DNS predefinido para a aplicação de funções, por isso o nome tem de ser exclusivo em todas as aplicações no Azure. Especifique um nome para a aplicação de funções que vai ser criada e, em seguida, crie a função do Azure.

Utilize o comando az functionapp create para criar uma aplicação Function App.

functionapp="funcapp$RANDOM"
az functionapp create --name $functionapp --storage-account $functionstorage --resource-group $rgName --consumption-plan-location $region --functions-version 4

Agora, configure a aplicação de funções para ligar à conta de armazenamento de Blobs que criou no tutorial anterior.

Configurar a aplicação de funções

A função precisa de credenciais para a conta de armazenamento de Blobs, que são adicionadas às definições da aplicação de funções com o conjunto de aplicações az functionapp config appsettings ou o comando 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

A definição FUNCTIONS_EXTENSION_VERSION=~2 determina que a aplicação de funções seja executada na versão 2.x do runtime das Funções do Azure. Agora, pode implementar um projeto de código de função nesta aplicação de funções.

Implementar o código de função

A função de redimensionamento C# de exemplo está disponível no GitHub. Implemente este projeto de código na aplicação de funções com o comando 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

A função de redimensionamento da imagem é acionada por pedidos de HTTP enviados a partir do serviço Event Grid. Indica ao Event Grid que pretende obter estas notificações no URL da sua função ao criar uma subscrição de evento. Neste tutorial, subscreve eventos criados por blobs.

Os dados transmitidos para a função a partir da notificação do Event Grid incluem o URL do blob. Esse URL é transmitido para o enlace de entrada para obter a imagem carregada a partir do armazenamento de Blobs. A função gera uma imagem em miniatura e escreve o fluxo resultante num contentor separado no armazenamento de Blobs.

Este projeto utiliza EventGridTrigger para o tipo de acionador. É recomendado utilizar o acionador do Event Grid através de acionadores HTTP genéricos. O Event Grid valida automaticamente os acionadores de função do Event Grid. Com os acionadores HTTP genéricos, tem de implementar a resposta de validação.

Para obter mais informações sobre esta função, veja os ficheiros function.json e run.csx.

O código de projeto de função é implementado diretamente a partir do repositório de exemplo público. Para saber mais sobre as opções de implementação para as Funções do Azure, veja Implementação contínua para Funções do Azure.

Criar uma subscrição de evento

Uma subscrição de evento indica que eventos gerados pelo fornecedor quer que sejam enviados para um ponto final específico. Neste caso, o ponto final é exposto pela sua função. Utilize os passos seguintes para criar uma subscrição de evento que envia notificações para a sua função no portal do Azure:

  1. No portal do Azure, na parte superior da página, procure e selecione Function App e escolha a aplicação de funções que criou. Selecione Funções e selecione a função Miniatura .

    Escolher a função Miniatura no portal

  2. Selecione Integração e, em seguida, selecione Acionador do Event Grid e selecione Criar subscrição do Event Grid.

    Navegue para Adicionar subscrição do Event Grid no portal do Azure

  3. Utilize as definições de subscrição de evento especificadas na tabela.

    Criar uma subscrição de evento a partir da função no portal do Azure

    Definição Valor sugerido Descrição
    Nome imageresizersub Nome que identifica a nova subscrição de evento.
    Tipo de tópico Contas de armazenamento Selecione o fornecedor de eventos da conta de Armazenamento.
    Subscrição A sua subscrição do Azure Por predefinição, a subscrição do Azure atual está selecionada.
    Grupo de recursos myResourceGroup Selecione Utilizar existente e selecione o grupo de recursos que tem utilizado neste tutorial.
    Recurso A sua conta de armazenamento de Blobs Selecione a conta de armazenamento de Blobs onde as imagens são armazenadas e não a utilizada pela aplicação de funções do Azure.
    Nome do Tópico do Sistema imagestoragesystopic Especifique um nome para o tópico do sistema. Para saber mais sobre os tópicos do sistema, veja Descrição geral dos tópicos do sistema.
    Tipos de evento Criado pelo Blob Desmarque todos os tipos diferentes de Criado pelo Blob. Apenas os tipos de evento de Microsoft.Storage.BlobCreated são transmitidos à função.
    Tipo de ponto final gerado automaticamente Predefinido como Função do Azure.
    Ponto final gerado automaticamente Nome da função. Neste caso, é Miniatura.
  4. Mude para o separador Filtros e efetue as seguintes ações:

    1. Selecione Ativar opção de filtragem de assuntos .

    2. Para Assunto, comece por introduzir o seguinte valor: /blobServices/default/containers/images/.

      Especificar filtro para a subscrição de eventos

  5. Selecione Criar para adicionar a subscrição de evento para criar uma subscrição de evento que aciona a Thumbnail função quando um blob é adicionado ao images contentor. A função redimensiona as imagens e adiciona-as ao thumbnails contentor.

Agora que os serviços de back-end estão configurados, teste a funcionalidade de redimensionamento de imagens na aplicação Web de exemplo.

Testar a aplicação de exemplo

Para testar o redimensionamento de imagens na aplicação Web, navegue para o URL da aplicação publicada. O URL predefinido da aplicação Web é https://<web_app>.azurewebsites.net.

Selecione Carregar fotografias para selecionar e carregar um ficheiro. Também pode arrastar uma fotografia para esta região.

Tenha em atenção que, após a imagem carregada desaparecer, é apresentada uma cópia da imagem carregada no carrossel Das Miniaturas Geradas . Esta imagem foi redimensionada pela função, adicionada ao contentor de miniaturas e transferida pelo cliente Web.

Captura de ecrã que mostra uma aplicação Web publicada intitulada

Passos seguintes

Veja outros tutoriais na secção Tutoriais do índice (ÍNDICE).