Introdução ao Azure Functions no Visual Studio para Mac

Importante

O Visual Studio para Mac está programado para ser desativado em 31 de agosto de 2024, de acordo com a Política de Ciclo de Vida Moderna da Microsoft. Embora você possa continuar a trabalhar com o Visual Studio para Mac, há várias outras opções para desenvolvedores no Mac, como a versão prévia da nova extensão do Kit de Desenvolvimento em C# para VS Code.

Saiba mais sobre cronogramas e alternativas de suporte.

O Azure Functions é uma forma de criar e executar snippets de código controlados por eventos (funções) na nuvem, sem a necessidade de gerenciar ou provisionar explicitamente a infraestrutura. Para obter mais informações sobre o Azure Functions, consulte a Documentação do Azure Functions.

Requisitos

As ferramentas de função do Azure estão incluídas no Visual Studio para Mac 7.5 e posterior.

Para criar e implantar funções, você também precisará de uma assinatura do Azure. Se você não tiver uma conta do Azure, inscreva-se hoje mesmo gratuitamente e receba 12 meses de serviços populares gratuitos, crédito gratuito de US$ 200 e mais de 25 serviços sempre gratuitos – >https://azure.com/free.

Criando seu primeiro projeto do Azure Functions

  1. No Visual Studio para Mac, selecione Arquivo > Nova Solução.

  2. Na caixa de diálogo Novo Projeto, selecione o modelo do Azure Functions em Nuvem > Geral e clique em Próximo:

    New Project dialog showing Azure Functions option

  3. Selecione o modelo do Azure Functions inicial que você deseja usar, insira seu nome de função e clique em Próximo.

    New Project dialog showing Azure Functions templates

    Dica

    Embora os modelos (CLI) e o Azure Functions Runtime em pacote sejam mantidos tão atualizados quanto possível, eles inevitavelmente ficam desatualizados. Ao criar um projeto do Functions, o Visual Studio para Mac verificará se há atualizações para a CLI e notificará você conforme mostrado na imagem a seguir. Basta clicar no botão para baixar os modelos atualizados. New project dialog showing Azure Functions updates are available

    Dependendo do tipo de função que você selecionar, a próxima página solicitará que você insira detalhes como direitos de acesso, conforme ilustrado na imagem a seguir:

    New Project dialog showing additional option

    Para obter mais informações sobre os diferentes tipos de modelos do Azure Functions e as propriedades de associação necessárias para configurar cada modelo, consulte a seção Modelos de função disponíveis. Neste exemplo, estamos usando um gatilho HTTP com direitos de acesso definidos como anônimos.

  4. Depois de definir os parâmetros, escolha o local para o projeto e clique em Criar.

O Visual Studio para Mac cria um projeto .NET Standard com uma função padrão incluída. Ela também inclui referências de NuGet a uma variedade de pacotes do AzureWebJobs, bem como ao pacote Newtonsoft.Json.

Visual Studio for Mac editor displaying a brand new Azure function from template

O novo projeto contém os seguintes arquivos:

  • nome-da-sua-função.cs – essa classe contém o código clichê para a função que você selecionou. Ela contém um atributo FunctionName com o nome da função e um atributo de gatilho que especifica o que dispara a função (por exemplo, uma solicitação HTTP). Para obter mais informações sobre o método de função, consulte o artigo Referência do desenvolvedor de C# do Azure Functions.
  • host.json – Este arquivo descreve as opções de configuração global para o host de funções. Para ver um arquivo de exemplo e obter informações sobre as configurações disponíveis para esse arquivo, consulte a Referência de host.json para o Azure Functions.
  • local.settings.json – Este arquivo contém todas as configurações para executar funções localmente. Essas configurações são usadas pelas Ferramentas Básicas do Azure Functions. Para saber mais, confira Arquivo de configurações locais no tópico Ferramentas Básicas do Azure Functions.

Agora que criou um novo projeto do Azure Functions no Visual Studio para Mac, você pode testar a função disparada por HTTP padrão do computador local.

Testando a função localmente

Com o suporte para Azure Functions no Visual Studio para Mac, você pode testar e depurar sua função no computador de desenvolvimento local.

  1. Para testar a função localmente, pressione o botão Executar no Visual Studio para Mac:

    Start debugging button in Visual Studio for mac

  2. Executar o projeto inicia a depuração local na função do Azure e abre uma nova janela do Terminal, conforme ilustrado na imagem a seguir:

    terminal window showing function output

    Copie a URL da saída.

  3. Cole a URL para a solicitação HTTP na barra de endereços do navegador. Adicione a cadeia de caracteres de consulta ?name=<yourname> ao final da URL e execute a solicitação. A imagem a seguir mostra a resposta no navegador para a solicitação GET local retornada pela função:

    HTTP request in browser

Adicionar outra função ao seu projeto

Modelos de função permitem que você crie rapidamente novas funções usando os gatilhos e modelos mais comuns. Para criar outro tipo de função, faça o seguinte:

  1. Para adicionar uma nova função, clique com o botão direito do mouse no nome do projeto e selecione Adicionar > Adicionar Função...:

    context action for adding new function

  2. Na caixa de diálogo Nova Função do Azure, selecione a função de que precisa:

    new Azure function dialog

    Uma lista dos modelos de função do Azure é fornecida na seção Modelos de função disponíveis.

Você pode usar o procedimento acima para adicionar mais funções a seu projeto de aplicativo de funções. Cada função no projeto pode ter um gatilho diferente, mas uma função deve ter apenas um gatilho. Para obter mais informações, consulte Gatilhos e conceitos de associações do Azure Functions.

Publicar no Azure

  1. Clique com o botão direito do mouse no nome do projeto e selecione Publicar > Publicar no Azure: Context menu with Publish > Publish to Azure... option highlighted

  2. Se você já conectou sua conta do Azure ao Visual Studio para Mac, uma lista de serviços de aplicativo disponíveis será exibida. Se você ainda não tiver feito logon, será solicitado que o faça.

  3. Na caixa de diálogo Publicar no Serviço de Aplicativo do Azure, você pode selecionar um serviço de aplicativo existente ou crie um novo clicando em Novo.

  4. Na caixa de diálogo Criar novo Serviço de Aplicativo, insira suas configurações:New App Service dialog, with fields for service name, subscription, resource group, and service plan settings.

    Configuração Descrição
    Nome do Serviço de Aplicativo Um nome globalmente exclusivo que identifica seu novo aplicativo de funções.
    Assinatura A assinatura do Azure a utilizar.
    Grupo de Recursos Nome do grupo de recursos no qual criar o seu aplicativo de funções. Escolha + para criar um novo grupo de recursos.
    Plano de Serviço Escolha um plano existente ou crie um personalizado. Escolha um local em uma região perto de você ou perto de outros serviços acessados pelas funções.
  5. Crie em Próximo para criar uma conta de armazenamento. Uma conta do Armazenamento do Azure é requerida pelo runtime do Functions. Clique em Personalizado para criar uma conta de armazenamento de uso geral ou use uma já existente:

    New App Service dialog with prompt for storage account name.

  6. Clique em Criar para criar um aplicativo de função e recursos relacionados no Azure com essas configurações e implantar seu código de projeto de função.

  7. Uma caixa de diálogo será exibida durante a publicação solicitando a você "Atualizar a versão do Functions no Azure". Clique em Sim:

    Prompt asking to

Configurações do aplicativo de funções

As configurações que você adicionou no local.settings.json também devem ser adicionadas ao aplicativo de funções no Azure. Essas configurações não são carregadas automaticamente quando você publicar o projeto.

Para acessar as configurações do aplicativo, vá para o portal do Azure em https://ms.portal.azure.com/. Em Aplicativos do Functions, selecione Aplicativos de Funções e realce o nome da função:

Azure Functions menu

Na guia Visão geral, selecione Configurações do aplicativo em Recursos configurados:

Over tab of Azure function

Desse ponto em diante, você pode definir as configurações do aplicativo para o aplicativo de funções, no qual você pode adicionar novas configurações do aplicativo ou modificar as existentes:

application settings area of Azure portal

Uma configuração importante que talvez você precise definir é FUNCTIONS_EXTENSION_VERSION. Ao publicar no Visual Studio para Mac, esse valor deve ser definido como beta.

Modelos de função disponíveis

  • Gatilho do GitHub – Responda a eventos que ocorrerem em seus repositórios do GitHub. Para obter mais informações, consulte o Artigo do Azure Functions sobre o GitHub

    • Autor de comentários do GitHub – Esta função será executada quando receber um webhook do GitHub para uma solicitação de pull ou emissão e adicionará um comentário.
    • WebHook do GitHub – Esta função será executada sempre que receber um webhook do GitHub.
  • HTTP – Dispare a execução de seu código usando uma solicitação HTTP. Há modelos explícitos para os gatilhos HTTP a seguir:

    • Gatilho HTTP
    • HTTP GET CRUD (criar, atualizar, ler e excluir)
    • HTTP POST CRUD
    • Gatilho HTTP com parâmetros
  • Temporizador – Execute a limpeza ou outras tarefas em lote seguindo um cronograma predefinido. Esse modelo tem dois campos: um nome e um cronograma, que é uma expressão CRON de seis campos. Para obter mais informações, consulte o Artigo do Azure Functions sobre o Temporizador

  • Gatilho de fila – Esta é uma função que responderá às mensagens conforme elas chegarem na fila do Armazenamento de Filas do Azure. Além do nome da função, esse modelo tem um Caminho (o nome da fila da qual a mensagem será lida) e uma Conexão da conta de armazenamento (o nome da configuração de aplicativo que contém a cadeia de conexão da conta de armazenamento). Para obter mais informações, consulte o Artigo do Azure Functions sobre o Armazenamento de Filas.

  • Gatilho de blob – Processe blobs do Armazenamento do Azure quando eles forem adicionados a um contêiner. Além do nome da função, esse modelo também tem uma propriedade de conexão e de caminho. A propriedade de caminho é o caminho em sua conta de armazenamento que o gatilho monitorará. A conta de conexão é o nome da configuração do aplicativo que contém a cadeia de conexão da sua conta de armazenamento. Para obter mais informações, consulte o Artigo do Azure Functions sobre o Armazenamento de Blobs.

  • WebHook genérico – É uma função simples que será executada sempre que receber uma solicitação de qualquer serviço que dá suporte a webhooks. Para obter mais informações, consulte o Artigo do Azure Functions sobre webhooks genéricos.

  • Orquestração de Funções Duráveis – as Funções Duráveis permitem que você escreva funções com estado em um ambiente sem servidor. A extensão gerencia estado, pontos de verificação e reinicializações para você. Para obter mais informações, consulte os guias do Azure Functions sobre Funções duráveis.

  • Redimensionador de imagem – Esta função cria imagens redimensionadas sempre que um blob é adicionado a um contêiner. O modelo usa a cadeia de conexão e o caminho para o gatilho, uma saída de imagem pequena e uma saída de imagem média.

  • Token SAS – Esta função gera um token SAS para um determinado contêiner do Armazenamento do Azure e um nome de blob. Além do nome da função, esse modelo também tem uma propriedade de conexão e de caminho. A propriedade de caminho é o caminho em sua conta de armazenamento que o gatilho monitorará. A conta de conexão é o nome da configuração do aplicativo que contém a cadeia de conexão da sua conta de armazenamento. Os Direitos de acesso também precisam ser definidos. O nível de autorização controla se a função requer uma chave de API e qual chave deve ser usada; a Função usa uma tecla de função; o Admin usa a chave de acesso da conta. Para obter mais informações, consulte o exemplo de função do Azure em C# para gerar tokens SAS.