Introdução ao Azure FunctionsIntroduction to Azure Functions

O Azure Functions é uma maneira de criar e executar trechos de código controlados por eventos – funções – na nuvem sem a necessidade de gerenciar ou provisionar explicitamente a infraestrutura.Azure functions is a way to create and run event-driven snippets of code –– functions –– in the cloud, without having to explicitly provision or manage infrastructure. Para obter mais informações sobre o Azure Functions, consulte a Documentação do Azure Functions.For more information about Azure Functions, see the Azure Functions documentation.

RequisitosRequirements

As ferramentas do Azure Functions estão incluídas no Visual Studio para Mac 7.5.Azure Function tools are included in Visual Studio for Mac 7.5.

Para criar e implantar funções, você também precisará de uma assinatura do Azure, que está disponível gratuitamente em https://azure.com/free.To create and deploy functions you also need an Azure subscription, which is available for free from https://azure.com/free.

Criando seu primeiro projeto do Azure FunctionsCreating your first Azure Functions project

  1. No Visual Studio para Mac, selecione Arquivo > Nova Solução….In Visual Studio for Mac, select File > New Solution….
  2. Na caixa de diálogo Novo Projeto, selecione o modelo do Azure Functions em Nuvem > Geral e clique em Próximo:From the New Project dialog, select the Azure Functions template under Cloud > General and click Next:

    Caixa de diálogo Novo Projeto mostrando a opção do Azure Functions

  3. Selecione o modelo do Azure Functions inicial que você deseja usar, insira seu nome de função e clique em Próximo.Select the initial Azure Functions template that you wish to use, enter your function name and click Next.

    Caixa de diálogo Novo Projeto mostrando modelos do Azure Functions

    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:Depending on the type of function you select, the next page will prompt you to enter details, such as access rights, as illustrated in the following image:

    Caixa de diálogo Novo Projeto mostrando uma opção adicional

    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.For more information on the different types of Azure Functions templates and the binding properties required to configure each template, see the Available function templates section. Neste exemplo, estamos usando um gatilho HTTP com direitos de acesso definidos como anônimos.For this example, we're using a Http trigger with access rights set to anonymous.

  4. Depois de definir os parâmetros, escolha o local para o projeto e clique em Criar.Once you've set the parameters, choose the location for the project and click Create.

O Visual Studio para Mac cria um projeto .NET Standard com uma função padrão incluída.Visual Studio for Mac creates a .NET Standard project with a default function included. Ela também inclui referências de NuGet a uma variedade de pacotes do AzureWebJobs, bem como ao pacote Newtonsoft.Json.It also includes NuGet references to a variety of AzureWebJobs packages, as well as the Newtonsoft.Json package.

Editor do Visual Studio para Mac exibindo uma nova função do Azure do modelo

O novo projeto contém os seguintes arquivos:The new project contains the following files:

  • nome-da-sua-função.cs – essa classe contém o código clichê para a função que você selecionou.your-function-name.cs – This class contains boilerplate code for the function that you selected. 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,It contains a FunctionName attribute with the function name, and a trigger attribute that specifies what triggers the function (eg. uma solicitação HTTP).a HTTP request). Para obter mais informações sobre o método de função, consulte o artigo Referência do desenvolvedor de C# do Azure Functions.For more information on the function method, refer to the Azure Functions C# developer reference article.
  • host.json – Este arquivo descreve as opções de configuração global para o host de funções.host.json – This file describes the global configuration options for Functions host. 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.For an example file and information on the available settings for this file, see the host.json reference for Azure Functions.
  • local.settings.json – Este arquivo contém todas as configurações para executar funções localmente.local.settings.json – This file contains all the settings for running functions locally. Essas configurações são usadas pelas Ferramentas Básicas do Azure Functions.These settings are used by the Azure Functions Core Tools. Para obter mais informações, consulte Arquivo de configurações local no artigo sobre as Ferramentas Básicas do Azure Functions.For more information, see Local settings file in the Azure Functions Core Tools article.

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.Now that you've created a new Azure Functions project in Visual Studio for Mac, you can test out the default HTTP-triggered function from your local machine.

Testando a função localmenteTesting the function locally

Com o suporte para Azure Functions no Visual Studio para Mac, você pode testar e depurar sua função no computador de desenvolvimento local.With Azure Functions support in Visual Studio for Mac you can test and debug your function on your local development computer.

  1. Para testar a função localmente, pressione o botão Executar no Visual Studio para Mac:To test your function locally, press the Run button in Visual Studio for Mac:

    Botão Iniciar depuração no Visual Studio para 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:Running the project starts local debugging on the Azure Function and opens a new Terminal window, as illustrated in the following image:

    Janela do Terminal mostrando a saída da função

    Copie a URL da saída.Copy the URL from the output.

  3. Cole a URL da solicitação HTTP na barra de endereços do navegador.Paste the URL for the HTTP request into your browser's address bar. Adicione a cadeia de caracteres de consulta ?name=<yourname> ao final da URL e execute a solicitação.Add the query string ?name=<yourname> to the end of the URL and execute the request. A imagem a seguir mostra a resposta no navegador para a solicitação GET local retornada pela função:The following image shows the response in the browser to the local GET request returned by the function:

    Solicitação HTTP no navegador

Adicionar outra função ao seu projetoAdding another function to your project

Modelos de função permitem que você crie rapidamente novas funções usando os gatilhos e modelos mais comuns.Function Templates enable you to quickly create new functions using the most common triggers and templates. Para criar outro tipo de função, faça o seguinte:To create another type of function, do the following:

  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...:To add a new function, right-click on the project name and select Add > Add Function...:

    Ação de contexto para adicionar nova função

  2. Na caixa de diálogo Nova Função do Azure, selecione a função de que precisa:From the New Azure Function dialog, select the function you require:

    Caixa de diálogo Nova Função do Azure

    Uma lista dos modelos de função do Azure é fornecida na seção Modelos de função disponíveis.A list of the Azure Function templates are provided in the Available function templates section.

Você pode usar o procedimento acima para adicionar mais funções ao seu projeto de aplicativo de funções.You can use the above procedure to add more functions to your function app project. Cada função no projeto pode ter um gatilho diferente, mas uma função deve ter exatamente um gatilho.Each function in the project can have a different trigger, but a function must have exactly one trigger. Para obter mais informações, veja Conceitos de associações e gatilhos do Azure Functions.For more information, see Azure Functions triggers and bindings concepts.

Publicar no AzurePublish to Azure

  1. Clique com o botão direito do mouse no nome do projeto e selecione Publicar > Publicar no Azure...: opção de menu Publicar no AzureRight-click on the project name and select Publish > Publish to Azure…: Publish to azure menu option
  2. Se você já conectou conta do Azure ao Visual Studio para Mac, uma lista de serviços de aplicativo disponíveis é exibida.If you've already connected your Azure account to Visual Studio for Mac a list of available app services are displayed. Se você ainda não tiver feito logon, será solicitado que o faça.If you haven't logged in, you'll be prompted to do so.
  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.From the Publish to Azure App Service dialog, you can either select an existing app service or create a new one by clicking New.
  4. Na caixa de diálogo Criar novo serviço de aplicativo, insira as configurações: opção de menu Publicar no AzureIn the Create new App Service dialog, enter your settings: Publish to azure menu option

    ConfiguraçãoSetting DescriçãoDescription
    Nome do Serviço de AplicativoApp Service Name Um nome exclusivo que identifica seu novo aplicativo de funções.A globally unique name that identifies your new function app.
    AssinaturaSubscription A assinatura do Azure a usar.The Azure subscription to use.
    Grupo de RecursosResource Group O Nome do grupo de recursos no qual criar o seu aplicativo de funções.Name of the resource group in which to create your function app. Escolha + para criar um novo grupo de recursos.Choose + to create a new resource group.
    Plano de ServiçoService Plan Escolha um plano existente ou crie um personalizado.Choose an existing plan or create a custom plan. Escolha um local em uma região perto de você ou perto de outros serviços acessados pelas funções.Choose a Location in a region near you or near other services your functions access.

    Caution

    Há um bug na versão 7.6 do Visual Studio para Mac que fará com que a publicação falhe com um erro de provisionamento se você tentar criar um plano de serviço personalizado com o Preço definido como Consumo.There is a bug in the 7.6 version of Visual Studio for Mac that will cause publishing to fail with a provisioning error if you attempt to create a custom service plan with the Pricing set to Consumption. Isso será corrigido na próxima versão do serviço.This will be fixed in the next service release.

  5. Crie em Próximo para criar uma conta de armazenamento.Click Next to create a storage account. Uma conta de armazenamento do Azure é requerida pelo tempo de execução do Functions.An Azure storage account is required by the Functions runtime. Clique em Personalizado para criar uma conta de armazenamento de uso geral ou use uma já existente:Click Custom to create a general purpose storage account, or use an existing one:

    Opção de menu Publicar no Azure

  6. Clique em Criar para criar um aplicativo de funções e recursos relacionados no Azure com essas configurações e implante o código do projeto de função.Click Create to create a function app and related resources in Azure with these settings and deploy your function project code.

  7. Uma caixa de diálogo será exibida durante a publicação solicitando a você "Atualizar a versão do Functions no Azure".You may be prompted with a dialog during publishing informing you to "Update Functions Version on Azure". Clique em Sim:Click Yes:

    Opção de menu Publicar no Azure

Caution

Há um bug na versão do Visual Studio para Mac 7.6 em que o FUNCTIONS_EXTENSION_VERSION não está definido corretamente como "beta", o que significa que sua função pode não ser executada.There is a bug in the 7.6 version of Visual Studio for Mac where the FUNCTIONS_EXTENSION_VERSION is not correctly set to "beta", meaning that your function may not run. Para corrigir isso, vá para as Configurações do aplicativo de funções e defina FUNCTIONS_EXTENSION_VERSION de "-1" para "beta".To fix this, go to your Function app settings and set FUNCTIONS_EXTENSION_VERSION from "-1" to "beta".

Configurações do aplicativo de funçõesFunction app settings

As configurações que você adicionou no local.settings.json também devem ser adicionadas ao aplicativo de funções no Azure.Any settings you added in the local.settings.json must be also added to the function app in Azure. Essas configurações não são carregadas automaticamente quando você publica o projeto.These settings are not uploaded automatically when you publish the project.

Para acessar as configurações do aplicativo, vá para o portal do Azure em https://ms.portal.azure.com/.To access your app settings, go to the azure portal at https://ms.portal.azure.com/. Em Aplicativos do Functions, selecione Aplicativos de Funções e realce o nome da função:Under Functions Apps, select Function Apps and highlight your function name:

menu do azure functions

Na guia Visão geral, selecione Configurações do aplicativo em Recursos configurados:From the Overview tab select Application settings under Configured features:

Guia Visão geral da função do azure

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:From here you can set Application Settings for the function app, where you can add new application settings or modify existing ones:

área de configurações do aplicativo do portal do azure

FUNCTIONS_EXTENSION_VERSION é uma configuração importante que talvez você precise definir.One important setting you may need to set is FUNCTIONS_EXTENSION_VERSION. Ao publicar no Visual Studio para Mac, esse valor deve ser definido como beta.When publishing from Visual Studio for Mac, this value should be set to beta.

Modelos de função disponíveisAvailable function templates

  • Gatilho do GitHub – Responda a eventos que ocorrerem em seus repositórios do GitHub.GitHub Trigger – Respond to events that occur in your GitHub repositories. Para obter mais informações, consulte o Artigo do Azure Functions sobre o GitHubFor more information, see the Azure Functions article on 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.GitHub commenter – This function will be run when it receives a GitHub webhook for an issue or pull request and adds a comment.
    • WebHook do GitHub – Esta função será executada sempre que receber um webhook do GitHub.GitHub WebHook – This function will be run when it receives a GitHub webhook.
  • HTTP – Dispare a execução de seu código usando uma solicitação HTTP.HTTP – Trigger the execution of your code by using an HTTP request. Há modelos explícitos para os gatilhos HTTP a seguir:There are explicit templates for the following HTTP triggers:

    • Gatilho HttpHttp Trigger
    • Http GET CRUDHttp GET CRUD
    • Http POST CRUDHttp POST CRUD
    • Gatilho Http com parâmetrosHttp Trigger with parameters
  • Temporizador – Execute a limpeza ou outras tarefas em lote seguindo um cronograma predefinido.Timer – Execute cleanup or other batch tasks on a predefined schedule. Esse modelo tem dois campos: um nome e um cronograma, que é uma expressão CRON de seis campos.This template takes two fields: a Name and a schedule, which is a six field CRON expression. Para obter mais informações, consulte o Artigo do Azure Functions sobre o TemporizadorFor more information, see the Azure functions article on Time

  • Gatilho de fila – Esta é uma função que responderá às mensagens conforme elas chegarem na fila do Armazenamento do Azure.Queue Trigger – This is a function that will respond to messages as they arrive in the Azure Storage queue. 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).In addition to the function name, this template takes a Path (the name of the queue from which the message will be read) and storage account Connection (the name of the app setting containing your storage account connection string). Para obter mais informações, consulte o Artigo do Azure Functions sobre o Armazenamento de Filas.For more information, see the Azure functions article on Queue Storage.

  • Gatilho de blob – Processe blobs do Armazenamento do Azure quando eles forem adicionados a um contêiner.Blob Trigger – Process Azure Storage blobs when they are added to a container. Além do nome da função, esse modelo também tem uma propriedade de conexão e de caminho.In addition to the function name, this template also takes a path and connection property. A propriedade de caminho é o caminho em sua conta de armazenamento que o gatilho monitorará.The path property is the path within your storage account that the trigger will monitor. 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.The connection account is the name of the app setting containing your storage account connection string. Para obter mais informações, consulte o Artigo do Azure Functions sobre o Armazenamento de Blobs.For more information, see the Azure functions Blob Storage article.

  • 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.Generic WebHook – This is a simple function that will run whenever it receives a request from any service that supports webhooks. Para obter mais informações, consulte o Artigo do Azure Functions sobre webhooks genéricos.For more information, see the Azure functions article on generic webhooks.

  • Orquestração de Funções Duráveis – Funções Duráveis permitem que você escreva funções com estado em um ambiente sem servidor.Durable functions orchestration – Durable Functions let you write stateful functions in a serverless environment. A extensão gerencia o estado, os pontos de verificação e as reinicializações para você.The extension manages state, checkpoints, and restarts for you. Para obter mais informações, consulte os guias do Azure Functions sobre Durable Functions.For more information, see the Azure functions guides on Durable functions.

  • Redimensionador de imagem – Esta função cria imagens redimensionadas sempre que um blob é adicionado a um contêiner.Image Resizer – This function creates resized images whenever a blob is added to a container. 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.The template takes path and connection string for the trigger, a small image output, and a medium image output.

  • Token SAS – Esta função gera um token SAS para um determinado contêiner do Armazenamento do Azure e um nome de blob.SAS token – This function generates a SAS token for a given Azure Storage container and blob name. Além do nome da função, esse modelo também tem uma propriedade de conexão e de caminho.In addition to the function name, this template also takes a path and connection property. A propriedade de caminho é o caminho em sua conta de armazenamento que o gatilho monitorará.The path property is the path within your storage account that the trigger will monitor. 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.The connection account is the name of the app setting containing your storage account connection string. Os Direitos de acesso também precisam ser definidos.The Access rights also need to be set. O nível de autorização controla se a função requer uma chave de API e qual chave deve ser usada; Função usa uma tecla de função; Admin usa a chave mestra.Authorization level controls whether the function requires an API key and which key to use; Function uses a function key; Admin uses your master key. Para obter mais informações, consulte o exemplo de Função do Azure em C# para gerar tokens SAS.For more information, see the C# Azure Function for generating SAS tokens sample.