Tutorial: Utilizar a configuração dinâmica numa aplicação Funções do Azure
O fornecedor de configuração do App Configuration .NET suporta a colocação em cache e a atualização da configuração dinamicamente condicionada pela atividade da aplicação. Este tutorial mostra como pode implementar atualizações de configuração dinâmicas no seu código. Baseia-se no Funções do Azure aplicação introduzida nos inícios rápidos. Antes de continuar, conclua Criar uma aplicação de funções do Azure com Azure App Configuration primeiro.
Neste tutorial, ficará a saber como:
- Configure a sua aplicação Funções do Azure para atualizar a respetiva configuração em resposta a alterações num arquivo de App Configuration.
- Injete a configuração mais recente nas chamadas de Funções do Azure.
Pré-requisitos
- Subscrição do Azure – criar uma gratuitamente
- Visual Studio com a carga de trabalho de desenvolvimento do Azure
- Funções do Azure ferramentas, se ainda não estiver instalada com o Visual Studio.
- Concluir início rápido Criar uma aplicação de funções do Azure com Azure App Configuration
Recarregar dados do App Configuration
Funções do Azure suporte para execução em processo ou processo isolado. A principal diferença na utilização App Configuration entre os dois modos é a forma como a configuração é atualizada. No modo no processo, tem de fazer uma chamada em cada função para atualizar a configuração. No modo de processo isolado, existe suporte para middleware. A App Configuration middleware, Microsoft.Azure.AppConfiguration.Functions.Worker
, permite que a chamada atualize automaticamente a configuração antes de cada função ser executada.
Atualize o código que se liga ao App Configuration e adicione as condições de atualização de dados.
Abra Startup.cs e atualize o
ConfigureAppConfiguration
método .public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder) { builder.ConfigurationBuilder.AddAzureAppConfiguration(options => { options.Connect(Environment.GetEnvironmentVariable("ConnectionString")) // Load all keys that start with `TestApp:` and have no label .Select("TestApp:*") // Configure to reload configuration if the registered sentinel key is modified .ConfigureRefresh(refreshOptions => refreshOptions.Register("TestApp:Settings:Sentinel", refreshAll: true)); }); }
O
ConfigureRefresh
método regista uma definição a verificar se existem alterações sempre que uma atualização é acionada na aplicação. OrefreshAll
parâmetro indica ao fornecedor App Configuration para recarregar toda a configuração sempre que for detetada uma alteração na definição registada.Todas as definições registadas para atualização têm uma expiração de cache predefinida de 30 segundos antes de uma nova atualização ser tentada. Pode ser atualizado ao chamar o
AzureAppConfigurationRefreshOptions.SetCacheExpiration
método .Dica
Quando está a atualizar vários valores-chave no App Configuration, normalmente não quer que a sua aplicação recarregue a configuração antes de todas as alterações serem efetuadas. Pode registar uma chave do Sentinel e atualizá-la apenas quando todas as outras alterações de configuração estiverem concluídas. Isto ajuda a garantir a consistência da configuração na sua aplicação.
Também pode fazer o seguinte para minimizar o risco de inconsistências:
- Conceber a sua aplicação para ser tolerável para inconsistência de configuração transitória
- Aqueça a sua aplicação antes de a colocar online (a servir pedidos)
- Executar a configuração predefinida na sua aplicação e utilizá-la quando a validação da configuração falhar
- Escolha uma estratégia de atualização de configuração que minimize o impacto na sua aplicação, por exemplo, uma temporização de tráfego baixa.
Atualize o
Configure
método para disponibilizar Azure App Configuration serviços através da injeção de dependências.public override void Configure(IFunctionsHostBuilder builder) { builder.Services.AddAzureAppConfiguration(); }
Abra Function1.cs e adicione os seguintes espaços de nomes.
using System.Linq; using Microsoft.Extensions.Configuration.AzureAppConfiguration;
Atualize o construtor para obter a instância de através da
IConfigurationRefresherProvider
injeção de dependência, a partir da qual pode obter a instância deIConfigurationRefresher
.private readonly IConfiguration _configuration; private readonly IConfigurationRefresher _configurationRefresher; public Function1(IConfiguration configuration, IConfigurationRefresherProvider refresherProvider) { _configuration = configuration; _configurationRefresher = refresherProvider.Refreshers.First(); }
Atualize o
Run
método e o sinal para atualizar a configuração com oTryRefreshAsync
método no início da chamada das Funções. Será uma operação sem operação se o período de tempo de expiração da cache não for atingido. Remova oawait
operador se preferir que a configuração seja atualizada sem bloquear a chamada de Funções atual. Nesse caso, as chamadas de Funções posteriores obterão o valor atualizado.public async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); await _configurationRefresher.TryRefreshAsync(); string keyName = "TestApp:Settings:Message"; string message = _configuration[keyName]; return message != null ? (ActionResult)new OkObjectResult(message) : new BadRequestObjectResult($"Please create a key-value with the key '{keyName}' in App Configuration."); }
Testar localmente a função
Defina uma variável de ambiente com o nome ConnectionString e defina-a como a chave de acesso para o arquivo de configuração da aplicação. Se utilizar a linha de comandos do Windows, execute o seguinte comando e reinicie a linha de comandos para permitir que a alteração entre em vigor:
setx ConnectionString "<connection-string-of-your-app-configuration-store>"
Se utilizar Windows PowerShell, execute o seguinte comando:
$Env:ConnectionString = "<connection-string-of-your-app-configuration-store>"
Se utilizar o macOS ou Linux, execute o seguinte comando:
export ConnectionString='<connection-string-of-your-app-configuration-store>'
Para testar a sua função, prima F5. Se lhe for pedido, aceite o pedido do Visual Studio para transferir e instalar ferramentas do Funções do Azure Core (CLI). Também poderá ter de ativar uma exceção de firewall para que as ferramentas possam processar pedidos HTTP.
Copie o URL da sua função na saída do tempo de execução das funções do Azure.
Cole o URL do pedido HTTP na barra de endereço do browser. A imagem seguinte mostra a resposta no browser ao pedido GET local devolvido pela função.
Inicie sessão no Portal do Azure. Selecione Todos os recursos e selecione o arquivo App Configuration que criou no início rápido.
Selecione Explorador de configuração e atualize o valor da seguinte chave:
Chave Valor TestApp:Settings:Message Dados de Azure App Configuration - Atualizados Em seguida, crie a chave sentinela ou modifique o respetivo valor se já existir, por exemplo,
Chave Valor TestApp:Settings:Sentinel v1 Atualize o browser algumas vezes. Quando a definição em cache expira após 30 segundos, a página mostra a resposta da chamada das Funções com o valor atualizado.
Nota
O código de exemplo utilizado neste tutorial pode ser transferido do App Configuration repositório do GitHub.
Limpar os recursos
Se não quiser continuar a utilizar os recursos criados neste artigo, elimine o grupo de recursos que criou aqui para evitar custos.
Importante
A eliminação de um grupo de recursos é irreversível. O grupo de recursos e todos os recursos nele contidos são eliminados permanentemente. Certifique-se de que não elimina acidentalmente os recursos ou o grupo de recursos errados. Se tiver criado os recursos para este artigo dentro de um grupo de recursos que contém outros recursos que pretende manter, elimine cada recurso individualmente do respetivo painel em vez de eliminar o grupo de recursos.
- Inicie sessão no portal do Azure e selecione Grupos de recursos.
- Na caixa Filtrar por nome , introduza o nome do grupo de recursos.
- Na lista de resultados, selecione o nome do grupo de recursos para ver uma descrição geral.
- Selecione Eliminar grupo de recursos.
- É-lhe pedido que confirme a eliminação do grupo de recursos. Introduza o nome do grupo de recursos a confirmar e selecione Eliminar.
Após alguns instantes, o grupo de recursos e todos os respetivos recursos são eliminados.
Passos seguintes
Neste tutorial, ativou a sua aplicação Funções do Azure para atualizar dinamicamente as definições de configuração de App Configuration. Para saber como utilizar uma identidade gerida do Azure para simplificar o acesso ao App Configuration, avance para o próximo tutorial.