Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Neste quickstart, usas o Visual Studio Code para construir uma aplicação que responde a eventos num contentor de Blob Storage. Depois de testar o código localmente usando um emulador, implementa-o numa nova aplicação de funções sem servidor executada num plano de Consumo Flex no Azure Functions.
O projeto utiliza a extensão Azure Developer CLI (azd) com Visual Studio Code para simplificar a inicialização e verificação local do código do seu projeto, bem como a implementação do seu código no Azure. Essa implantação segue as práticas recomendadas atuais para implantações seguras e escaláveis do Azure Functions.
Este artigo suporta a versão 4 do modelo de programação Node.js para o Azure Functions.
Este artigo suporta a versão 2 do modelo de programação Python para o Azure Functions.
Pré-requisitos
Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
Visual Studio Code em uma das plataformas suportadas.
A extensão do Azure Functions para Visual Studio Code. Esta extensão requer as Ferramentas Principais do Azure Functions. Quando essa ferramenta não está disponível localmente, a extensão tenta instalá-la usando um instalador baseado em pacote. Você também pode instalar ou atualizar o pacote Core Tools executando
Azure Functions: Install or Update Azure Functions Core Toolsa partir da paleta de comandos. Se você não tiver o npm ou o Homebrew instalado em seu computador local, deverá instalar ou atualizar manualmente as Ferramentas Principais.
Extensão C# para Visual Studio Code.
O Java Development Kit, versões 8, 11, 17 ou 21 (Linux).
Apache Maven, versão 3.0 ou superior.
-
Node.js 18.x ou superior. Use o
node --versioncomando para verificar sua versão.
Versões Python suportadas pelo Azure Functions. Para obter mais informações, consulte Como instalar o Python.
A extensão Python para Visual Studio Code.
- A extensão da CLI do Desenvolvedor do Azure para Visual Studio Code.
Extensão do cliente REST ou uma ferramenta REST equivalente que utilize para executar pedidos HTTP de forma segura.
Inicializar o projeto
Use o azd init comando da paleta de comandos para criar um projeto de código Azure Functions local a partir de um template.
No Visual Studio Code, abra uma pasta ou espaço de trabalho onde você deseja criar seu projeto.
Pressiona F1 para abrir a paleta de comandos, procura e executa o comando
Azure Developer CLI (azd): Initialize App (init), depois escolhe Selecionar um modelo.Pode haver um pequeno atraso enquanto
azdinicializa a pasta ou o espaço de trabalho atual.
Quando solicitado, escolha Selecionar um modelo e, em seguida, procure e selecione
Azure Functions C# Event Grid Blob Trigger using Azure Developer CLI.Quando solicitado no terminal, insira um nome único do ambiente, como
blobevents-dotnet.Este comando extrai os arquivos de projeto do repositório de modelos e inicializa o projeto na pasta ou espaço de trabalho atual.
Quando solicitado, escolha Selecionar um modelo e, em seguida, procure e selecione
Azure Functions Python Event Grid Blob Trigger using Azure Developer CLI.Quando solicitado no terminal, insira um nome único do ambiente, como
blobevents-python.Este comando extrai os arquivos de projeto do repositório de modelos e inicializa o projeto na pasta ou espaço de trabalho atual.
Quando solicitado, escolha Selecionar um modelo e, em seguida, procure e selecione
Azure Functions TypeScript Event Grid Blob Trigger using Azure Developer CLI.Quando solicitado, insira um nome de ambiente exclusivo, como
blobevents-typescript.Este comando extrai os arquivos de projeto do repositório de modelos e inicializa o projeto na pasta ou espaço de trabalho atual.
Quando solicitado, escolha Selecionar um modelo e, em seguida, procure e selecione
Azure Functions Java Event Grid Blob Trigger using Azure Developer CLI.Quando solicitado, insira um nome de ambiente exclusivo, como
blobevents-java.Este comando extrai os arquivos de projeto do repositório de modelos e inicializa o projeto na pasta ou espaço de trabalho atual.
Quando solicitado, escolha Selecionar um modelo e, em seguida, procure e selecione
Azure Functions PowerShell Event Grid Blob Trigger using Azure Developer CLI.Quando solicitado, insira um nome de ambiente exclusivo, como
blobevents-powershell.Este comando extrai os arquivos de projeto do repositório de modelos e inicializa o projeto na pasta ou espaço de trabalho atual.
No azd, o ambiente mantém um contexto de implantação exclusivo para seu aplicativo e você pode definir mais de um. Também faz parte do nome do grupo de recursos que você cria no Azure.
Adicionar o ficheiro local.settings.json
O Functions precisa do ficheiro local.settings.json para configurar o host quando está a correr localmente.
Execute este comando para ir à
srcpasta da app:cd src
Crie um arquivo chamado local.settings.json na
srcpasta que contém esses dados JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Crie um arquivo chamado local.settings.json na
srcpasta que contém esses dados JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "java", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Crie um arquivo chamado local.settings.json na
srcpasta que contém esses dados JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Crie um arquivo chamado local.settings.json na
srcpasta que contém esses dados JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "powershell", "FUNCTIONS_WORKER_RUNTIME_VERSION": "7.2", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Crie um arquivo chamado local.settings.json na
srcpasta que contém esses dados JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "python", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Criar e ativar um ambiente virtual
Na src pasta, execute estes comandos para criar e ativar um ambiente virtual chamado .venv:
python3 -m venv .venv
source .venv/bin/activate
Se o Python não instalar o pacote venv na sua distribuição Linux, execute o seguinte comando:
sudo apt-get install python3-venv
Configurar um emulador de armazenamento local
Use o emulador Azurite para executar seu projeto de código localmente antes de criar e usar recursos do Azure.
Se ainda não o fez, instale o Azurite.
Pressione F1. Na paleta de comandos, procure e execute o comando
Azurite: Startpara iniciar o emulador de armazenamento local.Na área Azure , expanda Workspace>Attached Storage Accounts>Local Emulator, clique com o botão direito (Ctrl-click no Mac) Blob Containers, selecione Criar Blob Container..., e crie estes dois contentores de armazenamento blob no emulador local:
-
unprocessed-pdf: contentor que o gatilho monitoriza para eventos de armazenamento. -
processed-pdf: contentor onde a função envia blobs processados como saída.
-
Expanda os Blob Containers, clique com o botão direito (ou Ctrl-click no Mac) em unprocessed-pdf, selecione Carregar Ficheiros..., pressione Enter para aceitar o diretório raiz e carregue os ficheiros PDF da
datapasta do projeto.
Quando é executado localmente, pode usar o REST para ativar a função simulando que a função recebe uma mensagem de uma subscrição de evento.
Executar a função localmente
O Visual Studio Code integra-se com as ferramentas principais do Azure Functions para permitir que você execute esse projeto em seu computador de desenvolvimento local usando o emulador Azurite. A variável de ambiente PDFProcessorSTORAGE define a ligação à conta de armazenagem, que também está definida como "UseDevelopmentStorage=true" no ficheiro local.settings.json quando é executado localmente.
Execute este comando a partir da
srcpasta do projeto num terminal ou prompt de comandos:func startmvn clean package mvn azure-functions:runnpm install func startnpm install npm startQuando o host Functions inicia, ele escreve o nome do trigger e o tipo de trigger na saída do terminal. No Functions, a pasta raiz do projeto contém o ficheiro host.json.
Com o Core Tools ainda a funcionar no Terminal, abra o ficheiro
test.httpno seu projeto e selecione Enviar Solicitação para ativar a funçãoProcessBlobUploadenviando um evento de teste para o webhook do evento blob.Este passo simula o recebimento de um evento a partir de uma subscrição de eventos quando executado localmente, e deverá ver a informação do pedido e do ficheiro processado escrita nos logs. Se não estiver a usar o Cliente REST, deve usar outra ferramenta REST segura para chamar o endpoint com a carga útil em
test.http.Na área de Espaço de Trabalho do contentor do blob, expanda processed-pdf e verifique se a função processou o ficheiro PDF e copiou-o para um prefixo
processed-.Quando terminar, pressione Ctrl+C na janela do terminal para interromper o processo do
func.exehost.
Rever o código (opcional)
Pode rever o código que define o gatilho do blob da Grade de Eventos no ficheiro do projeto ProcessBlobUpload.cs. A função demonstra como:
- Usar
BlobTriggercomSource = BlobTriggerSource.EventGridpara processamento quase em tempo real - Associe a
BlobClientpara o blob de origem e aBlobContainerClientpara o destino - Processar o conteúdo do blob e copiá-lo para outro contentor usando streams
Podes rever o código que define o gatilho do blob da Grade de Eventos no ficheiro do projeto function_app.py. A função demonstra como:
- Usar
@app.blob_triggercomsource="EventGrid"para processamento quase em tempo real - Aceder ao conteúdo do blob usando o
InputStreamparâmetro - Copiar ficheiros processados para o contentor de destino usando o Azure Storage SDK
Pode rever o código que define o acionador do blob no Event Grid no ficheiro de projeto processBlobUpload.ts. A função demonstra como:
- Usar
app.storageBlob()comsource: 'EventGrid'para processamento quase em tempo real - Aceder ao conteúdo blob usando o Node.js Azure Storage SDK
- Processar e copiar ficheiros para o contentor de destino de forma assíncrona
Podes rever o código que define o disparador do blob Event Grid no ficheiro do projeto ProcessBlobUpload.java. A função demonstra como:
- Usar
@BlobTriggercomsource = "EventGrid"para processamento quase em tempo real - Aceder ao conteúdo do blob usando
BlobInputStreamparâmetro - Copiar ficheiros processados para o contentor de destino usando o Azure Storage SDK para Java
Pode rever o código que define o acionador de blobs do Event Grid no ficheiro de projeto ProcessBlobUpload/run.ps1 e no correspondente function.json. A função demonstra como:
- Configurar o blob trigger com
"source": "EventGrid"em function.json para processamento quase em tempo real - Aceder ao conteúdo blob usando os cmdlets Azure Storage do PowerShell
- Processar e copiar ficheiros para o contentor de destino usando módulos Azure PowerShell
Depois de revisar e verificar seu código de função localmente, é hora de publicar o projeto no Azure.
Criar recursos Azure e implementar
Use o azd up comando para criar a aplicação de funções num plano Flex Consumption juntamente com outros recursos necessários do Azure, incluindo a subscrição do evento. Depois de a infraestrutura estar pronta, azd também implementa o código do teu projeto na nova aplicação de funções no Azure.
No Visual Studio Code, pressione F1 para abrir a paleta de comandos. Procure e execute o comando
Azure Developer CLI (azd): Sign In with Azure Developer CLI, depois inicie sessão usando a sua conta Azure.Na raiz do projeto, pressione F1 para abrir a paleta de comandos. Procura e executa o comando
Azure Developer CLI (azd): Provision and Deploy (up)para criar os recursos Azure necessários e implementa o teu código.Quando solicitado na janela Terminal, forneça estes parâmetros de implantação necessários:
Pronta Description Selecione uma Assinatura do Azure para usar Escolhe a subscrição onde queres criar os teus recursos. Nome do ambiente Um ambiente usado para manter um contexto de implantação exclusivo para seu aplicativo. localização do Azure Região do Azure na qual criar o grupo de recursos que contém os novos recursos do Azure. Apenas as regiões que atualmente suportam o plano Flex Consumption são mostradas. O
azd upcomando utiliza as tuas respostas a estes prompts com os ficheiros de configuração do Bicep para criar e configurar estes recursos necessários do Azure, seguindo as melhores práticas mais recentes:- Plano Flex Consumption e aplicação funcional
- Conta Azure Storage com contentores blob
- Application Insights (recomendado)
- Políticas e funções de acesso para a sua conta
- Subscrição do Event Grid para eventos blob
- Ligações de serviço a serviço usando identidades geridas (em vez de cadeias de ligação armazenadas)
Depois de o comando ser concluído com sucesso, a sua aplicação corre no Azure com uma subscrição de evento configurada para ativar a sua função quando os blobs são adicionados ao
unprocessed-pdfcontentor.Toma nota do
AZURE_STORAGE_ACCOUNT_NAMEe doAZURE_FUNCTION_APP_NAMEna saída. Estes nomes são únicos para a sua conta de armazenamento e aplicação de funções no Azure, respetivamente.
Verificar a função implementada
No Visual Studio Code, pressione F1. Na paleta de comandos, procure e execute o comando
Azure Storage: Upload Files.... Aceite o diretório raiz e, como antes, carregue um ou mais ficheiros PDF dadatapasta do projeto.Quando solicitado, selecione o nome da sua nova conta de armazenamento (de
AZURE_STORAGE_ACCOUNT_NAME). Selecione Blob Containers>unprocessed-pdf.Pressione F1. Na paleta de comandos, procure e execute o comando
Azure Storage: Open in Explorer. Selecione a mesma conta >de armazenamento Blob Containers>processed-pdf, depois Abra numa nova janela.No Explorador, verifica se os ficheiros PDF que carregaste foram processados pela tua função. A saída é escrita no
processed-pdfcontentor com o prefixoprocessed-.
O blob da Grelha de Eventos processa ficheiros em segundos após o upload. Esta velocidade demonstra as capacidades quase em tempo real desta abordagem em comparação com os gatilhos tradicionais baseados em sondagens.
Reimplantar seu código
Executa o azd up comando tantas vezes quanto precisares tanto para provisionar os teus recursos Azure como para implementar atualizações de código na tua aplicação de funções.
Observação
Os arquivos de código implantados são sempre substituídos pelo pacote de implantação mais recente.
Suas respostas iniciais a azd prompts e quaisquer variáveis de ambiente geradas por azd são armazenadas localmente em seu ambiente nomeado. Use o azd env get-values comando para revisar todas as variáveis em seu ambiente que foram usadas ao criar recursos do Azure.
Limpeza de recursos
Quando terminares de trabalhar com a tua function app e recursos relacionados, usa este comando para eliminar a function app e os seus recursos relacionados do Azure. Esta ação ajuda-o a evitar custos adicionais:
azd down --no-prompt
Observação
A --no-prompt opção instrui azd a excluir seu grupo de recursos sem uma confirmação sua.
Este comando não afeta seu projeto de código local.