Las cuentas de almacenamiento de Azure son una piedra angular para las soluciones de almacenamiento de datos en el ecosistema de Azure, apoyando diversas cargas de trabajo, desde almacenar copias de seguridad de SQL hasta servir archivos multimedia. Automatizar tareas como eliminar blobs obsoletos o redundantes de los contenedores de almacenamiento puede optimizar los costos de almacenamiento y garantizar la eficiencia.
Esta guía te guiará a través del uso de PowerShell para eliminar de manera segura y efectiva blobs de una cuenta de almacenamiento de Azure. Ya sea que estés gestionando copias de seguridad de SQL, registros de aplicaciones u otros datos no estructurados, este proceso se puede aplicar a una amplia gama de escenarios donde la limpieza es un requisito habitual.
¿Nuevo en Cuentas de Almacenamiento?
Uno de los servicios principales dentro de Microsoft Azure es el servicio de cuentas de almacenamiento. Muchos servicios utilizan cuentas de almacenamiento para almacenar datos, como discos de máquinas virtuales, registros de diagnóstico (especialmente registros de aplicaciones), copias de seguridad de SQL y otros. También puedes utilizar el servicio de cuentas de almacenamiento de Azure para almacenar tus propios datos, como blobs o datos binarios.
Según MSDN, el almacenamiento de blobs de Azure te permite almacenar grandes cantidades de datos de objetos no estructurados. Puedes utilizar el almacenamiento de blobs para recopilar o exponer medios, contenido o datos de aplicaciones a los usuarios. Dado que todos los datos de blobs se almacenan dentro de contenedores, debes crear un contenedor de almacenamiento antes de poder comenzar a cargar datos.
Paso a Paso
Paso 1: Obtener las Entradas Previas Requeridas
En este ejemplo, eliminaré una base de datos SQL (respaldada o importada al almacenamiento) almacenada en formato bacpac
en un contenedor SQL.
## prerequisite Parameters
$resourceGroupName="rg-dgtl-strg-01"
$storageAccountName="sadgtlautomation01"
$storageContainerName="sql"
$blobName = "core_2022110824.bacpac"
Paso 2: Conéctate a tu suscripción de Azure
Usar el comando az login
con un principal de servicio es una forma segura y eficiente de autenticarte y conectarte a tu suscripción de Azure para tareas de automatización y scripts. En escenarios donde necesitas automatizar tareas de gestión de Azure o ejecutar scripts de manera no interactiva, puedes autenticarte usando un principal de servicio. Un principal de servicio es una identidad creada para tu aplicación o script para acceder a los recursos de Azure de manera 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"
Paso 3: Verifica si el contenedor existe en la cuenta de almacenamiento
Al trabajar con Azure Storage, es posible que necesites verificar si un contenedor existe en una cuenta de almacenamiento o crearlo si no existe. Puedes usar el cmdlet Get-AzStorageContainer
para comprobar la existencia de un contenedor.
## 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
Paso 4: Asegúrate de que el contenedor exista antes de eliminar el blob
Necesitamos usar el cmdlet Remove-AzStorageBlob
para eliminar un blob del contenedor de almacenamiento de 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"
}
Aquí está el 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
Aquí está la salida:
Conclusión
Automatizar la eliminación de blobs en cuentas de almacenamiento de Azure usando PowerShell es un enfoque práctico para mantener un sistema de almacenamiento ordenado y eficiente. Siguiendo los pasos descritos, puedes integrar este proceso sin problemas en tus flujos de trabajo, ahorrando tiempo y reduciendo esfuerzos manuales.
Este método no se limita únicamente a los archivos de copia de seguridad de SQL. También se puede extender para gestionar otros tipos de datos almacenados en Azure Storage, como registros de aplicaciones, archivos de diagnóstico o contenido multimedia. Al garantizar la existencia de contenedores y aprovechar los sólidos cmdlets de PowerShell, puedes gestionar con confianza tus recursos de Azure de manera automatizada y sin errores.
Source:
https://dzone.com/articles/how-to-automate-blob-deletion-azure-storage-powershell