Exercício - Crie uma função localmente usando as ferramentas principais
As Ferramentas Principais do Azure Functions permitem-lhe desenvolver funções localmente no seu próprio computador:
- Criação dos arquivos e pastas necessários para um projeto de funções.
- Fornecendo um host Functions que é executado localmente a partir do diretório raiz do seu projeto.
Você decide iniciar seu trabalho localmente com o Azure Functions desenvolvendo uma função que calcula interesses simples. Eventualmente, você pode criar funções mais complexas que funcionam juntas e chamam outros serviços e bancos de dados. Usar Core Tools para construir uma função que realiza um cálculo de empréstimo básico é um bom começo. Você também deseja tentar executar sua função em seu próprio computador antes de publicá-la no Azure. Você pode fazer tudo isso do Azure Cloud Shell usando as Ferramentas Principais.
O Azure Cloud Shell vem com Core Tools, CLI do Azure e um editor que você pode usar para escrever código. Certifique-se de selecionar Ativar área restrita acima antes de prosseguir.
Criar um projeto local de Funções do Azure
Neste exercício, use o Cloud Shell para desenvolver sua primeira função JavaScript usando as Ferramentas Principais. O Cloud Shell já tem as versões corretas do Core Tools e do Node.js instaladas.
A partir da pasta raiz, execute
func init
para criar um projeto de funções em uma novaloan-wizard
pasta.func init loan-wizard
Quando solicitado a selecionar um tempo de execução do trabalhador, digite 3 para o nó.
Quando lhe for pedido para selecionar um idioma, introduza 1 para javascript.
A saída lista os arquivos que estão sendo gravados no disco, incluindo estes arquivos:
- host.json oferece suporte à configuração no nível do aplicativo para a instância de tempo de execução e tipos específicos de gatilho e ligação.
- local.settings.json define comportamentos somente locais e configurações de aplicativos (variáveis de ambiente local).
- package.json é um ficheiro específico de JavaScript que controla os pacotes que instala e utiliza no seu código.
- .gitignore e extensions.json são arquivos de configuração usados pela ferramenta de controle de versão do Git e pelo Visual Studio Code, respectivamente. Você pode ignorá-los por enquanto.
Criar uma função acionada por HTTP
Está na hora de criar a sua função!
No Cloud Shell, navegue até o novo
loan-wizard
diretório.cd ~/loan-wizard
Execute
func new
para iniciar o assistente de criação de funções.func new
Quando solicitado a selecionar um modelo, digite 7 para o gatilho HTTP.
Quando solicitado a fornecer um nome de função para o gatilho HTTP, digite
simple-interest
.Execute o seguinte comando para abrir o editor do Cloud Shell.
code .
O assistente cria um novo arquivo no projeto de funções chamado
src/functions
simple-interest.js, que tem conteúdo de modelo padrão. Este código dá suporte ao modelo de programação Node.js v4 para o Azure Functions. Reserve um momento agora para explorar os arquivos do projeto usando o editor. A captura de tela mostra a pasta expandida com simple-interest.js aberta no editor.
Implementar a função simple-interest
A implementação de função padrão que o Core Tools criou para nós no simple-interest.js procura uma entrada chamada name
na cadeia de caracteres de consulta ou no corpo da solicitação HTTP de entrada e retorna a cadeia de caracteres Hello, [name]
. É uma boa ilustração de como usar um gatilho HTTP, mas você deseja substituir esse código por um código que calcula juros simples a partir de três parâmetros de entrada.
No painel FILES do editor, expanda a pasta de funções src>e selecione simple-interest.js para abrir o arquivo no editor.
Substitua o conteúdo completo do simple-interest.js pelo seguinte código:
const { app } = require('@azure/functions'); app.http('simple-interest', { methods: ['GET','POST'], authLevel: 'anonymous', handler: async (request, context) => { const principal = parseFloat(request.query.get('principal')); const rate = parseFloat(request.query.get('rate')); const term = parseFloat(request.query.get('term')); if ([principal, rate, term].some(isNaN)) { // If any empty or non-numeric values, return a 400 response with an // error message return { status: 400, body: "Please supply principal, rate and term in the query string" }; } else { // Otherwise set the response body to the product of the three values return { body: principal * rate * term }; } } });
Esse script procura parâmetros chamados
principal
,rate
eterm
na cadeia de caracteres de consulta da solicitação HTTP. Em seguida, devolve o resultado do cálculo dos juros simples (principal * rate * term
).Salve o arquivo pressionando Ctrl S e feche o editor pressionando Ctrl++Q.
Execute a função no Cloud Shell
Para executar sua nova função localmente para experimentá-la, use func start
para iniciar o tempo de execução do Functions (func.exe) em um processo em segundo plano para que você possa usar a linha de comando enquanto ela está em execução. Em seguida, use uma ferramenta de linha de comando, , curl
para interagir com a função.
Se você estiver usando Core Tools de seu próprio computador, você pode usar curl
a partir de uma segunda janela do terminal ou um navegador da web. A saída produzida pelo Core Tools aparece em tempo real na primeira janela do terminal. No Cloud Shell, você está limitado a um único terminal, portanto, precisa executar Core Tools (func.exe) em um processo em segundo plano.
Execute o comando seguinte para iniciar o anfitrião de Funções automaticamente em segundo plano.
func start &> ~/output.txt &
Assim como no , o Cloud Shell ainda deve estar no
func new
loan-wizard
diretório.O host Functions agora está gravando sua saída no arquivo ~/output.txt. Você pode continuar a usar a linha de comando enquanto ela está em execução.
Use o comando para verificar se o
ps
func
processo está em execução.Digite o seguinte comando para exibir o log de saída.
code ~/output.txt
Na saída, você verá uma mensagem que lista
Functions: simple-interest:
está disponível como uma solicitaçãohttp://localhost:7071/api/simple-interest
HTTP GET e POST .Nota
Se vir uma mensagem de erro, selecione Ctrl+C para parar o anfitrião. Certifique-se de que o conteúdo do arquivo de código é o mesmo que o exemplo.
Este URL de host local não é publicado na Web, só é acessível a partir de ferramentas em execução na sua sessão do Cloud Shell.
Feche o editor selecionando Ctrl+Q.
Execute o seguinte comando para enviar uma solicitação HTTP GET para sua função em execução local.
curl "http://localhost:7071/api/simple-interest" -w "\n"
A saída, , indica que nossa função foi invocada com êxito e pode retornar uma resposta,
Please supply principal, rate and term in the query string
mas você não está chamando-a como pretendido. Você precisa fornecer os parâmetros como parte da solicitação HTTP.Invoque a função novamente. Desta vez, forneça um valor para cada um dos parâmetros da cadeia de caracteres de consulta.
curl "http://localhost:7071/api/simple-interest?principal=5000&rate=.035&term=36" -w "\n"
Desta vez, a saída é
6300
. Sua função está funcionando como esperado!Digite o seguinte comando para exibir novamente o log de saída.
code ~/output.txt
Após as entradas de log de inicialização, você verá anexado um conjunto de entradas de log com carimbo de data/hora para cada vez que você chamou a função com
curl
:[2024-02-20T06:25:56.700Z] Executing 'Functions.simple-interest' (Reason='This function was programmatically called via the host APIs.', Id=5daf20c3-f204-41bb-a5b9-021acaf17c04) [2024-02-20T06:25:56.893Z] Executed 'Functions.simple-interest' (Succeeded, Id=5daf20c3-f204-41bb-a5b9-021acaf17c04, Duration=228ms)
Feche o editor selecionando Ctrl+Q.