Azureストレージアカウントは、Azureエコシステムにおけるデータストレージソリューションの基盤であり、SQLバックアップの保存からメディアファイルの提供まで、さまざまなワークロードをサポートしています。ストレージコンテナから古くなったり冗長なBlobを削除するなどのタスクを自動化することで、ストレージコストを最適化し、効率性を確保できます。
このガイドでは、PowerShellを使用して、AzureストレージアカウントからBlobを安全かつ効果的に削除する方法を説明します。SQLバックアップ、アプリケーションログ、その他の非構造化データを管理している場合でも、このプロセスは、クリーンアップが日常的な要件であるさまざまなシナリオに適用できます。
ストレージアカウントに不慣れですか?
Microsoft Azureのコアサービスの1つが、ストレージアカウントサービスです。多くのサービスは、仮想マシンディスク、診断ログ(特にアプリケーションログ)、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を削除する前にコンテナが存在することを確認する
AzureストレージコンテナからBlobを削除するために、Remove-AzStorageBlob
コマンドレットを使用する必要があります。
## 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の強力なコマンドレットを活用することで、Azureリソースを自動化された、エラーのない方法で自信を持って管理することができます。
Source:
https://dzone.com/articles/how-to-automate-blob-deletion-azure-storage-powershell