Alô mundo!
Venho através desta, iniciar uma série de posts a respeito do Microsoft Fabric. Essa plataforma fantástica que a Microsoft está lançando este ano para facilitar a vida da galera da área de Dados.
Para conhecer a plataforma e ter tempo suficiente de se encantar com as facilidades da ferramenta, você pode criar uma conta de Avaliação e usufruir de todos os recursos por 60 dias gratuitamente.
Após o período de avaliação será necessário contratar um Capacidade do Fabric do Portal do Azure para fazer a associação. E daí iniciam-se vários questionamentos, sendo o principal: “Quanto isso vai me custar?”
Olhando aqui na tabela de preços disponibilizada pela própria Microsoft, a primeira camada do Fabric é a F2 que está custando 408 dólares mensais para ficar ativa 24 horas por dia. Convertendo para Real a gente fica com um valor inicial que vai girar em torno de R$ 2.000,00 ao mês.
Vale lembrar que esse print é de 09/12/2023, os valores em Reais podem estar diferentes no dia que você ler por motivos de: “a Microsoft atualizou os valores” ou “a cotação do dólar mudou bastante”.
Outro ponto importante é que estes valores são para o caso de você deixar a capacidade do Fabric ligada 24h por dia.
Pode ser que esta não seja a sua necessidade e então eu vou te mostrar como configurar uma Logic App para automatizar o desligamento e religamento diário deste recurso lá no Portal do Azure. Desta forma você evitará desperdícios financeiros na sua fatura. -- De nada rsrs
Então vamos lá!
1 - Acesse o seu Portal Azure e adicione um novo Recurso de Logic App - de preferência no mesmo resource group da sua Fabric Capacity.
2 - Antes de iniciar a construção da Logic App, precisamos liberar permissão para que a Logic App acione execuções na nossa Fabric Capacity. Então vá até o recurso da Fabric Capacity e acesse o menu "Access control (IAM)".
- Selecione "Add role assignment"
- Escolha "Privileged administrator roles" > "Contributor" e avance
- Em "assign access to", escolha "Managed identity" > Select Members > Faça o filtro por Logic app e selecione a sua Logic App que acabou de criar.
- Revise e crie o acesso.
3 - Na sua Logic App vá em "Logic app designer"
4 - Adicione uma ação do tipo recorrência. Aqui você consegue definir qual será o seu gatilho de horário para a Logic App ser executada. No meu caso, configurei para que ela rode de hora em hora a partir das 19h até as 6h todos os dias.
Ah Elaine, mas porque você está acionando essa Logic App de hora em hora?
Só porque meu projeto ainda está em desenvolvimento, pode ter algum dia que eu trabalhe até um pouco mais tarde para finalizar algum raciocínio e não quero correr o risco de ir lá no portal do Azure e ligar o recurso manualmente e depois esquecer de pausar novamente e gerar um custo desnecessário na minha fatura. Se eu parar de trabalhar e não pausar manualmente, no máximo terei uma hora de cobrança desnecessária 😉
O Microsoft Fabric possui uma API que nos permite executar algumas ações. Vamos acionar a rota da API que checa o status do nosso recurso do Fabric no Azure.
O modelo da chamada da api é este:
E você encontra os valores da sua Fabric Capacity, aqui.
5 - Substitua [Subscription Id], [Resource Group] e [Resource Name] pelas identificações do seu Fabric Capacity e adicione uma ação na Logic App do tipo Requests.
Method: GET
URI: A URL do padrão acima
Authentication type: Managed Identity (lembra da liberação de permissão que fizemos lá em cima né?)
Managed identity: System-assigned managed identity
6 - Vamos colocar o retorno da API em uma variável
7 - Adicione um Parse JSON para que a gente consiga ler a informação que queremos no json retornado pela API.
Pode usar o schema abaixo. Ou faça um teste da chamada da sua API, copie o json retornado e cole na janela que abre ao cliente em "Use sample payload to generate schema" (eu utilizei essa opção, mas como já está pronto segue aí abaixo também).
{
"properties": {
"id": {
"type": "string"
},
"location": {
"type": "string"
},
"name": {
"type": "string"
},
"properties": {
"properties": {
"administration": {
"properties": {
"members": {
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"provisioningState": {
"type": "string"
},
"state": {
"type": "string"
}
},
"type": "object"
},
"sku": {
"properties": {
"name": {
"type": "string"
},
"tier": {
"type": "string"
}
},
"type": "object"
},
"tags": {
"properties": {},
"type": "object"
},
"type": {
"type": "string"
}
},
"type": "object"
}
8 - Adicione uma ação de Compose do grupo de Data Operations para recuperarmos o valor do "state" retornado pela API.
9 - Adicione um bloco condicional para conferir se o valor de saída do item 7 é igual a "Active"
10 - Se o status da sua Fabric Capacity for "Active", vamos fazer o acionamento da rota "suspend" para pausar o recurso no seu Portal Azure.
O modelo da rota da API de pausar é esse aqui, substitua pelos seus valores de identificação.
11 - Para incrementar eu incluí um envio de email para sinalizar que o recurso foi pausado.
E fim! Execute aí pra testar :)
Essa é a visão da Logic App Completa
Depois pode criar a sua Logic App para dar o start no horário que desejar diariamente.
Eu deixei o meu Start sendo acionado de Segunda a Sexta às 7h.
Daí no bloco condicional você vai precisar compara se o status é igual a "Paused".
E o modelo da API para dar o Start é:
Espero ter ajudado e até a próxima :)