Учётные записи Azure Storage являются краеугольным камнем для решений по хранению данных в экосистеме Azure, поддерживая различные рабочие нагрузки, от хранения резервных копий SQL до обслуживания медиафайлов. Автоматизация таких задач, как удаление устаревших или избыточных блобов из контейнеров хранения, может оптимизировать затраты на хранение и обеспечить эффективность.
Этот гид проведет вас через использование PowerShell для безопасного и эффективного удаления блобов из учётной записи Azure Storage. Независимо от того, управляете ли вы резервными копиями SQL, журналами приложений или другими неструктурированными данными, этот процесс можно применить к широкому спектру сценариев, где очистка является рутинным требованием.
Вы новичок в учётной записи хранения?
Одной из основных услуг в Microsoft Azure является услуга учётной записи хранения. Многие услуги используют учётные записи хранения для хранения данных, таких как диски виртуальных машин, журналы диагностики (особенно журналы приложений), резервные копии SQL и другие. Вы также можете использовать службу учётной записи хранения Azure для хранения ваших собственных данных, таких как блобы или двоичные данные.
Согласно MSDN, хранилище блобов Azure позволяет вам хранить большие объемы неструктурированных объектных данных. Вы можете использовать хранилище блобов для сбора или предоставления медиа, контента или данных приложений пользователям. Поскольку все данные блобов хранятся в контейнерах, вы должны создать контейнер хранения, прежде чем сможете начать загружать данные.
Пошагово
Шаг 1: Получите необходимые входные данные
В этом примере я удалю базу данных SQL (с резервным копированием или импортированную в хранилище), хранящуюся в формате bacpac
в контейнере SQL.
## prerequisite Parameters
$resourceGroupName="rg-dgtl-strg-01"
$storageAccountName="sadgtlautomation01"
$storageContainerName="sql"
$blobName = "core_2022110824.bacpac"
Шаг 2: Подключитесь к своей подписке Azure
Используя команду az login
с помощью служебного принципала, можно безопасно и эффективно аутентифицироваться и подключиться к своей подписке Azure для автоматизации задач и скриптов. В случаях, когда требуется автоматизировать задачи управления Azure или запускать скрипты в неинтерактивном режиме, можно выполнять аутентификацию с помощью служебного принципала. Служебной принципал – это идентификатор, созданный для вашего приложения или скрипта, чтобы обеспечить безопасный доступ к ресурсам Azure.
## Connect to your Azure subscription
az login --service-principal -u "210f8f7c-049c-e480-96b5-642d6362f464" -p "c82BQ~MTCrPr3Daz95Nks6LrWF32jXBAtXACccAV" --tenant "cf8ba223-a403-342b-ba39-c21f78831637"
Шаг 3: Проверьте, существует ли контейнер в хранилище учетных записей
При работе с Azure Storage может потребоваться проверить, существует ли контейнер в хранилище учетных записей, или создать его, если его нет. Вы можете использовать командлет Get-AzStorageContainer
для проверки существования контейнера.
## 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
Шаг 4: Убедитесь, что контейнер существует перед удалением блоба
Нам нужно использовать командлет Remove-AzStorageBlob
для удаления блоба из контейнера Azure Storage.
## 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"
}
Вот полный код:
## 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
Вот вывод:
Заключение
Автоматизация удаления блобов в учетных записях хранилища Azure с помощью PowerShell является практичным подходом для поддержания чистой и эффективной системы хранения. Следуя описанным шагам, вы можете без проблем интегрировать этот процесс в ваши рабочие процессы, экономя время и снижая ручные усилия.
Этот метод не ограничивается лишь файлами резервных копий SQL. Его также можно расширить для управления другими типами данных, хранящимися в Azure Storage, такими как журналы приложений, диагностические файлы или медиа-контент. Убедившись в наличии контейнеров и используя мощные команды PowerShell, вы можете уверенно управлять своими ресурсами Azure в автоматизированном, безошибочном режиме.
Source:
https://dzone.com/articles/how-to-automate-blob-deletion-azure-storage-powershell