Executar código a pedido com as Funções do Azure

Concluído

Agora que criamos um aplicativo de função, vamos ver como criar, configurar e executar uma função. Executaremos a nossa função no próximo exercício, para que não necessite de completar nenhuma tarefa nesta unidade.

Acionadores

As funções são acionadas por um evento, isto é, são executadas em resposta a um evento. O tipo de evento que inicia uma função é chamado de gatilho. Cada função deve ser configurada com exatamente um gatilho.

Você pode disparar a execução da função usando solicitações HTTP, um temporizador agendado e eventos dos seguintes serviços do Azure:

Serviço do Azure Descrição do acionador
Armazenamento de Blobs Inicia uma função quando é detetado um blob novo ou atualizado.
BD do Cosmos para o Azure Inicia uma função quando são detetadas inserções e atualizações.
Event Grid Inicia uma função quando é recebido um evento do Event Grid.
Event Hubs Inicia uma função quando um evento é recebido de Hubs de Eventos.
Armazenamento de Filas Inicia uma função quando um novo item é recebido numa fila. A mensagem da fila é apresentada como uma entrada da função.
Service Bus Inicia uma função em resposta a mensagens de uma fila do Service Bus.

Enlaces

Uma associação é uma maneira declarativa de conectar dados e serviços à sua função. As ligações interagem com várias fontes de dados, o que significa que você não precisa escrever o código em sua função para se conectar a fontes de dados e gerenciar conexões. A plataforma trata desse processo complexo por si, como parte do código de enlace. Cada ligação tem uma direção: seu código lê dados de ligações de entrada e grava dados em ligações de saída. Cada função pode ter zero ou mais enlaces para gerir a entrada e a saída de dados processados pela função.

Um gatilho é um tipo de ligação de entrada que tem a capacidade de iniciar a execução de algum código.

O Azure oferece um grande número de enlaces para ligar a diferentes serviços de mensagens e armazenamento.

Definir um enlace de exemplo

Vamos examinar um exemplo de configuração de uma função com um enlace de entrada (acionador) e um enlace de saída. Digamos que queremos escrever uma nova linha no armazenamento de Tabela do Azure sempre que uma nova mensagem aparecer no Armazenamento de Filas do Azure. Esse cenário pode ser implementado usando um gatilho de Armazenamento de Filas do Azure e uma associação de saída de armazenamento de Tabela do Azure.

O seguinte fragmento é o ficheiro function.json para este cenário.

{
  "bindings": [
    {
      "name": "order",
      "type": "queueTrigger",
      "direction": "in",
      "queueName": "myqueue-items",
      "connection": "MY_STORAGE_ACCT_APP_SETTING"
    },
    {
      "name": "$return",
      "type": "table",
      "direction": "out",
      "tableName": "outTable",
      "connection": "MY_TABLE_STORAGE_ACCT_APP_SETTING"
    }
  ]
}

Nossa configuração JSON especifica que nossa função é acionada quando uma mensagem é adicionada a uma fila chamada myqueue-items. O valor de retorno de nossa função é então gravado em outTable no armazenamento de tabela do Azure.

Para funções do PowerShell, a escrita nos enlaces de saída é feita explicitamente com o cmdlet Push-OutputBinding.

Este exemplo é uma ilustração simples de como podemos configurar enlaces para uma função. Podemos alterar a saída para ser um e-mail usando uma ligação SendGrid ou colocar um evento em um Service Bus para notificar algum outro componente em nossa arquitetura. Podemos até ter várias ligações de saída para enviar dados para vários serviços.

Gorjeta

Para exibir e editar o conteúdo de function.json no portal do Azure, na página inicial, selecione seu aplicativo de função e, no painel direito, selecione Exibição JSON. O modo de exibição JSON de recurso exibe a ID do recurso e o código JSON editável. Para fechar a visualização JSON, selecione o X no canto superior direito do painel.

Nem todas as linguagens suportadas pelo Functions usam o arquivo function.json para definir funções.

Criar uma função no portal do Azure

O Azure Functions tem modelos de função predefinidos, que se baseiam em um tipo específico de gatilho. Esses modelos, no idioma escolhido, facilitam o início da criação da sua primeira função.

Este módulo não é suportado para todos os idiomas suportados pelo Functions, e o portal em si não suporta a criação de funções em todos os idiomas suportados pelo Functions.

Para idiomas com suporte que usam o arquivo function.json para definir funções, você pode criar e editar essas funções diretamente no portal do Azure. Essas linguagens suportadas pelo portal incluem: JavaScript, PowerShell, Python e C# Script (.csx). As linguagens que definem funções diretamente no próprio código devem ser desenvolvidas fora do portal e implantadas no Azure. Essas linguagens não suportadas pelo portal incluem: C#, Java, Python (modelo de programação v2) e JavaScript/TypeScript (Node.js modelo de programação v4).

Modelos de função

Ao criar sua primeira função no portal, você pode selecionar um gatilho predefinido para sua função. Com base em suas seleções, o Azure gera código padrão e informações de configuração, como a criação de uma entrada de log de eventos quando os dados de entrada são recebidos.

A seleção de um modelo no painel Adicionar função fornece acesso fácil aos ambientes, gatilhos e dependências de desenvolvimento mais comuns. Ao criar uma função no portal do Azure, você pode escolher entre mais de 20 modelos. Uma vez criado, você pode personalizar ainda mais o código.

Quando você cria uma função a partir de um modelo, vários arquivos são criados, incluindo um arquivo de configuração, function.json, e um arquivo de código-fonte, index.js.

Você pode criar ou editar funções para seu aplicativo de função selecionando Funções na categoria Funções no menu Aplicativo de função.

Quando você seleciona uma função que criou em seu aplicativo de função, o painel Função é aberto. Ao selecionar Código + Teste no menu Função, você tem acesso a ações na barra de comandos para testar e executar o código, salvar ou descartar as alterações feitas ou obter a URL publicada. Ao selecionar Testar/Executar na barra de comandos, você pode executar casos de uso para solicitações que incluem cadeias de caracteres e valores de consulta. O caminho da função acima da caixa de código exibe o nome do arquivo que está aberto. Você pode selecionar um arquivo específico na lista suspensa para testar ou editar, por exemplo, function.json.

Screenshot of the function code and test editor showing the expanded Test/Run view, with menu options highlighted.

Na imagem anterior, o painel direito tem as guias Entrada e Saída . Selecionar a guia Entrada permite que você crie e teste a função adicionando parâmetros de consulta e fornecendo valores para sua cadeia de caracteres de consulta. A guia Saída exibe os resultados da solicitação.

Testar a Função do Azure

Depois de criar uma função no portal, você vai querer testá-la. Existem duas abordagens:

  • Testá-lo no portal
  • Executando-o manualmente

Testar no portal do Azure

O portal também dispõe de uma forma prática de testar as suas funções. Como descrito anteriormente, na captura de tela anterior. Quando você seleciona Executar neste painel, os resultados aparecem automaticamente na guia Saída e o painel Logs é aberto para exibir o status.

Executar função manualmente

Pode iniciar uma função ao acionar manualmente o acionador configurado. Por exemplo, se você estiver usando um gatilho HTTP, poderá usar uma ferramenta, como Postman ou cURL, para iniciar uma solicitação HTTP para a URL do ponto de extremidade da função, que está disponível na definição da função (Obter URL da função).

Painel de monitoramento e Application Insights

A capacidade de monitorizar as suas funções é de extrema importância durante o desenvolvimento e produção. O portal do Azure fornece um painel de monitoramento, que você ativa habilitando a integração do Application Insights. No menu Aplicativo de Função, em Configurações, selecione Application Insights, selecione Ativar Application Insights e selecione Aplicar. Na caixa de diálogo, selecione Sim. O painel do Application Insights fornece uma maneira rápida de exibir o histórico de operações de função exibindo o carimbo de data/hora, o código de resultado, a duração e o ID da operação preenchidos pelo Application Insights.

Screenshot showing the HTTP function Application Insights dashboard with function results, corresponding HTTP status codes, and the Monitoring menu items highlighted.

Painel de logs de streaming

Depois de habilitar o Application Insights no portal do Azure, você pode adicionar instruções de log à sua função para depuração. Os métodos chamados para cada idioma recebem um objeto de "registro", que pode ser usado para adicionar informações de log ao painel Logs no painel Código + Teste ao executar um teste.

Escreva em logs do seu código usando o método no context objeto, que é passado para o log manipulador. O exemplo a seguir grava no nível de log padrão (informações):

context.log('Enter your logging statement here');

Escreva em logs de seu código usando o Write-Host cmdlet, conforme mostrado no exemplo a seguir:

Write-Host "Enter your logging statement here"

Erros, falhas, avisos e anomalias

Você pode usar Métricas ou opções da categoria Investigar no menu Função para monitorar o desempenho, diagnosticar falhas ou configurar dezenas de pastas de trabalho predefinidas para gerenciar seu aplicativo de função. Tudo, desde erros de compilação e avisos no código, até estatísticas de uso por função.