Neste artigo, vou mostrar como você pode se conectar ao Azure Blob Storage usando o Python e listar arquivos em um diretório específico. Vamos utilizar bibliotecas como azure.storage.blob e mssparkutils para interagir com o serviço de armazenamento e obter segredos do Azure Key Vault.
Configurações Iniciais
Primeiramente, precisamos definir algumas configurações iniciais, como o nome do container, o caminho relativo dos arquivos e o serviço vinculado que vamos usar.
`from azure.storage.blob import BlobServiceClient
import json
# Configurações iniciais
blob_container_name = 'container_aqui' # seu nome do container
blob_relative_path_enriched = 'caminho_aqui' # caminho com barra no final
linked_service_enriched = 'Linked_service_aqui' # seu linked service
`
Obtendo Propriedades do Key Vault
Vamos utilizar o mssparkutils para obter as propriedades do Key Vault e a chave de acesso necessária.
`# Obtendo propriedades do Key Vault
ls_keyvault = mssparkutils.credentials.getPropertiesAll('Linked_service_aqui')
converter_dic_kv = json.loads(ls_keyvault)
# Coletando o endpoint do Key Vault
end_point_kv = (converter_dic_kv['Endpoint'].split("/"))[2]
kv_name = (end_point_kv.split("."))[0]
# Obtendo a chave de acesso do Key Vault
access_key = mssparkutils.credentials.getSecret(kv_name, 'seu_storage_aqui', 'Linked_service_aqui')
`
Configurando o Cliente do Blob Storage
Agora que temos a chave de acesso, vamos configurar o cliente do Blob Storage.
# Obtendo propriedades do linked service
ls_enriched = mssparkutils.credentials.getPropertiesAll(Linked_service_aqui_enriched)
converter_dic_enriched = json.loads(ls_enriched)
# Coletando o endpoint do linked service
end_point_enriched = (converter_dic_enriched['Endpoint'].split("/"))[2]
# Configurando o cliente do Blob Storage
storage_account = end_point_enriched.split(".")[0]
print(f"Storage Account: {storage_account}")
print(f"Access Key: {access_key[:4]}...{access_key[-4:]}") # Mostrar apenas início e fim da chave por segurança
blob_service_client = BlobServiceClient(account_url=f"https://{storage_account}.blob.core.windows.net", credential=access_key)
container_client = blob_service_client.get_container_client(blob_container_name)
Função para Listar Arquivos
Vamos criar uma função para listar os nomes dos arquivos em um diretório específico no Blob Storage.
def list_files_in_directory(container_client, directory_path):
""" Função para listar os nomes dos arquivos em um diretório específico """
try:
print(f"Tentando acessar o container: {container_client.container_name}")
blob_list = container_client.list_blobs(name_starts_with=directory_path)
file_names = [blob.name for blob in blob_list]
if not file_names:
print(f"Nenhum arquivo encontrado em {directory_path}.")
return file_names
except Exception as e:
print(f"Erro ao listar arquivos no diretório especificado: {e}")
return []
Listando os Arquivos
Agora podemos usar a função list_files_in_directory para listar os arquivos no diretório especificado.
# Listando os nomes dos arquivos no diretório especificado
print(f"Tentando listar arquivos no diretório: {blob_relative_path_enriched}")
file_names = list_files_in_directory(container_client, blob_relative_path_enriched)
# Verificando se a lista de arquivos não está vazia
if not file_names:
print("Nenhum arquivo encontrado no diretório especificado.")
else:
# Exibindo os nomes dos arquivos
print(f"Arquivos encontrados no diretório {blob_relative_path_enriched}:")
for file_name in file_names:
print(file_name)
print("Processo finalizado.")
Com isto podemos listar todos os dados dentro de um blob utilizando um notebook com Synapase junto a Microsoft Azure.
Agradecimento Especial à André Luiz dos Santos Junior pelo apoio na solução : https://www.linkedin.com/in/andrelsjunior/
Agradecimento Especial à Adilton Costa Anna pelo apoio na solução : https://www.linkedin.com/in/adiltoncantos/
Top comments (0)