2016-02-20 10 views
5

Impossibile eliminare un blob di Azure perché ha un lease infinito su di esso. Attualmente sto provando a rompere quel contratto d'affitto usando il metodo BreakLease().Azure BreakLease restituisce 409 Errore di conflitto

Qui ci sono i comandi che sto eseguendo in PowerShell:

$StorageAccountName = "storage account name" 
$ContainerName = "container name" 
$BlobName = "blob name 

[Reflection.Assembly]::LoadFile("C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ServiceManagement\Azure\Azure.Storage\Microsoft.WindowsAzure.Storage.dll") 
$Keys = Get-AzureStorageKey -StorageAccountName $StorageAccountName 
$StorageAccountKey = $Keys[0].Primary 
$Creds = New-Object Microsoft.WindowsAzure.Storage.Auth.StorageCredentials($StorageAccountName,$StorageAccountKey) 
$CloudStorageAccount = New-Object Microsoft.WindowsAzure.Storage.CloudStorageAccount($Creds, $true) 
$CloudBlobClient = $CloudStorageAccount.CreateCloudBlobClient() 
$BlobContainer = $CloudBlobClient.GetContainerReference($ContainerName) 
$Blob = $BlobContainer.ListBlobs() | Where{$_.Name -eq $BlobName} 
$Blob.Properties 
$Blob.BreakLease($(New-TimeSpan), $null, $null, $null) 

L'uscita proprietà BLOB è:

CacheControl     : 
ContentDisposition   : 
ContentEncoding    : 
ContentLanguage    : 
Length      : 1098437886464 
ContentMD5     : 
ContentType     : application/octet-stream 
ETag       : "0x8D33831477A9F90" 
LastModified     : 2/18/2016 7:01:09 AM +00:00 
BlobType      : PageBlob 
LeaseStatus     : Locked 
LeaseState     : Leased 
LeaseDuration     : Infinite 
PageBlobSequenceNumber  : 
AppendBlobCommittedBlockCount : 

Il messaggio di errore sul BreakLease() chiamata di metodo è:

Exception calling "BreakLease" with "4" argument(s): "The remote server returned an error: (409) Conflict." 
At line:1 char:20 
+ $Blob.BreakLease($(New-TimeSpan), $null, $null, $null) 
+     ~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [], MethodInvocationException 
    + FullyQualifiedErrorId : StorageException 

Qualche idea?

risposta

0

Penso che non stiate indirizzando il giusto tipo di risorsa. Si esegue il metodo BreakLease su un diverso tipo di risorsa e non TypeName: Microsoft.WindowsAzure.Storage.Blob.CloudBlob

Stavo facendo lo stesso errore quando si mira:

TypeName: Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageBlob 
0

Ho incontrato lo stesso problema con macchie che rappresentano i dischi di macchine virtuali collegato a macchine virtuali nei set di disponibilità di Azure. Se tutto il resto fallisce, ho intenzione di aggiornare il mio script di crittografia per rilevare se una VM è in una disponibilità set e se lo è, utilizzare il seguente processo:

  1. Salva la configurazione VM
  2. Eliminare il VM, ma mantenere i dischi e NIC
  3. criptare i blob disco (rompendo il contratto di locazione non deve essere più necessario in quanto la VM è stata eliminata)
  4. Ricreare la VM nella disponibilità insieme con la sua configurazione registrati, e allegare il vecchio NIC e il BLOB del disco ora crittografato

HTH