Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste início rápido, você usará o Visual Studio Code para criar um aplicativo que responde a eventos em um contêiner de Armazenamento de Blobs. Depois de testar o código localmente usando um emulador, você o implanta em um novo aplicativo de funções sem servidor em execução em um plano de Consumo Flex no Azure Functions.
O projeto usa a extensão da CLI do Desenvolvedor do Azure (azd) com o Visual Studio Code para simplificar a inicialização e a verificação do código do projeto localmente, bem como a implantação do código no Azure. Esta implantação segue as melhores práticas atuais para implantações seguras e escaláveis do Azure Functions.
Este artigo dá suporte à versão 4 do modelo de programação Node.js para o Azure Functions.
Este artigo dá suporte à versão 2 do modelo de programação do 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 compatíveis.
A Extensão Azure Functions para Visual Studio Code. Essa 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 Toolsna paleta de comandos. Se você não tiver o npm ou o Homebrew instalado em seu computador local, será necessário instalar ou atualizar manualmente o Core Tools.
Extensão do C# para Visual Studio Code.
O Java Development Kit, versão 8, 11, 17 ou 21 (Linux).
Apache Maven, versão 3.0 ou posterior.
-
Node.js 18.x ou posterior. Use o comando
node --versionpara verificar sua versão.
Versões do Python compatíveis com o Azure Functions. Para obter mais informações, confira Como instalar o Python.
A extensão do Python para Visual Studio Code.
- A extensão CLI para Desenvolvedores do Azure para Visual Studio Code.
Extensão rest client ou uma ferramenta REST equivalente que você usa para executar solicitações HTTP com segurança.
Inicializar o projeto
Use o azd init comando da paleta de comandos para criar um projeto de código local do Azure Functions a partir de um modelo.
No Visual Studio Code, abra uma pasta ou workspace em que você deseja criar seu projeto.
Pressione F1 para abrir a paleta de comandos, pesquise e execute o comando
Azure Developer CLI (azd): Initialize App (init)e escolha Selecionar um modelo.Pode haver um pequeno atraso ao
azdinicializar a pasta ou o workspace atual.
Quando solicitado, escolha Selecionar um modelo e, em seguida, pesquise e selecione
Azure Functions C# Event Grid Blob Trigger using Azure Developer CLI.Quando solicitado no terminal, insira um nome de ambiente exclusivo, como
blobevents-dotnet.Esse comando extrai os arquivos de projeto do repositório de modelos e inicializa o projeto na pasta ou workspace atual.
Quando solicitado, escolha Selecionar um modelo e, em seguida, pesquise e selecione
Azure Functions Python Event Grid Blob Trigger using Azure Developer CLI.Quando solicitado no terminal, insira um nome de ambiente exclusivo, como
blobevents-python.Esse comando extrai os arquivos de projeto do repositório de modelos e inicializa o projeto na pasta ou workspace atual.
Quando solicitado, escolha Selecionar um modelo e, em seguida, pesquise e selecione
Azure Functions TypeScript Event Grid Blob Trigger using Azure Developer CLI.Quando solicitado, insira um nome de ambiente exclusivo, como
blobevents-typescript.Esse comando extrai os arquivos de projeto do repositório de modelos e inicializa o projeto na pasta ou workspace atual.
Quando solicitado, escolha Selecionar um modelo e, em seguida, pesquise e selecione
Azure Functions Java Event Grid Blob Trigger using Azure Developer CLI.Quando solicitado, insira um nome de ambiente exclusivo, como
blobevents-java.Esse comando extrai os arquivos de projeto do repositório de modelos e inicializa o projeto na pasta ou workspace atual.
Quando solicitado, escolha Selecionar um modelo e, em seguida, pesquise e selecione
Azure Functions PowerShell Event Grid Blob Trigger using Azure Developer CLI.Quando solicitado, insira um nome de ambiente exclusivo, como
blobevents-powershell.Esse comando extrai os arquivos de projeto do repositório de modelos e inicializa o projeto na pasta ou workspace atual.
Em azd, o ambiente mantém um contexto de implantação exclusivo para seu aplicativo e você pode definir mais de um. Ele também faz parte do nome do grupo de recursos que você cria no Azure.
Adicionar o arquivo local.settings.json
O Functions precisa do arquivo local.settings.json para configurar o host ao ser executado localmente.
Execute este comando para ir para a pasta do
srcaplicativo:cd src
Crie um arquivo chamado local.settings.json na pasta
srcque contenha 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 pasta
srcque contenha esses dados JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "java", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Crie um arquivo chamado local.settings.json na pasta
srcque contenha esses dados JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Crie um arquivo chamado local.settings.json na pasta
srcque contenha 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 pasta
srcque contenha esses dados JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "python", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Criar e ativar um ambiente virtual
src Na 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 distribuição do Linux, execute o seguinte comando:
sudo apt-get install python3-venv
Configurar o emulador de armazenamento local
Use o emulador do Azurite para executar seu projeto de código localmente antes de criar e usar recursos do Azure.
Caso ainda não tenha feito isso, instale o Azurite.
Pressione F1. Na paleta de comandos, pesquise e execute o comando
Azurite: Startpara iniciar o emulador de armazenamento local.Na área do Azure, expanda Workspace>Contas de Armazenamento Anexadas>Emulador Local, clique com o botão direito do mouse (Ctrl-click no Mac) em Contêineres de Blob, selecione Criar Contêiner de Blobs... e crie estes dois contêineres de armazenamento de blobs no emulador local:
-
unprocessed-pdf: contêiner que o gatilho monitora em busca de eventos de armazenamento. -
processed-pdf: contêiner em que a função envia blobs processados como saída.
-
Expanda Contêineres de Blob, clique com o botão direito do mouse (ou Ctrl-clique no Mac) em unprocessed-pdf, selecione Carregar Arquivos..., pressione Enter para aceitar o diretório raiz e carregue os arquivos PDF da pasta do projeto
data.
Ao executar localmente, você pode usar REST para disparar a função simulando a função que recebe uma mensagem de uma assinatura de evento.
Executar a função localmente
O Visual Studio Code integra-se às ferramentas do Azure Functions Core para permitir que você execute esse projeto em seu computador de desenvolvimento local usando o emulador do Azurite. A variável de ambiente PDFProcessorSTORAGE define a conexão da conta de armazenamento, que também é configurada no arquivo local.settings.json como "UseDevelopmentStorage=true" ao executar localmente.
Execute este comando na pasta do projeto
srcem um terminal ou prompt de comando:func startmvn clean package mvn azure-functions:runnpm install func startnpm install npm startQuando o host do Functions é iniciado, ele grava o nome do gatilho e o tipo de gatilho na saída do terminal. No Functions, a pasta raiz do projeto contém o arquivo host.json.
Com o Core Tools ainda em execução no Terminal, abra o arquivo
test.httpno projeto e selecione Enviar Solicitação para ativar a funçãoProcessBlobUploadenviando um evento de blob de teste para o webhook de evento de blob.Esta etapa simula o recebimento de um evento de uma assinatura de eventos quando executado localmente, e você deverá ver a solicitação e as informações do arquivo processado registradas nos logs. Se você não estiver usando o REST Client, deverá usar outra ferramenta REST segura para chamar o endpoint com a carga útil em
test.http.Na área de trabalho do contêiner de blob, expanda processed-pdf e verifique se a função processou o arquivo PDF e copiou-o com um prefixo
processed-.Quando terminar, pressione Ctrl+C na janela do terminal para interromper o processo do host
func.exe.
Examinar o código (opcional)
Você pode revisar o código que define o gatilho de blob do Event Grid no arquivo de projeto ProcessBlobUpload.cs. A função demonstra como:
- Usar
BlobTriggercomSource = BlobTriggerSource.EventGridpara processamento quase em tempo real - Vincular a
BlobClientpara o blob de origem e aBlobContainerClientpara o destino - Processar o conteúdo do blob e copiá-lo para outro contêiner usando fluxos
Você pode revisar o código que define o gatilho de blob do Event Grid no arquivo de projeto function_app.py. A função demonstra como:
- Usar
@app.blob_triggercomsource="EventGrid"para processamento quase em tempo real - Acessar o conteúdo do blob usando o
InputStreamparâmetro - Copiar arquivos processados para o contêiner de destino usando o SDK de Armazenamento do Azure
Você pode revisar o código que define o gatilho de blob do Event Grid no arquivo de projeto processBlobUpload.ts. A função demonstra como:
- Usar
app.storageBlob()comsource: 'EventGrid'para processamento quase em tempo real - Usar o SDK de Armazenamento do Azure para Node.js para acessar o conteúdo do blob.
- Processar e copiar arquivos para o contêiner de destino de forma assíncrona
Você pode revisar o código que define o gatilho de blob do Event Grid no arquivo ProcessBlobUpload.java. A função demonstra como:
- Usar
@BlobTriggercomsource = "EventGrid"para processamento quase em tempo real - Acessar o conteúdo do blob usando
BlobInputStreamo parâmetro - Copiar arquivos processados para o contêiner de destino usando o SDK de Armazenamento do Azure para Java
Você pode examinar o código que define o gatilho de blob do Event Grid no arquivo de projeto ProcessBlobUpload/run.ps1 e o function.json correspondente. A função demonstra como:
- Configurar o blob trigger com
"source": "EventGrid"no function.json para processamento quase em tempo real - Acessar o conteúdo de blob usando cmdlets de armazenamento do PowerShell Azure
- Processar e copiar arquivos para o contêiner de destino usando módulos do Azure PowerShell
Depois de examinar e verificar seu código de função localmente, é hora de publicar o projeto no Azure.
Criar recursos do Azure e implantar
Use o comando azd up para criar o aplicativo de funções em um plano de Consumo Flexível, junto com outros recursos necessários do Azure, incluindo a assinatura do evento. Depois que a infraestrutura estiver pronta, azd também implantará o código do projeto no novo aplicativo de funções no Azure.
No Visual Studio Code, pressione F1 para abrir a paleta de comandos. Pesquise e execute o comando
Azure Developer CLI (azd): Sign In with Azure Developer CLIe entre usando sua conta do Azure.Na raiz do projeto, pressione F1 para abrir a paleta de comandos. Pesquise e execute o comando
Azure Developer CLI (azd): Provision and Deploy (up)para criar os recursos necessários do Azure e implantar seu código.Quando solicitado na janela terminal, forneça estes parâmetros de implantação necessários:
Rápido Description Selecione uma Assinatura do Azure a ser usada Escolha a assinatura na qual você deseja criar seus recursos. Nome do ambiente Um ambiente que é 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. Somente regiões que atualmente dão suporte para o plano de Consumo Flex são mostradas. O
azd upcomando usa suas respostas a esses prompts com os arquivos de configuração do Bicep para criar e configurar esses recursos necessários do Azure, seguindo as práticas recomendadas mais recentes:- plano de Consumo Flex e aplicativo de funções
- Conta do Armazenamento do Azure com contêineres de blob
- Application Insights (recomendado)
- Políticas de acesso e funções para sua conta
- Assinatura da Grade de Eventos para eventos de blob
- Conexões de serviço a serviço usando identidades gerenciadas (em vez de cadeias de conexão armazenadas)
Depois que o comando for concluído com êxito, seu aplicativo será executado no Azure com uma assinatura de evento configurada para disparar sua função quando os blobs forem adicionados ao
unprocessed-pdfcontêiner.Anote os
AZURE_STORAGE_ACCOUNT_NAMEeAZURE_FUNCTION_APP_NAMEna saída. Esses nomes são exclusivos para sua conta de armazenamento e aplicativo de funções no Azure, respectivamente.
Verificar a função implantada
No Visual Studio Code, pressione F1. Na paleta de comandos, pesquise e execute o comando
Azure Storage: Upload Files.... Aceite o diretório raiz e, como antes, carregue um ou mais arquivos PDF da pasta dodataprojeto.Quando solicitado, selecione o nome da nova conta de armazenamento (de
AZURE_STORAGE_ACCOUNT_NAME). Selecione Contêineres de Blob>PDF não processado.Pressione F1. Na paleta de comandos, pesquise e execute o comando
Azure Storage: Open in Explorer. Selecione a mesma conta > de armazenamento Contêineres de Blob>processed-pdf, então Abra em nova janela.No Explorer, verifique se os arquivos PDF carregados foram processados pela função. A saída é gravada no contêiner
processed-pdfcom o prefixoprocessed-.
O acionador de blob do Event Grid processa arquivos em questão de segundos após o upload. Essa velocidade demonstra as funcionalidades quase em tempo real dessa abordagem em comparação com os gatilhos tradicionais de blob baseados em sondagem.
Reimplantar seu código
Execute o azd up comando quantas vezes precisar para provisionar seus recursos do Azure e implantar atualizações de código em seu aplicativo de funções.
Observação
Os arquivos de código implantados são sempre sobrescritos pelo pacote de implantação mais recente.
Suas respostas iniciais aos prompts azd e quaisquer variáveis de ambiente geradas por azd são armazenadas localmente no seu ambiente nomeado. Use o comando azd env get-values para revisar todas as variáveis no seu ambiente que foram usadas ao criar recursos do Azure.
Limpar os recursos
Quando terminar de trabalhar com seu aplicativo de funções e recursos relacionados, use esse comando para excluir o aplicativo de funções e seus recursos relacionados do Azure. Esta ação ajuda você a evitar incorrer em custos adicionais:
azd down --no-prompt
Observação
A opção --no-prompt instrui azd a excluir seu grupo de recursos sem uma confirmação sua.
Este comando não afeta seu projeto de código local.