Você já parou pensar em como fazer o Azure Data Factory enxergar um banco de dados Microsoft SQL Server do lado cliente? Ou como fazer com que ele verifique se um arquivo qualquer existe em um Blob? Pois bem, para responder a todas essas perguntas, vamos utilizar uma estrutura chamada Linked Service. Blz, mais o que é isso? É de comer?
Os Linked Services foram desenvolvidos com o intuito de permitir que estabelecermos uma conexão com as mais diferentes fontes de armazenamentos de dados. Dessa forma, podemos dizer que eles atuam como conectores.
Fazendo uma analogia com outro recurso, podemos dizer que um Linked Service é bem semelhante a uma connection string que vai permitir a conexão com recursos externos ou até mesmo com recursos de dentro da sua conta do Azure. A sua finalidade é bem simples, lembra que comentamos acima? Ele vai definir como "fecharemos" essa conexão, por exemplo, usando de login e senha, através de uma secret, e outros meios.
Atualmente no Azure Data Factory, existem mais de 90 conectores predefinidos que podem ser usados para estabelecer um vínculo com os nossos dados. Neste post, vou mostrar quatro formar de configurar um Linked Service, passando pela forma mais engessada, onde não é possível a sua reutilização até um modelo totalmente parametrizado.
Um ponto importantíssimo antes de partimos para sessão hands on, é salientar que, dependendo do recurso que você irá se conectar e em qual ambiente de rede ele está, falando em ambientes externos a sua assinatura do Azure, você deverá configurar e escolher durante a criação do Linked Service qual Integration Runtime será usada para estabelecer a conexão com esse recurso.
Calma jovem mancebo, já estamos chegando na parte prática!!!! Antes, vamos traça o nosso plano de estudo?
Como Origem de dados, escolhi duas, arquivos armazenados no Azure Blob Storage e no Microsoft SQL Server On Premise.
Quando falamos sobre as formas de configuração, vamos fazer de 4 modos diferentes:
1 - Criação de um Linked Service para conexão com uma Azure Storage Account específica;
2 - Criação de um Linked Service parametrizando suas credenciais para conexão com qualquer Azure Strage Account de uma Subscription;
3 - Criação de um Linked Service gravando a senha dentro do Azure Key Vault;
4 - Criação de um Linked Service usando uma connection string armazenada dentro do Azure Key Vault.
Vamos agora a parte prática, é o que eu mais gosto...
1 - Criação de um Linked Service para acessar o Blob
Conforme explicado acima, no primeiro modelo que iremos trabalhar será para acessar dados do Azure Blob Storage.
Vamos observar como que fica!
Para iniciar, na barra lateral da esquerda, vamos clicar no botão da maletinha (referente ao Manager) e seguir os passos abaixo.
(1) Clicar em Linked Service;
(2) Clicar em New;
(3) Na aba da direita vamos clicar em Azure e escolher Azure Blob Storage;
(4) Clicar em Continuar
Na tela abaixo vamos preencher as informações do nosso Linked Service.
(1) Informar um nome para o Linked Service;
(2) Como estaremos criando um Linked Service para acessar o Blob não existe a necessidade de mencionar o IR;
(3) Para o método de autenticação (Authentication Method) vamos selecionar Account Key;
(4) Deixar marcado Connection string;
(5) Marcar From Azure Subscription;
(6) Selecionar a nossa Subscription;
(7) Selecionar a nossa Storage account name;
(8) Clicar em Test Connection para realizar um teste na conexão;
(9) E por fim, clicar em CREATE para realizar criação propriamente dita.
2 - Parametrizando o Linked Service
Agora, digamos que você esteja trabalhando com dezenas de bancos de dados ou servidores que usam o mesmo conector. Imagina se para cada banco de dados você tivesse que criar um Linked Service. Isso seria horrível! Concorda comigo? Mais para sua sorte e salvação da nação, o Data Factory permite que trabalhemos com parâmetros. Se não existissem, a manutenção seria terrível e resultaria em um número realmente grande de Linked Service para manter. Mais pasmem, eu já passei por isso, mais foi por falta de conhecimento da ferramenta. Deu um mega trabalho e um mega trabalho ao quadrado para ajustar com o carro andando.
Os parâmetros foram criados justamente para minimizar o esforço que você faz para manter suas soluções. É considerada uma forma bastante útil e segura, vamos seguir os próximos passos e observar como que é realizada sua configuração.
Para o próximo exemplo, vamos repetir a criação do Linked Service porém dessa vez parametrizado. Observe aqui comigo...
Na tela de Gerenciamento (Manage, o ícone é uma maletinha) vamos clicar em New.
(1) Informar um nome para o Linked Service;
(2) Como estaremos criando um Linked Service para acessar o Blob não existe a necessidade de mencionar o IR;
(3) Para o método de autenticação (Authentication Method) vamos selecionar Account Key;
(4) Deixar marcado Connection string, Azure Key vault será um assunto mais a frente;
(5) Marcar Enter manually;
(6) Informar nesse ponto o parâmetro que será criado no passo (7);
(7) Em parameters, clicar para expandir
Clicar em NEW para adicionar uma linha;
Informar o nome para o nosso parâmetro;
Após a criação do parâmetro, vamos voltar no item (6) e clicar em Add dynamic content e seguir para a tela abaixo.
Vamos agora associar o parâmetro criado ao item (6) referente ao nome da Azure Storage Account.
(1) Clicar no parâmetro criado;
(2) O valor será preenchido acima;
(3) Clicar em OK.
O único ponto que falta agora é o item (3) da imagem abaixo. Nesse momento vamos informar a Storage Account Key que recuperamos em nossa Azure Storage Account.
Finalizado esse ponto, basta clicar em CREATE.
Muito bem! Nosso primeiro Linked Service parametrizado foi criado com sucesso!
No próximo passo, vamos abordar a criação de um Linked Service para acessar o Microsoft SQL Server On Premise.
Criação de um Linked Server para Acessar o SQL Server On Premise
3 - Configuração padrão (Parametrizada)
Lembram quando comentei sobre o cenário em que você possui vários servidores de banco de dados e que para acessar cada um deles você cria um Linked Service? Pois bem, esse tipo de Linked Service é perfeito para esse cenário! Sua reutilização é perfeita e todos os parâmetros de conexão são informados no DataSet.
Observe comigo na tela abaixo como que podemos realizar a parametrização referente as informações de servidor (nome ou ip), qual banco de dados, qual o usuário e por último qual a senha.
Quando falamos em utilização de senha, vamos armazena-la em nosso Azure Key Vault e usar uma secret.
(1) Clicar em New;
(2) Informar um nome para o Linked Service;
(3) Como estaremos realizando o acesso a um Microsoft SQL Server On Premise, vamos selecionar o IR;
(4) Deixar marcado Connection string;
(5) Clicar em Add dynamic content para criar um parâmetro para o servidor;
Vamos criar um parâmetro para o servidor.
(1) Clicar no sinal de mais (+) e após isso uma tela será carregada para informar o nome do parâmetro. Após informar o nome, basta clicar em CREATE;
(2) Selecionar o nome do parâmetro criado;
(3) E por fim, o valor do parâmetro será carregado na tela acima;
(4) Clicar em OK.
Agora vamos criar um parâmetro para o nome do banco de dados (Database name)
(1) Clicar sobre Add dynamic content;
Na tela abaixo, o procedimento é completamente parecido com o que realizamos para criar o parâmetro para o servidor.
(1) Clicar no sinal de mais (+) e após isso uma tela será carregada para informar o nome do parâmetro. Após informar o nome, basta clicar em CREATE;
(2) Selecionar o nome do parâmetro criado;
(3) E por fim, o valor do parâmetro será carregado na tela acima;
(4) Clicar em OK.
Por último, vamos criar o parâmetro para o usuário.
(1) Vamos clicar em Add dynamic content.
Idêntico aos outros dois procedimentos, vamos seguir os passos abaixo.
(1) Clicar no sinal de mais (+) e após isso uma tela será carregada para informar o nome do parâmetro. Após informar o nome, basta clicar em CREATE;
(2) Selecionar o nome do parâmetro criado;
(3) E por fim, o valor do parâmetro será carregado na tela acima;
(4) Clicar em OK.
E por fim para finalizar a criação do nosso Linked Service, vamos associar o Linked Service do Azure Key Vault.
(1) Vamos clicar em Azure Key Vault e selecionar o Linked Service do Azure Key Vault;
(2) Clicar em Add dynamic content.
Novamente na tela abaixo vamos criar o parâmetro para a secret.
(1) Clicar no sinal de mais (+) e após isso uma tela será carregada para informar o nome do parâmetro. Após informar o nome, basta clicar em CREATE;
(2) Selecionar o nome do parâmetro criado;
(3) E por fim, o valor do parâmetro será carregado na tela acima;
(4) Clicar em OK.
Parametrização completa, conseguimos observar como que ficaram os parâmetros criados, após isso vamos clicar em CREATE para concluir a criação.
(1) Parâmetro do servidor;
(2) Parâmetro do banco de dados;
(3) Parâmetro do usuário;
(4) Parâmetro da secret referente e senha do usuário;
(5) Clicar em CREATE para realizar a criação.
Na tela abaixo é possível verificar a entrada dos valores.
4 - Configuração usando o Azure Key Vault
Essa configuração é a mais segura e mais recomendada. Toda a gestão das nossas credencias fica por conta do Azure Key Vault.
Em nosso caso, vamos precisar adicionar uma secret onde estaremos informa a connection string com o Microsoft SQL Server.
Além de ser mais segura essa configuração, sempre que ocorrer alguma alteração de usuário e senha, vamos precisar alterar em apenas um local, situação essa que não conseguiríamos com a configuração padrão.
Vamos analisar na tela abaixo como que é realizada a criação via Azure Key Vault.
(1) Clicar em New;
(2) Informar um nome para o nosso Linked Service;
(3) Como o acesso será a um Microsoft SQL Server On Premise, vamos precisar usar o IR;
(4) Deixar selecionado Azure Key Vault e selecionar o Linked Service com o Azure Key Vault;
(5) Clicar em Add dynamic content para configurar o parâmetro.
Na tela abaixo vamos seguir os seguintes passos para criar nosso parâmetro.
(1) Clicar no sinal de mais (+) e após isso uma tela será carregada para informar o nome do parâmetro. Após informar o nome, basta clicar em CREATE;
(2) Selecionar o nome do parâmetro criado;
(3) E por fim, o valor do parâmetro será carregado na tela acima;
(4) Clicar em OK.
Feito isso, conseguimos visualizar o parâmetro na tela de criação do Linked Service.
Vamos clicar agora em Test Connection para validar a conexão.
Automaticamente quando clicamos em Test Connection, uma nova tela é apresentada para que seja informado o nome da secret criada no Azure Key Vault.
Obs: Lembre-se que estamos realizando a configuração usando uma secret do Azure Key Vault.
Conexão realizada com sucesso!
Muito bem! Finalizamos a criação de mais um Linked Service.
Conclusão
Pois bem meu amigo terminamos aqui mais um post. Quando estamos trabalhando com o Azure Data Factory, o Linked Service é um componente de extrema importância na manipulação de dados, pois ele é responsável por estabelecer o elo com o nosso source, sejam arquivos, databases, API entre outros.
Conseguimos entender e visualizar as diversas formas de realizar a sua configuração. Seja da forma mais simples até o modelo parametrizado, se for possível, escolha sempre esse!
Quando parametrizamos, lembre-se sempre da reutilização. Opte também sempre pelo armazenamento das credencias no Azure Key Vault, é mais simples, mais seguro e mais fácil uma possível manutenção.
Espero que tenham gostado! Nosso próximo encontro será para falar sobre datasets!
Grande abraço e tenha um excelente dia!
Fique sempre com Deus!
Comments