As contas de armazenamento do Azure são um pilar fundamental para soluções de armazenamento de dados no ecossistema Azure, suportando diversas cargas de trabalho, desde o armazenamento de backups SQL até a entrega de arquivos de mídia. Automatizar tarefas como a exclusão de blobs desatualizados ou redundantes de contêineres de armazenamento pode otimizar os custos de armazenamento e garantir eficiência.
Este guia o levará a usar PowerShell para excluir blobs de forma segura e eficaz de uma conta de armazenamento do Azure. Quer você esteja gerenciando backups SQL, logs de aplicativos ou outros dados não estruturados, esse processo pode ser aplicado a uma ampla gama de cenários em que a limpeza é um requisito rotineiro.
Novato em Conta de Armazenamento?
Um dos serviços principais dentro do Microsoft Azure é o serviço de conta de armazenamento. Muitos serviços utilizam contas de armazenamento para armazenar dados, como Discos de Máquinas Virtuais, logs de Diagnóstico (especialmente logs de aplicativos), backups SQL e outros. Você também pode usar o serviço de conta de armazenamento do Azure para armazenar seus próprios dados, como blobs ou dados binários.
De acordo com o MSDN, o armazenamento de blobs do Azure permite que você armazene grandes quantidades de dados de objetos não estruturados. Você pode usar o armazenamento de blobs para coletar ou expor mídia, conteúdo ou dados de aplicativos para os usuários. Como todos os dados de blob são armazenados dentro de contêineres, você deve criar um contêiner de armazenamento antes de poder começar a fazer upload de dados.
Passo a Passo
Passo 1: Obter as Entradas Pré-Requisitos
Neste exemplo, vou excluir um banco de dados SQL (backed up ou importado para armazenamento) armazenado no formato bacpac
em um contêiner SQL.
## prerequisite Parameters
$resourceGroupName="rg-dgtl-strg-01"
$storageAccountName="sadgtlautomation01"
$storageContainerName="sql"
$blobName = "core_2022110824.bacpac"
Passo 2: Conectar à Sua Assinatura do Azure
Usar o comando az login
com um principal de serviço é uma maneira segura e eficiente de autenticar e conectar à sua assinatura do Azure para tarefas de automação e scripts. Em cenários em que você precisa automatizar tarefas de gerenciamento do Azure ou executar scripts de maneira não interativa, você pode se autenticar usando um principal de serviço. Um principal de serviço é uma identidade criada para sua aplicação ou script acessar recursos do Azure de forma segura.
## Connect to your Azure subscription
az login --service-principal -u "210f8f7c-049c-e480-96b5-642d6362f464" -p "c82BQ~MTCrPr3Daz95Nks6LrWF32jXBAtXACccAV" --tenant "cf8ba223-a403-342b-ba39-c21f78831637"
Passo 3: Verificar se o Contêiner Existe na Conta de Armazenamento
Ao trabalhar com o Armazenamento do Azure, você pode precisar verificar se um contêiner existe em uma conta de armazenamento ou criá-lo se não existir. Você pode usar o cmdlet Get-AzStorageContainer
para verificar a existência de um contêiner.
## Get the storage account to check container exist or need to be create
$storageAccount = Get-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName
## Get the storage account context
$context = $storageAccount.Context
Passo 4: Garantir que o Contêiner Exista Antes de Excluir o Blob
Precisamos usar o cmdlet Remove-AzStorageBlob
para excluir um blob do contêiner de Armazenamento do Azure.
## Check if the storage container exists
if(Get-AzStorageContainer -Name $storageContainerName -Context $context -ErrorAction SilentlyContinue)
{
Write-Host -ForegroundColor Green $storageContainerName ", the requested container exit,started deleting blob"
## Create a new Azure Storage container
Remove-AzStorageBlob -Container $storageContainerName -Context $context -Blob $blobName
Write-Host -ForegroundColor Green $blobName deleted
}
else
{
Write-Host -ForegroundColor Magenta $storageContainerName "the requested container does not exist"
}
Aqui está o código completo:
## Delete a Blob from an Azure Storage
## Input Parameters
$resourceGroupName="rg-dgtl-strg-01"
$storageAccountName="sadgtlautomation01"
$storageContainerName="sql"
$blobName = "core_2022110824.bacpac"
## Connect to your Azure subscription
az login --service-principal -u "210f8f7c-049c-e480-96b5-642d6362f464" -p "c82BQ~MTCrPr3Daz95Nks6LrWF32jXBAtXACccAV" --tenant "cf8ba223-a403-342b-ba39-c21f78831637"
## Function to create the storage container
Function DeleteblogfromStorageContainer
{
## Get the storage account to check container exist or need to be create
$storageAccount = Get-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName
## Get the storage account context
$context = $storageAccount.Context
## Check if the storage container exists
if(Get-AzStorageContainer -Name $storageContainerName -Context $context -ErrorAction SilentlyContinue)
{
Write-Host -ForegroundColor Green $storageContainerName ", the requested container exit,started deleting blob"
## Remove the blob in Azure Storage container
Remove-AzStorageBlob -Container $storageContainerName -Context $context -Blob $blobName
Write-Host -ForegroundColor Green $blobName deleted
}
else
{
Write-Host -ForegroundColor Magenta $storageContainerName "the requested container does not exist"
}
}
#Call the Function
DeleteblogfromStorageContainer
Aqui está a saída:
Conclusão
Automatizar a exclusão de blobs em contas de armazenamento do Azure usando o PowerShell é uma abordagem prática para manter um sistema de armazenamento eficiente e livre de bagunça. Seguindo os passos descritos, você pode integrar esse processo perfeitamente em seus fluxos de trabalho, economizando tempo e reduzindo esforços manuais.
Este método não se limita apenas a arquivos de backup do SQL. Ele também pode ser estendido para gerenciar outros tipos de dados armazenados no Azure Storage, como logs de aplicativos, arquivos de diagnóstico ou conteúdo de mídia. Ao garantir a existência de containers e aproveitar os robustos cmdlets do PowerShell, você pode gerenciar com confiança seus recursos do Azure de forma automatizada e livre de erros.
Source:
https://dzone.com/articles/how-to-automate-blob-deletion-azure-storage-powershell