Compartilhar via


Início rápido: adicionar sinalizadores de recursos a um aplicativo do Azure Functions

Neste início rápido, você cria um aplicativo do Azure Functions e usa sinalizadores de recursos nele. Você usa o gerenciamento de recursos da Configuração de Aplicativos do Azure para armazenar centralmente todos os sinalizadores de recursos e controlar seus estados.

Pré-requisitos

Adicionar um sinalizador de recursos

Adicione um sinalizador de recursos chamado Beta ao repositório da Configuração de Aplicativos e deixe o Rótulo e a Descrição com seus valores padrão. Para mais informações sobre como adicionar sinalizadores de recursos a um repositório usando o portal do Azure ou a CLI, acesse Criar um sinalizador de recurso.

Habilitar o sinalizador de recurso chamado Beta

Criar um aplicativo de funções

Crie um aplicativo do Azure Functions usando o Visual Studio selecionando o modelo do Azure Functions (C# ). Este modelo orienta você na configuração de configurações essenciais para seu projeto. Para obter instruções detalhadas, consulte Desenvolver o Azure Functions usando o Visual Studio.

Use a tabela a seguir como referência para parâmetros de chave ao criar seu Aplicativo de Funções.

Configuração Valor
Trabalho do Functions .NET 8.0 Isolado
Função Gatilho HTTP
Nível de autorização Anônimo

Observação

A Configuração de Aplicativo do Azure pode ser usada com o Azure Functions no modelo de trabalho isolado ou no modelo em processo. Este início rápido usa o modelo de trabalho isolado como exemplo. Você pode encontrar exemplos de código completos para ambos os modelos no repositório GitHub da Configuração de Aplicativos do Azure.

Conectar um repositório de Configuração de Aplicativos

Você pode se conectar ao seu armazenamento de configuração de aplicativo usando o Microsoft Entra ID (recomendado) ou uma cadeia de conexão.

  1. Clique com o botão direito do mouse no projeto e selecione Gerenciar Pacotes do NuGet. Na guia Procurar, pesquise por e adicione a versão estável mais recente dos pacotes NuGet indicados ao seu projeto.

    • Microsoft.Azure.AppConfiguration.Functions.Worker
    • Microsoft.FeatureManagement
    • Azure.Identity
  2. Abra Program.cs e atualize o código da seguinte maneira. Adicione a Configuração de Aplicativos do Azure como uma fonte de configuração extra chamando o AddAzureAppConfiguration método.

    Use a autenticação DefaultAzureCredential no repositório da Configuração de Aplicativos. Siga as instruções para atribuir à credencial a função Leitor de Dados de Configuração de Aplicativo . Certifique-se de permitir tempo suficiente para a permissão se propagar antes de executar seu aplicativo.

    using Azure.Identity;
    using Microsoft.Azure.Functions.Worker.Builder;
    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Hosting;
    using Microsoft.FeatureManagement;
    
    var builder = FunctionsApplication.CreateBuilder(args);
    
    // Connect to Azure App Configuration
    builder.Configuration.AddAzureAppConfiguration(options =>
    {
        Uri endpoint = new(Environment.GetEnvironmentVariable("AZURE_APPCONFIG_ENDPOINT") ?? 
            throw new InvalidOperationException("The environment variable 'AZURE_APPCONFIG_ENDPOINT' is not set or is empty."));
        options.Connect(endpoint, new DefaultAzureCredential())
               // Load all feature flags with no label. To load feature flags with specific keys and labels, set via FeatureFlagOptions.Select.
               // Use the default refresh interval of 30 seconds. It can be overridden via FeatureFlagOptions.SetRefreshInterval.
               .UseFeatureFlags();
    });
    

    O método UseFeatureFlags() instrui o provedor a carregar sinalizadores de recursos. Por padrão, todos os sinalizadores de recursos sem rótulos são carregados e atualizados a cada 30 segundos. O comportamento de seleção e atualização de sinalizadores de recursos são configurados independentemente de outros valores-chave de configuração. Você pode personalizar esses comportamentos passando uma FeatureFlagOptions ação para o UseFeatureFlags método. Use FeatureFlagOptions.Select para especificar as chaves e os rótulos dos sinalizadores de recursos a serem carregados e use FeatureFlagOptions.SetRefreshInterval para substituir o intervalo de atualização padrão.

    Dica

    Se você não quiser que nenhuma configuração diferente dos sinalizadores de recurso seja carregada em seu aplicativo, chame options.Select("_") para carregar apenas uma chave fictícia não existente "_". Por padrão, todos os valores de chave de configuração sem rótulos no repositório de Configuração de Aplicativos serão carregados se nenhum método Select for chamado.

  3. Atualize o arquivo Program.cs para habilitar a atualização automática do sinalizador de recursos em cada execução de função adicionando o middleware da Configuração de Aplicativo do Azure. Você também registra o serviço de gerenciamento de funcionalidades, o que permite sua inserção e utilização no código de função posteriormente.

    // Connect to Azure App Configuration
    builder.Configuration.AddAzureAppConfiguration(options =>
    {
        // Omitted the code added in the previous step.
    });
    
    // Add Azure App Configuration middleware and feature management to the service collection.
    builder.Services
        .AddAzureAppConfiguration()
        .AddFeatureManagement();
    
    // Use Azure App Configuration middleware for dynamic configuration and feature flag refresh.
    builder.UseAzureAppConfiguration();
    
    builder.ConfigureFunctionsWebApplication();
    
    builder.Build().Run();
    
  4. Abra Function1.cs e adicione o namespace a seguir.

    using Microsoft.FeatureManagement;
    

    Atualize o construtor para obter uma instância de IVariantFeatureManagerSnapshot por meio da injeção de dependência.

    private readonly IVariantFeatureManagerSnapshot _featureManager;
    private readonly ILogger<Function1> _logger;
    
    public Function1(IVariantFeatureManagerSnapshot featureManager, ILogger<Function1> logger)
    {
        _featureManager = featureManager;
        _logger = logger;
    }
    
  5. Atualize o Run método para retornar uma mensagem de resposta com base no estado do sinalizador de recurso.

    [Function("Function1")]
    public async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequest req)
    {
        _logger.LogInformation("C# HTTP trigger function processed a request.");
    
        // Read feature flag
        string featureName = "Beta";
        bool featureEnabled = await _featureManager.IsEnabledAsync(featureName, req.HttpContext.RequestAborted);
    
        return new OkObjectResult(featureEnabled
            ? $"The Feature Flag '{featureName}' is turned ON!"
            : $"The Feature Flag '{featureName}' is turned OFF");
    }
    

Testar a função localmente

  1. Defina a variável de ambiente.

    Defina a variável de ambiente denominada AZURE_APPCONFIG_ENDPOINT para o ponto de extremidade do repositório de Configuração de Aplicativos encontrado na Visão Geral do seu repositório no portal do Azure.

    Se você usar o prompt de comando do Windows, execute o comando a seguir e reinicie o prompt de comando para permitir que a alteração entre em vigor:

    setx AZURE_APPCONFIG_ENDPOINT "<endpoint-of-your-app-configuration-store>"
    

    Se você usar o PowerShell, execute o seguinte comando:

    $Env:AZURE_APPCONFIG_ENDPOINT = "<endpoint-of-your-app-configuration-store>"
    

    Se você usa macOS ou Linux, execute o comando a seguir:

    export AZURE_APPCONFIG_ENDPOINT='<endpoint-of-your-app-configuration-store>'
    
  2. Pressione F5 para testar sua função. Se solicitado, aceite a solicitação do Visual Studio para baixar e instalar as ferramentas principais (CLI) do Azure Functions. Além disso, talvez seja necessário habilitar uma exceção de firewall para que as ferramentas possam manipular solicitações HTTP.

  3. Copie a URL da sua função da saída do Azure Functions runtime.

    Depuração de função do Início Rápido no VS

  4. Cole a URL para a solicitação HTTP na barra de endereços do navegador. A imagem a seguir mostra a resposta, indicando que o sinalizador de recurso Beta está desabilitado.

    Sinalizador de recurso de função de início rápido desabilitado

  5. No portal do Azure, navegue até o repositório de Configuração de Aplicativos. Em Operações, selecione Gerenciador de Recursos, localize o sinalizador de recurso Beta e defina a alternância Habilitada como Ativada.

  6. Atualize o navegador algumas vezes. Quando a janela de tempo do intervalo de atualização acabar, a página será alterada para indicar que o sinalizador de recurso Beta está ativado, conforme mostrado na imagem.

    Sinalizador de recurso de função de início rápido habilitado

Limpar os recursos

Se não deseja continuar usando os recursos criados neste artigo, exclua o grupo de recursos que você criou aqui para evitar encargos.

Importante

A exclusão de um grupo de recursos é irreversível. O grupo de recursos e todos os recursos contidos nele são excluídos permanentemente. Não exclua acidentalmente grupo de recursos ou recursos incorretos. Se tiver criado os recursos para este artigo dentro de um grupo de recursos que contém outros recursos que você deseja manter, exclua cada um individualmente do respectivo painel em vez de excluir o grupo de recursos.

  1. Entre no portal do Azure e selecione Grupos de recursos.
  2. Na caixa Filtrar por nome..., digite o nome do seu grupo de recursos.
  3. Na lista de resultados, selecione o nome do grupo de recursos para conferir uma visão geral.
  4. Selecione Excluir grupo de recursos.
  5. Você receberá uma solicitação para confirmar a exclusão do grupo de recursos. Insira o nome do grupo de recursos para confirmar e selecione Excluir.

Após alguns instantes, o grupo de recursos e todos os recursos dele são excluídos.

Próximas etapas

Neste início rápido, você criou um sinalizador de recurso e o usou com um aplicativo do Azure Functions.

Para obter o resumo completo dos recursos da biblioteca de gerenciamento de recursos .NET, continue para o documento a seguir.

Para saber mais sobre como gerenciar sinalizadores de recursos na Configuração de Aplicativos do Azure, continue no tutorial a seguir.