Exercício - Crie uma função localmente usando as ferramentas principais

Concluído

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.

  1. A partir da pasta raiz, execute func init para criar um projeto de funções em uma nova loan-wizard pasta.

    func init loan-wizard
    
  2. Quando solicitado a selecionar um tempo de execução do trabalhador, digite 3 para o nó.

  3. 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!

  1. No Cloud Shell, navegue até o novo loan-wizard diretório.

    cd ~/loan-wizard
    
  2. Execute func new para iniciar o assistente de criação de funções.

    func new
    
  3. Quando solicitado a selecionar um modelo, digite 7 para o gatilho HTTP.

  4. Quando solicitado a fornecer um nome de função para o gatilho HTTP, digite simple-interest.

  5. Execute o seguinte comando para abrir o editor do Cloud Shell.

    code .
    

    Screenshot showing the simple-interest folder with the function.json file open in Cloud Shell code editor.

    O assistente cria um novo arquivo no projeto de funções chamado src/functionssimple-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.

  1. No painel FILES do editor, expanda a pasta de funções src>e selecione simple-interest.js para abrir o arquivo no editor.

  2. 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, ratee term na cadeia de caracteres de consulta da solicitação HTTP. Em seguida, devolve o resultado do cálculo dos juros simples (principal * rate * term).

  3. 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, , curlpara 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.

  1. 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 newloan-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 psfunc processo está em execução.

  2. 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ção http://localhost:7071/api/simple-interestHTTP 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.

  3. Feche o editor selecionando Ctrl+Q.

  4. 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 stringmas você não está chamando-a como pretendido. Você precisa fornecer os parâmetros como parte da solicitação HTTP.

  5. 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!

  6. 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)
    
    
  7. Feche o editor selecionando Ctrl+Q.