Modificar Azure Web App Application Settings sem perder configurações

Há pouco tempo precisei modificar um parâmetro do Application Settings em mais de 50 Azure Web App e deveria ser bem simples com Powershell, pois testaria em um Web App, validaria e conseguiria replicar com algumas linhas de código.

Estava enganado, pois diferentemente do Azure Portal, onde eu consigo facilmente ir no Application Settings e modificar um ou mais parâmetros, então salvar as alterações sem perder nenhuma outra, no Powershell não é bem assim.

IMPORTANTE: Ao realizar a modificação, remoção ou inclusão de parâmetros e salvar, implica na reinicialização do Web App

Alterando com Powershell (forma errada)

Para alterar com Powershell, primeiramente me conectei ao Azure, utilizando UseDeviceAuthentication e em seguida modifiquei o contexto para a Subscription que estava utilizando

Em seguida, criei uma varíavel, passando como valor uma hashtable

e utilizei Set-AzWebApp para aplicar a variável e atualizar o valor do APPINSIGHTS_INSTRUMENTATIONKEY

Mas quando fui verificar no Azure Portal, para minha surpresa, todos os outros valores haviam sido apagados

Alterando com Powershell e mantendo os valores existentes

Vamos começar pegando as configurações do Web App onde vamos fazer as alterações, neste caso Application Settings

Em seguida, vamos criar um objeto, que terá função similar ao hashtable, para receber o nome e valor deste parâmetro

Vamos fazer uma verificação para saber se o parâmetro já existe ou não no Application Settings do Web App, caso já exista, apenas o valor do parâmetro é alterado, do contrário, o parâmetro todo será adicionado a variável com as configurações que coletamos no começo deste script

Então, iniciamos uma variável com valores que serão dispostos como hashtable, e passamos colocamos nome e valor de cada parâmetro da variável modificada no script para a hashtable

E por fim, rodamos o Set-AzWebApp

E finalizamos conferindo o Web App no Azure Portal

O script completo, você pode encontrar no meu GitHub

Gerenciamento de Custos – Utilizando Powershell para coletar custos do Azure SQL

Utilizando Cost Analysis no Azure Portal, você consegue facilmente verificar os preços de Elastic Pool, Standalone databases e do SQL Server.

Na imagem acima, é possível saber o custo do Elastic Pool, de $310.75, além dos valores individuais das base de dados que estão fora do Elastic Pool. E, também, um valor para o SQL Server.

Ao utilizar o Powershell, o custo fica concentrado apenas no recurso principal, neste caso no SQL Server.

Como é possível observar, o custo ficou acumulado no SQL Server, totalizando um custo de $870.

Para ter o mesmo resultado que o Azure Portal mostra, é preciso fazer algumas modificações no script Powershell – se quiser o script inteiro, dá uma olhada no meu GitHub

E agora o resultado que vemos não são mais recursos do SQL Server zerados, mas com custos separados e, somados totalizam os mesmos $870 quando estavam acumulados da imagem anterior.

Azure Application Gateway

O Azure Application Gateway é um balanceador de carga na camada de aplicação para aplicativos web, direcionando o tráfego com base em critério como endereço IP e porta, diferenciando-se dos load balancers tradicionais que operam na camada de transporte.

Por fazer parte da camada de aplicação, o Azure Application Gateway consegue tomar decisões de roteamento com base em atributos adicionais de uma solicitação HTTP, como o caminho do URI ou os cabeçalhos de host.

Mas o que isso quer dizer?

Torna-se possível direcionar o tráfego para um conjunto específico de servidores (pool) dependendo da URL de entrada, conforme ilustrado na imagem abaixo ao acessar https://viniciusdeschamps.com.br/images ou /videos, o usuário será redirecionado para servidores otimizados para fornecer o recurso selecionado.

azure application gateway

Além disto, o Azure Application Gateway possui recursos importantes (para lista completa confira aqui:

  • Terminação do protocolo SSL/TLS
    • Este recurso permite que os servidores web sejam aliviados da tarefa de criptografia e descriptografia, além de fornecer suporta encriptação SSL/TLS de ponta a ponta
  • Dimensionamento automático
    • A partir do SKU Standard v2, é possível utilizar o recurso de dimensionamento automático, fazendo com que o Application Gateway possa aumentar ou diminuir com base nas mudanças nos padrões de tráfego
  • Web Application Firewall
    • Oferece proteção centralizada para seus aplicativos web, defendendo-os contra vulnerabilidades.
    • WAF utiliza regras provenientes dos conjuntos de regras do Open Web Application Security Project (OWASP)
  • Hospedagem de vários sites
    • Permite que você configure o direcionamento do tráfego baseado no hostname ou domínio
    • viniciusdeschamps.com.br, azurefloripa.com.br vão estar apontando para o IP do mesmo Azure Application Gateway, porém terão diferentes listeners configurados, o que irá fazer com que o tráfego seja direcionado para o backend pool do site correto
  • Session Affinity
    • Através do Session Affinity todo o tráfego e solicitações subsequentes de uma sessão do cliente, será sempre para o mesmo servidor no backend pool
  • Connection draining
    • Permite que você remova membros do backend pool durante uma atualização de serviço planejada
    • Garante que as instâncias removidas não recebam novas solicitações/conexões, mantendo as conexões existentes até o valor de tempo limite configurado

Referências:

  • https://learn.microsoft.com/pt-br/azure/application-gateway/features
  • https://learn.microsoft.com/pt-br/azure/application-gateway/overview