Exercício – explorar os tipos de associação de entrada e de saída

Concluído

Neste exercício, criamos uma função que é executada quando recebe uma solicitação HTTP, e responde a cada solicitação retornando uma mensagem.

Confira a seguir uma ilustração de alto nível daquilo que criaremos.

Screenshot of Code and Test pane showing default code for HTTP trigger function template.

O parâmetro req é a associação de gatilho e o parâmetro res é a associação de saída. Pensar nesses parâmetros como abreviações para "solicitação" e "resposta" pode ajudar.

Screenshot of Code and Test pane showing default code for HTTP trigger function template.

O parâmetro Request é a associação de gatilho e o parâmetro Response é a associação de saída.

Criar um aplicativo de funções

Vamos criar um aplicativo de funções que podemos usar em todo este módulo. Um aplicativo de funções permite que você agrupe funções como uma unidade lógica para facilitar o gerenciamento, a implantação e o compartilhamento de recursos.

  1. Entre no portal do Azure usando a conta que você utilizou para ativar a área restrita.

  2. No menu de recursos ou na home page, selecione Criar um recurso. O painel Criar um recurso será exibido.

  3. No menu Criar um recurso, selecione Computação e, na lista de resultados, selecione Aplicativo de Funções. Talvez seja necessário pesquisar Aplicativo de Funções na janela Pesquisar serviços e marketplace.

  4. Selecione Criar. O painel Criar Aplicativo de Funções é exibido.

  5. Na guia Básico, insira os valores a seguir para cada configuração.

    Configuração Valor Descrição
    Detalhes do projeto
    Subscription Assinatura do Concierge A assinatura do Azure que você deseja usar para este exercício.
    Grupo de recursos Na lista suspensa, selecione o [nome do grupo de recursos da área restrita] O grupo de recursos para a área restrita.
    Detalhes da Instância
    Nome do aplicativo de funções Insira um nome globalmente exclusivo Esse nome identifica o novo aplicativo de funções. Os caracteres válidos são a-z, 0-9 e -.
    Deseja implantar código ou imagem de contêiner? Código Opção para publicar arquivos de código ou um contêiner do Docker.
    Pilha de runtime Na lista suspensa, selecione Node.js O código de exemplo neste módulo é escrito em JavaScript.
    Versão Aceitar padrão O valor padrão é suficiente para este exercício.
    Região Na lista suspensa, selecione uma localização Selecione a região mais próxima de você.
  6. Aceite os padrões para todas as outras opções. Selecione Examinar + criar para validar as configurações e selecione Criar para provisionar e implantar o aplicativo de funções.

  7. A implantação pode levar algum tempo. Nos controles globais ao lado do nome da conta, selecione o ícone Notificações e observe uma mensagem Implantação bem-sucedida.

  8. Depois que a implantação da função for concluída, selecione Ir para o recurso. O painel Visão geral do seu aplicativo de funções é exibido.

  1. Entre no portal do Azure usando a conta que você utilizou para ativar a área restrita.

  2. No menu de recursos ou na home page, selecione Criar um recurso. O painel Criar um recurso será exibido.

  3. No menu Criar um recurso, selecione Computar e pesquise e selecione Aplicativo de Funções. Talvez seja necessário pesquisar Aplicativo de Funções na janela Pesquisar serviços e marketplace.

  4. Selecione Criar. O painel Criar Aplicativo de Funções é exibido.

  5. Na guia Básico, insira os valores a seguir para cada configuração.

    Configuração Valor Descrição
    Detalhes do projeto
    Subscription Assinatura do Concierge A assinatura do Azure que você deseja usar para este exercício.
    Grupo de recursos Na lista suspensa, selecione o [nome do grupo de recursos da área restrita] O grupo de recursos para a área restrita.
    Detalhes da Instância
    Nome do aplicativo de funções Insira um nome globalmente exclusivo Esse nome identifica o novo aplicativo de funções. Os caracteres válidos são a-z, 0-9 e -.
    Deseja implantar código ou imagem de contêiner? Código Opção para publicar arquivos de código ou um contêiner do Docker.
    Pilha de runtime Na lista suspensa, selecione PowerShell Core O código de exemplo para este módulo é escrito em PowerShell.
    Versão Aceitar padrão O valor padrão é suficiente para este exercício.
    Região Na lista suspensa, selecione uma localização Selecione a região mais próxima de você.
  6. Aceite os padrões para todas as outras opções. Selecione Examinar + criar para validar sua entrada e depois selecione Criar para provisionar e implantar o aplicativo de funções.

  7. A implantação pode levar algum tempo. Nos controles globais ao lado do nome da conta, selecione o ícone Notificações e observe uma mensagem Implantação bem-sucedida.

  8. Depois que a implantação da função for concluída, selecione Ir para o recurso. O painel Visão geral do seu aplicativo de funções é exibido.

Dica

Se estiver com problemas para localizar seu aplicativo de funções no portal do Azure, descubra como adicionar aplicativos de funções aos seus favoritos no portal do Azure.

Criar uma função

Agora que temos um aplicativo de funções, é hora de criar uma função. Cada função é ativada por meio de um gatilho. Neste módulo, definimos um gatilho HTTP usando um modelo predefinido.

  1. Selecione o botão Criar no portal do Azure na guia Funções na página Visão geral.

  2. O painel Criar função é exibido.

    Screenshot for the Create Function pane.

  3. Na seção Selecionar um modelo, selecione o modelo de gatilho HTTP.

  4. Na seção Detalhes do modelo, confirme as configurações a seguir.

    • Na caixa de texto Nova Função, aceite o nome padrão de HttpTrigger1. O Azure cria automaticamente nomes exclusivos para as funções que você cria. Você pode escolher um nome diferente, mas lembre-se de usar nomes com significado.

    • Na caixa de texto Nível de autorização, aceite o valor padrão Função. O nível de autorização determina quais chaves precisam estar presentes na solicitação para que ela seja executada. O nível de autorização de função requer uma chave específica da função, que podemos encontrar depois que ela é criada.

  5. Selecione Criar. Quando a função de gatilho tiver sido propagada para o aplicativo de funções, o painel Funções do Aplicativo de Funções será exibido, listando HttpTrigger1.

  6. Na barra de comandos, selecione Obter URL da função. A caixa de diálogo Obter URL da função é exibida.

  7. Na lista suspensa, selecione padrão (chave de função), o ícone Copiar para área de transferência no final da URL e a opção OK para fechar o diálogo.

  8. Na barra de endereços de uma nova guia do navegador, cole a URL da função que você copiou. Pressione Enter para executar a solicitação no navegador. A resposta pode levar alguns minutos conforme o aplicativo de funções é inicializado. Se você receber um erro de tempo limite, atualize para reenviar a solicitação.

    Quando a função responder, você deverá ver uma saída semelhante ao exemplo a seguir exibida no navegador.

    This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.
    
  9. Adicione a cadeia de consulta a seguir &name=Joe ao final da URL. A URL resultante deverá ser parecida com o seguinte exemplo:

    https://example.azurewebsites.net/api/HttpTrigger1?code=AbCdEfGhIjKlMnOpQrStUvWxYz==&name=Joe

  10. Pressione Enter para executar a solicitação no navegador. Quando a função responder, você deverá ver uma saída semelhante ao exemplo a seguir exibida no navegador.

    Hello, Joe. This HTTP triggered function executed successfully.
    

    Como você pôde ver neste exercício até agora, você precisa definir um gatilho ao criar uma função. Cada função tem apenas um gatilho. Neste exemplo, estamos usando um gatilho HTTP, o que significa que nossa função é iniciada quando ele recebe uma solicitação HTTP. A implementação padrão do modelo, mostrada no JavaScript na captura de tela a seguir, retorna o valor de um parâmetro name que estava na cadeia de consulta ou no corpo da solicitação. Caso nenhuma cadeia de caracteres de consulta seja fornecida, a função responderá com uma mensagem solicitando um valor de nome de quem estiver chamando.

    Illustration of default HTTP trigger, showing HTTP request and response binding parameters.

  11. No portal do Azure, no menu Função, selecione Código + Teste.

    O painel Código + Teste para sua função é exibido e mostra o conteúdo do arquivo index.js. O código JavaScript padrão para sua função deve ser semelhante ao exemplo a seguir.

    module.exports = async function (context, req) {
        context.log('JavaScript HTTP trigger function processed a request.');
    
        const name = (req.query.name || (req.body && req.body.name));
        const responseMessage = name
            ? "Hello, " + name + ". This HTTP triggered function executed successfully."
            : "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.";
    
        context.res = {
            // status: 200, /* Defaults to 200 */
            body: responseMessage
        };
    }
    
  12. Vamos examinar rapidamente o outro arquivo da função, o arquivo de configuração function.json. Acesse esse arquivo selecionando function.json na lista suspensa do caminho do arquivo acima do bloco de código. Os dados de configuração são mostrados na seguinte listagem JSON.

    {
        "bindings": [
        {
            "authLevel": "function",
            "type": "httpTrigger",
            "direction": "in",
            "name": "req",
            "methods": [
            "get",
            "post"
            ]
        },
        {
            "type": "http",
            "direction": "out",
            "name": "res"
        }
      ]
    }
    

    Essa função tem uma associação de gatilho chamada req do tipo httpTrigger e uma associação de saída chamada res do tipo http.

No código anterior da função, vimos que podemos acessar o conteúdo da solicitação HTTP de entrada por meio do parâmetro req. Da mesma forma, enviamos uma resposta HTTP definindo o parâmetro res. As associações realmente cuidam de parte do trabalho pesado para nós.

Agora que temos um aplicativo de funções, vamos criar uma função. Cada função é ativada por meio de um gatilho. Neste módulo, criamos um gatilho HTTP usando um modelo.

  1. Selecione o botão Criar no portal do Azure na guia Funções na página Visão geral.

  2. O painel Criar função é exibido.

  3. Na seção Selecionar um modelo, selecione o modelo de gatilho HTTP.

  4. Na seção Detalhes do modelo, confirme as configurações a seguir.

    • Na caixa de texto Nova Função, aceite o nome padrão de HttpTrigger1. O Azure fornece automaticamente um nome exclusivo quando você cria uma função. Você pode escolher um nome diferente, mas lembre-se de usar nomes com significado.

    • Na caixa de texto Nível de autorização, aceite o valor padrão Função. O nível de autorização determina quais chaves precisam estar presentes na solicitação para que ela seja executada. A função requer uma chave específica da função.

      Screenshot for the Add Function pane.

  5. Selecione Criar. O painel HttpTrigger1 da função será exibido.

  6. Na barra de comandos, selecione Obter URL da função. A caixa de diálogo Obter URL da função é exibida.

  7. Selecione padrão (chave de função) na lista suspensa, clique no ícone Copiar para área de transferência no final da URL, depois clique em OK para fechar a caixa de diálogo.

  8. Na barra de endereços de uma nova guia do navegador, cole a URL da função que você copiou. Pressione Enter para executar a solicitação no navegador. A resposta pode levar alguns minutos conforme o aplicativo de funções é inicializado. Se você receber um erro de tempo limite, atualize para reenviar a solicitação.

    Quando a função responder, você deverá ver uma saída semelhante ao exemplo a seguir exibida no navegador.

    This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.
    
  9. Adicione a cadeia de consulta &name=Joe ao final da URL. A URL resultante deverá ser parecida com o seguinte exemplo:

    https://example.azurewebsites.net/api/HttpTrigger1?code=AbCdEfGhIjKlMnOpQrStUvWxYz==&name=Joe

  10. Pressione Enter para executar a solicitação no navegador. Quando a função responder, você deverá ver uma saída semelhante ao exemplo a seguir exibida no navegador.

    Hello, Joe. This HTTP triggered function executed successfully.
    

    Como você pôde ver neste exercício até agora, você precisa definir um gatilho ao criar uma função. Cada função tem apenas um gatilho. Neste exemplo, estamos usando um gatilho HTTP, o que significa que nossa função é iniciada quando ele recebe uma solicitação HTTP. A implementação padrão com base no modelo, mostrada no PowerShell na captura de tela a seguir, usa o cmdlet Push-OutputBinding para responder com o valor do parâmetro name, que fazia parte da cadeia de consulta ou corpo da solicitação. Caso nenhuma cadeia de caracteres seja fornecida, a função responderá com uma mensagem solicitando um valor de nome de quem estiver chamando.

    Code and Test pane for HTTP request showing response and respective binding parameters.

  11. No menu Função, selecione Código + Teste. O painel Código + Teste para sua função é exibido e mostra o conteúdo do arquivo run.ps1.

    O código padrão do PowerShell para sua função deve ser semelhante ao exemplo a seguir.

    using namespace System.Net
    
    # Input bindings are passed in via param block.
    param($Request, $TriggerMetadata)
    
    # Write to the Azure Functions log stream.
    Write-Host "PowerShell HTTP trigger function processed a request."
    
    # Interact with query parameters or the body of the request.
    $name = $Request.Query.Name
    if (-not $name) {
        $name = $Request.Body.Name
    }
    
    $body = "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response."
    
    if ($name) {
        $body = "Hello, $name. This HTTP triggered function executed successfully."
    }
    
    # Associate values to output bindings by calling 'Push-OutputBinding'.
    Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
        StatusCode = [HttpStatusCode]::OK
        Body = $body
    })
    
  12. Vamos examinar rapidamente a função do outro arquivo, o arquivo de configuração function.json. Abra esse arquivo selecionando function.json na lista suspensa do caminho do arquivo. Os dados de configuração são mostrados na seguinte listagem JSON.

    {
      "bindings": [
        {
          "authLevel": "function",
          "type": "httpTrigger",
          "direction": "in",
          "name": "Request",
          "methods": [
            "get",
            "post"
          ]
        },
        {
          "type": "http",
          "direction": "out",
          "name": "Response"
        }
      ]
    }
    

    Como você pode ver, essa função tem uma associação de gatilho chamada Solicitação do tipo httpTrigger e uma associação de saída chamada Resposta do tipo http. No código anterior da função, vimos como acessamos o conteúdo da solicitação HTTP de entrada por meio do parâmetro Request. Da mesma forma, enviamos uma resposta HTTP simplesmente definindo o parâmetro Response. As associações realmente cuidam de parte do trabalho pesado para nós.

Explorar os tipos de associação

  1. No menu Função, selecione Integração. O painel Integração é exibido para sua função.

    Observe que nós já definimos um gatilho e uma associação de saída, como mostra a imagem a seguir. A exibição de integração busca o melhor ajuste para a largura e a altura da tela. As mesmas informações poderão ser exibidas horizontalmente, se a tela for grande o suficiente.

    Screenshot of vertical flow diagram showing Trigger and Inputs leading to Function and Function leading to Outputs.

    Veja que não é possível adicionar mais de um gatilho. Para alterar um gatilho de uma função, você precisa excluir o gatilho e criar outro. No entanto, as seções Entradas e Saídas permitem que você adicione mais de uma associação de modo que a solicitação possa aceitar mais de um valor de entrada e retornar mais de um valor de saída.

  2. Na caixa Entradas, selecione Adicionar entrada. O painel Criar Entrada será exibido. Selecione a lista suspensa Tipo de Associação para exibir uma lista de todos os tipos de associação de entrada possíveis.

    Screenshot of the Add input options.

    Reserve um tempo para considerar como você pode usar cada uma dessas associações de entrada em uma solução.

    Posteriormente neste módulo, adicionamos associações de entrada, mas por enquanto, selecione Cancelar para ignorar esse painel.

  3. Na caixa Saídas, selecione Adicionar saída. O painel Criar Saída será exibido. Selecione a lista suspensa Tipo de Associação para exibir uma lista de todos os tipos de associação de saída possíveis.

    Screenshot of the Add output options.

    Como você pode ver, há vários tipos de associação de saída. Posteriormente neste módulo, adicionamos associações de saída, mas, por enquanto, selecione Cancelar para ignorar esse painel.

  1. No menu Função, selecione Integração. O painel Integração é exibido para sua função.

    Observe que nós já definimos um gatilho e uma associação de saída, como mostra a imagem a seguir. A exibição de integração busca o melhor ajuste para a largura e a altura da tela. As mesmas informações poderão ser exibidas verticalmente se a tela não for grande o suficiente.

    Screenshot of horizontal flow diagram showing Trigger and Inputs leading to Function and Function leading to Outputs.

    Veja que não é possível adicionar mais de um gatilho. Para alterar o gatilho de uma função, você precisa excluir o gatilho e criar outro. No entanto, as seções Entradas e Saídas permitem que você adicione várias associações de modo que a função possa aceitar mais de um valor de entrada e retornar mais de um valor de saída.

  2. Na caixa Entradas, selecione Adicionar entrada. O painel Criar Entrada será exibido. Selecione a lista suspensa Tipo de Associação para exibir uma lista de todos os tipos de associação de entrada possíveis.

    Screenshot of the Add input options.

    Reserve um tempo para considerar como você pode usar cada uma dessas associações de entrada em uma solução. Há muitas possibilidades de escolher.

    Posteriormente neste módulo, adicionamos associações de entrada, mas por enquanto, selecione Cancelar para ignorar esse painel.

  3. Na caixa Saídas, selecione Adicionar saída. O painel Criar Saída será exibido. Selecione a lista suspensa Tipo de Associação para exibir uma lista de todos os tipos de associação de saída possíveis.

    Screenshot of the Add output options.

    Como você pode ver, há vários tipos de associação de saída. Posteriormente neste módulo, adicionamos associações de saída, mas, por enquanto, selecione Cancelar para ignorar esse painel.

Até agora, vimos como criar um aplicativo de funções e adicionar uma função a ele. Já vimos uma função simples em ação, que é executada quando uma solicitação HTTP é feita. Também exploramos o portal do Azure e os tipos de associações de entrada e saída disponíveis para funções. Na próxima unidade, usaremos uma associação de entrada para ler o texto de um banco de dados.