[Azure Logic Apps] Escalando seu Power BI Embedded (e controlando seus custos)

[Azure Logic Apps] Escalando seu Power BI Embedded (e controlando seus custos)
Photo by Campaign Creators / Unsplash

Ola pessoALL,

Seguindo com as dicas do mundo real que podem ajudar outras pessoas, recentemente fiz análise no ambiente de um cliente e o maior custo da assinatura era o [Power BI Embedded](https://azure.microsoft.com/pt-br/pricing/details/power-bi-embedded/).

Antes de iniciar no tutorial de fato, vale mencionar que o Power BI Embedded tem sido o melhor gerador de relatórios para sistemas que usei recentemente, colocando os custos na ponta do lápis, ele fica mais barato que os maiores geradores de relatórios do mercado.

Voltando ao assunto do post, o objetivo é escalar o recurso do Power BI Embedded para a camada desejada de acordo com os horários do cliente.

  • 7hr -  21hr – Tier 1 (A1)
  • 21hr -  7hr – Tier 2 (A2)

O jeito mais simples é usarmos o Azure Logic Apps para controlarmos a lógica do que precisamos.

Preparando o Logic App

Para chamarmos as APIs do Azure, vamos precisar atribuir uma identidade gerenciada à nossa Logic App.

  • No menu Identity
  • Habilite a identidade na tab System Assigned
  • Salve as alterações
  • Após salvar, copie o GUID que ira aparecer no campo Object ID

Preparando o Power BI Embedded

  • Selecione a instância do Power BI Embedded desejada e navegue até o menu Access control (IAM)
  • Selecione Add e depois Role Assignment
  • Na nova tela selecione a role Contributor
  • Na tab Members selecione Managed Identity e depois selecione a sua logic app
  • No final clique em Review + assign e salve as atribuições

Desenhando a nossa logic app

Agora que fizemos o setup das permissões vamos desenhar nossa logic app

  • O ponto de partida é uma recorrência todos os dias às 07 da manhã e às 21:00 da noite.
  • De acordo com o pedido do cliente, vamos iniciar uma variável com o valor da instância do nosso PBI, A1 se for 07 da manhã A2 e for outro horário.
if(equals(convertFromUtc(utcNow(), 'E. South America Standard Time', 'DD'), '07'), 'A1', 'A2')
  • Nosso próximo passo é adicionar uma chamada HTTP para a API de recursos do Azure, para isso iremos selecionar o verbo PATCH e mudar apenas a propriedade SKU. O "pulo do gato" aqui é usarmos a variável que iniciamos no passo anterior. Na parte de autenticação selecionaremos a identidade associada à nossa Logic App.
    URL: https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PowerBIDedicated/capacities/{dedicatedCapacityName}?api-version=2021-01-01
{
  "sku": {
    "name": "@{variables('pbisku')}",
    "tier": "PBIE_Azure"
  },
  "properties": {
    "administration": {
      "members": [
        "emaildoadmin@seutenant.onmicrosoft.com"
      ]
    }
  }
}

Com isso podemos salvar e testar nossa logic app e o resultado deve ser similar ao da imagem à seguir.

Espero que tenham gostado e comenten se essa automação foi útil para vocês.
Lembrando que se vocês desejarem uma análise de custos no seu ambiente, visite nossa página focada no assunto: https://rafaeldossantos.net/azure-finops/

Referências