How do I delete an Azure storage account containing a leased blob?

后端 未结 10 2112
春和景丽
春和景丽 2020-12-04 10:02

I was playing with Windows Azure durable virtual machines. In the end, I deleted the virtual machine (successfully) and tried to delete the associated storage account.

10条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-04 10:37

    Sometimes we via the new portal to delete azure storage account, but we can’t delete it and get this error:” Failed to delete storage account 'jason1disks796'. Error: The storage account cannot be deleted due to its artifacts being in use.

    We can use PowerShell to list all the VHD blobs of the storage account(ARM module):

    PS > Login-AzureRmAccount
    PS > $RGName = "jason1"
    PS > $SAName = "jason1disks796"
    PS > $ConName = "vhds"
    PS > $TempObj = New-Object -TypeName PSCustomObject
    PS > $TempObj |Add-Member -Name BlobName -MemberType NoteProperty -Value $null
    PS > $TempObj |Add-Member -Name LeaseState -MemberType NoteProperty -Value $null
    PS > $Keylist = Get-AzureRmStorageAccountKey -ResourceGroupName $RGName -StorageAccountName $SAName
    PS > $Key = $Keylist[0].Value
    PS > $Ctx = New-AzureStorageContext -StorageAccountName $SAName -StorageAccountKey $Key
    PS > Get-AzureStorageContainer -Context $ctx
    CloudBlobContainer : Microsoft.WindowsAzure.Storage.Blob.CloudBlobContainer
    Permission         : Microsoft.WindowsAzure.Storage.Blob.BlobContainerPermissions
    PublicAccess       : Off
    LastModified       : 1/19/2017 1:27:21 AM +00:00
    ContinuationToken  :
    Context            : Microsoft.WindowsAzure.Commands.Common.Storage.AzureStorageContext
    Name               : vhds
    PS > $List = Get-AzureStorageBlob -Blob *.vhd -Container $ConName -Context $Ctx
    PS > $List | ForEach-Object { $TempObj.BlobName = $_.Name; $TempObj.LeaseState = $_.ICloudBlob.Properties.LeaseState; $TempObj }
    
    BlobName              LeaseState
    --------              ----------
    SQL20170119092405.vhd     Leased
    
    PS > Get-AzureStorageBlob -Blob * -Container $con -Context $ctx | Remove-AzureStorageBlob
    PS > Remove-AzureRmStorageAccount -ResourceGroupName $RGname -Name $SAName
    

    If your storage account is in the ASM module, you can use this script to remove storage account:

    Add-AzureAccount
    $SAName = "jason1161"
    $ConName = "vhds"
    $TempObj = New-Object -TypeName PSCustomObject
    $TempObj |Add-Member -Name BlobName -MemberType NoteProperty -Value $null
    $TempObj |Add-Member -Name LeaseState -MemberType NoteProperty -Value $null
    $Keylist = Get-AzureStorageKey -StorageAccountName $SAName
    $Key = $Keylist.primary
    $Ctx = New-AzureStorageContext -StorageAccountName $SAName -StorageAccountKey $Key
    $List = Get-AzureStorageBlob -Blob *.vhd -Container $ConName -Context $Ctx
    $List | ForEach-Object { $TempObj.BlobName = $_.Name; $TempObj.LeaseState = $_.ICloudBlob.Properties.LeaseState; $TempObj }
    PS > Get-AzureStorageBlob -Blob * -Container $con -Context $ctx | Remove-AzureStorageBlob
    PS > Remove-AzureStorageAccount -Name $SAName
    

    Besides, there is another scenario, there is no container or blob in this storage account (an empty storage account, we can’t find blob or container in this storage account via PowerShell or portal), when we use portal to delete the storage account, and the error message” Failed to delete storage account 'jason1disks796'. Error: The storage account cannot be deleted due to its artifacts being in use”. In this scenario we can create a new VM and specify the storage account to the problematic Storage Account, then delete it again.

提交回复
热议问题