- 🕹️ Leonardo Cavichiolli de Oliveira (RM351999) - 👾 TC2_FNC_OrdemServico_FIAP (FNC_OrdemServico) Azure Function desenvolvida em .NET 6 Core utilizando a IDE Visual Studio 2022, utilizando EF Core para gestão de dados (SQL Server Local ou Nuvem-PaaS). A function simula a ordem de pedido de manutenção de produtos voltados para hardwares antigos e novos de video games. A function foi desenvolvida utilizando o template durable, contendo assim um orquestador e alguns functions que tem funcionalidade bem definidas como.:
- 👾 HttpTriggerFunction.: Function responsável por receber o "acionamento" http, validando o corpo da requisição e inicializando o Orquestrador caso a validação tenha sucesso.
- 👾 OrdemOrchestrator.: Orquestrador da function, responsável por chamar as functions especificas do projeto e retornar o valor da ordem de serviço e status da ordem.
- 👾 OrdemBancoFunction.: Serve como a camada de intermediação com o banco de dados para a Ordem, responsável por obter ou inserir uma nova ordem conforme a regra de negócio.
- 👾 ProcessamentoOrdemBancoFunction.: Serve como a camada de intermediação com o banco de dados para o Processamento da Ordem, inserindo e atualizando o andamento da Ordem de acordo com o processamento interno.
- 👾 VerificaTipoProdutoFunction.: Função responsável por verificar se a Marca do Produto, Tipo e Modelo são fazem parte da cobertura do serviço, calculando o tempo de garantia do mesmo.
- 👾 GeraPrazoManutencaoFunction.: Função responsável por verificar o tipo de defeito informado da Ordem, identificando se há cobertura e devolvendo o prazo de manutenção/conclusão do serviço em dias úteis.
- 👾 VerificaGarantiaProdutoFunction.: Função responsável por verificar, de acordo com a data de aquisição do produto informado e da cobertura de serviço processada, se o serviço a ser realizado estara coberto pela garantia ou não.
A configuração para execução da Azure Function se trata apenas de qual local você pretende executa-la. Seja localmente ou subindo o serviço no Azure Function na Nuvem (vídeo demonstrativo CI/CD em andamento).:
- 👾 Conexão com o banco de dados.: Acesse o arquivo local.settings.json no projeto FNC_OrdemServico e altere o valor do parametro "OrdemServicoDbSecret", esse valor aceita tanto uma string de conexão de um banco como um Secret (Azure Key Vault) de uma string de conexão de banco também.
- 👾 Scripts de banco de dados.: Segue os scripts de banco para criação do database e as tabelas necessárias para execução do projeto - Script SQL Tabelas - FNC_OrdemServico.
- 👾 Diagrama da Tabelas.: Diagramas SQL.
- Criar a Storage Account:
- az storage account create --name [nome-do-storage-account] --resource-group [nome-do-grupo-de-recursos] --location brazilsouth --sku Standard_LRS
- az storage account create --name [nome-do-storage-account] --resource-group [nome-do-grupo-de-recursos] --location brazilsouth --sku Standard_LRS
- Criar a Function App:
- az functionapp create --resource-group [nome-do-grupo-de-recursos] --name [nome-da-function] --consumption-plan-location brazilsouth --os-type Linux --runtime dotnet --functions-version 4 --storage-account [nome-do-storage-account]
- az functionapp create --resource-group [nome-do-grupo-de-recursos] --name [nome-da-function] --consumption-plan-location brazilsouth --os-type Linux --runtime dotnet --functions-version 4 --storage-account [nome-do-storage-account]
- Habilitar o Identity na Function App:
- az functionapp identity assign --n [nome-da-function] --resource-group [nome-do-grupo-de-recursos]
- az functionapp identity assign --n [nome-da-function] --resource-group [nome-do-grupo-de-recursos]
- Obter PrincipalId da Function App e atribuir a uma variável:
- $functionPrincipalId = (az functionapp show -n [nome-da-function] -g [nome-do-grupo-de-recursos] --query identity.principalId --out tsv)
- $functionPrincipalId = (az functionapp show -n [nome-da-function] -g [nome-do-grupo-de-recursos] --query identity.principalId --out tsv)
- Dar permissão para a Function App ler secrets no Key Vault:
- az keyvault set-policy --name [nome-do-key-vault] --object-id $functionPrincipalId --secret-permissions get
- az keyvault set-policy --name [nome-do-key-vault] --object-id $functionPrincipalId --secret-permissions get
- Obter Id do Secret (Url) no Key Vault e atribuir a uma variável:
- $secretId = (az keyvault secret show -n [nome-do-secret] --vault-name [nome-do-key-vault] --query id --out tsv)
- $secretId = (az keyvault secret show -n [nome-do-secret] --vault-name [nome-do-key-vault] --query id --out tsv)
- Adicionar Parâmetro de referência ao Secret no AppSettings da Function App:
- az functionapp config appsettings set --name [nome-da-function] --resource-group [nome-do-grupo-de-recursos] --settings OrdemServicoDbSecret=`""@Microsoft.KeyVault(SecretUri=$secretId)"`"
- az functionapp config appsettings set --name [nome-da-function] --resource-group [nome-do-grupo-de-recursos] --settings OrdemServicoDbSecret=`""@Microsoft.KeyVault(SecretUri=$secretId)"`"