Criar e executar o Azure Functions localmente usando o Core Tools

Concluído

O Azure Functions Core Tools permite desenvolver e executar funções em seu computador local com uma linha de comando.

Você deseja criar sua primeira função, uma calculadora de juros simples, localmente em seu computador, e não no editor de funções do portal do Azure. Você não tem certeza se deseja usar um ambiente de desenvolvimento, como o Visual Studio ou o Visual Studio Code, os quais podem ser estendidos para dar suporte diretamente ao Azure Functions. Por fim, você decide usar o Core Tools da linha de comando e de um editor de texto básico.

Nesta unidade, você aprenderá como usar o Core Tools para criar e executar funções localmente. Vamos saber mais sobre as principais ferramentas antes de usá-las no exercício na próxima unidade, que orienta você por esses conceitos usando o Azure Cloud Shell.

O que é o Azure Functions Core Tools?

O Azure Functions Core Tools é um runtime autônomo junto com um conjunto de ferramentas de linha de comando que você pode usar para desenvolver, executar e implantar código de função do seu computador local.

O Core Tools dá suporte a várias funcionalidades relacionadas a funções, incluindo:

  • Gerar os arquivos e pastas necessários para desenvolver funções localmente.
  • Forneça um runtime local para que você possa testar e depurar funções em seu computador.
  • Publicar as suas funções no Azure.

Usando as Core Tools, você pode realizar essas tarefas a partir da linha de comando. Use qualquer editor de texto de sua preferência para escrever o código e modificar uma configuração. Você também precisa da CLI do Azure ou do Azure PowerShell para entrar no Azure, criar recursos do Azure e implantar arquivos de projeto.

O Core Tools é empacotado como um utilitário de linha de comando chamado func. Se você executar func da linha de comando sem nenhum comando adicional, ele exibirá informações sobre a versão e um guia de uso. Não é preciso ler agora, mas veja com o que ele será:

A portion of the help text output by func.

O Visual Studio e o Visual Studio Code usam o Core Tools para fornecer uma experiência de depuração local integrada.

Aqui estão alguns conceitos fundamentais sobre as funções.

Aplicativos e projetos do Functions

Ao desenvolver funções localmente, você trabalha em um projeto de funções. O projeto é uma pasta que contém o código e os arquivos de configuração que definem suas funções. Este projeto de código é implantado em um recurso de aplicativo de função no Azure. Em uma instância do aplicativo de funções, todas as funções compartilham um conjunto comum de valores e recursos de configuração.

Cada aplicativo de função destina-se a uma pilha de linguagens de programação específica, e cada pilha tem requisitos próprios de projeto específicos a linguagens de programação. Felizmente, você nunca precisa criar funções de projeto manualmente. Você pode usar as Core Tools para gerar funções e projetos de funções do zero na linguagem de programação desejada.

Versões de Core Tools

Como as Core Tools incluem o runtime do Azure Functions, a versão principal das Core Tools que você usa sempre precisa corresponder à versão principal do runtime do Functions no Azure. Atualmente, a versão 4.x é a versão recomendada do runtime do Functions e a única versão que dá suporte a todas as linguagens de programação. Embora este tutorial discuta e use o Core Tools versão 4.x, você não precisa instalar nada em seu computador. Neste tutorial, você usa as Core Tools em um ambiente do Azure Cloud Shell em seu navegador. O Cloud Shell já tem as versões corretas do Core Tools, da CLI do Azure e do Node.js, além de um editor de código já instalado.

Desenvolvimento local versus Desenvolvimento do portal do Azure

Embora o portal do Azure forneça um editor interno para seu código de função, você só pode usá-lo para pilhas de linguagens de programação específicas. Você também não pode usar o portal para editar funções que você desenvolve e implanta localmente no Azure. Depois de começar a usar qualquer fluxo de trabalho de desenvolvimento local, não é possível usar o portal do Azure para fazer alterações em seu código de funções.

As Core Tools dão suporte ao desenvolvimento local para todas as pilhas de linguagens de programação compatíveis com o Azure Functions.

Criar funções localmente

Veja aqui em mais detalhes como criar funções com ferramentas básicas e executá-las localmente. Veremos como publicar no Azure posteriormente neste tutorial.

Criar um projeto de funções com func init

Para criar um projeto do Functions, execute func init na linha de comando.

Output from func init creating a JavaScript function project.

func init pergunta qual runtime de linguagem de programação usar para o aplicativo. Ele adapta o conteúdo da pasta do projeto adequadamente.

Quando você cria um projeto de funções, os arquivos incluídos na pasta do projeto dependem do runtime da linguagem de programação selecionado. Independentemente do runtime escolhido, os dois arquivos de projeto mais críticos estão sempre presentes:

  • host.json armazena valores de configuração de tempo de execução, como opções de log, para o aplicativo de função. As configurações armazenadas neste arquivo são usadas ao executar funções localmente e no Azure.
  • local.settings.json armazena valores de configuração aplicáveis somente ao aplicativo de funções quando ele é executado localmente com o Core Tools. Esse arquivo contém dois tipos de configurações:
    • Configurações de tempo de execução locais: usadas para configurar o tempo de execução de funções locais.
    • Configurações de aplicativo personalizadas: você adiciona e configura com base nas necessidades do aplicativo. Todas as funções no aplicativo podem acessá-las e usá-las.

Os projetos de funções gerados por func init não possuem nenhuma função. Na próxima seção, descubra como adicionar um.

Criar uma função com func new

Cada função individual em um projeto requer código e uma configuração para definir seu comportamento. A execução de func new em uma pasta de projeto de funções cria uma função e todos os arquivos de que você precisa para começar a desenvolver.

Output from func new creating a JavaScript function.

Após perguntar qual tipo de gatilho de função você deseja usar e como gostaria de nomear sua função, func new gera uma implementação inicial completa e pronta para publicação na linguagem escolhida do seu projeto de função. O código inicial ilustra como usar o tipo de gatilho selecionado e está lá para ajudar você a começar rapidamente. Substitua o corpo da função por sua implementação e você estará pronto para criar, executar, testar e publicar.

Na próxima parte deste tutorial, usaremos func new para criar uma função disparada por HTTP e modificar a implementação inicial para executar um cálculo de juros simples.

Executar funções localmente

As funções não são programas que podem ser executados por conta própria. Elas precisam ser hospedadas. O host do Azure Functions é o que sustenta tudo o que está fora do código da sua função: ele carrega as configurações, fica atento aos gatilhos e às solicitações HTTP, inicia o processo de trabalho para a linguagem em que suas funções foram escritas, grava a saída de log e muito mais. No Azure, os aplicativos de funções executam automaticamente o host quando iniciam.

As Core Tools podem ser usadas para executar a sua própria instância do host do Azure Functions e experimentar suas funções localmente antes de você publicá-las. Com a execução de suas funções antes da publicação, é possível garantir que a configuração e o código sejam carregados corretamente e testar suas funções fazendo chamadas HTTP reais sem a necessidade de recursos do Azure.

Para iniciar o host de funções localmente, execute func start na pasta de projeto de funções. No final da saída, o Core Tools exibirá URLs locais que podem ser usadas para chamar cada uma das suas funções. Enquanto o host estiver em execução, é possível usar qualquer ferramenta ou biblioteca que faça chamadas HTTP, como curl, para interagir com suas funções. O Core Tools grava qualquer saída de log produzida pelo host para o terminal em tempo real.

func start output showing a function invocation URL.