Azure 儲存帳戶是 Azure 生態系統中數據存儲解決方案的基石,支持各種工作負載,從存儲 SQL 備份到提供媒體文件。自動化任務,如從存儲容器中刪除過時或多餘的 Blob,可以優化存儲成本並確保效率。
本指南將指導您如何使用 PowerShell 安全有效地從 Azure 儲存帳戶中刪除 Blob。無論您是管理 SQL 備份、應用程序日誌還是其他非結構化數據,這個過程都可以應用於多種需要定期清理的情況。
首次使用儲存帳戶?
Microsoft Azure 中的核心服務之一是 儲存帳戶服務。許多服務使用儲存帳戶來存儲數據,例如虛擬機磁碟、診斷日誌(特別是應用程序日誌)、SQL 備份等。您還可以使用 Azure 儲存帳戶服務來存儲自己的數據,例如 Blob 或二進制數據。
根據 MSDN,Azure Blob 儲存允許您存儲大量的非結構化對象數據。您可以使用 Blob 儲存來收集或向用戶公開媒體、內容或應用程序數據。由於所有 Blob 數據都存儲在容器中,您必須在開始上傳數據之前創建一個存儲容器。
逐步操作
步驟 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 存儲時,您可能需要驗證存儲賬戶中是否存在容器,如果不存在則創建。您可以使用 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:確保在刪除 Blob 之前容器存在
我們需要使用 Remove-AzStorageBlob
命令從 Azure 存儲容器中刪除 Blob。
## 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
以下是輸出:
結論
使用 PowerShell 自動化刪除 Azure 存儲賬戶中的 Blob 是維護整潔高效的存儲系統的實用方法。按照所述步驟,您可以將此流程無縫集成到工作流程中,節省時間並減少手動工作。
這個方法不僅僅局限於 SQL 備份檔案。它也可以擴展到管理存儲在 Azure Storage 中的其他類型數據,如應用程序日誌、診斷文件或媒體內容。通過確保容器的存在並利用 PowerShell 強大的 cmdlets,您可以自信地以自動化、無錯誤的方式管理您的 Azure 資源。
Source:
https://dzone.com/articles/how-to-automate-blob-deletion-azure-storage-powershell