如何利用PowerShell打破Blob存储中项目的租约?
当我试图在当前图像上上传内容时,收到以下信息:
Add-AzureRmVhd : The remote server returned an error: (412) There is currently a lease on the blob and no lease ID was specified in the request..
At line:1 char:1
+ Add-AzureRmVhd -Destination $osDiskUri -LocalFilePath $localFileName ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [Add-AzureRmVhd], StorageException
+ FullyQualifiedErrorId : Microsoft.Azure.Commands.Compute.StorageServices.AddAzureVhdCommand
租约可能来自虚拟机或其他使用博客存储的设备。因此,手动解除租约可能会导致问题。
话虽如此,以下PowerShell命令应该可以解决问题:
Get-AzureRmStorageAccount -Name "STORAGE_ACCOUNT_NAME" | Get-AzureStorageBlob -name "CONTAINER_NAME").ICloudBlob.BreakLease()
如果是VM,您应该会看到以下关于删除磁盘的帖子:无法删除Blob:Blob上当前有租约,并且请求中没有指定租约ID
但是,如果您只是想替换使用给定Blob的每台机器使用的驱动器,则停止VM、释放租约、上传新映像和启动VM似乎可以工作。
$key = (Get-AzureRmStorageAccountKey -ResourceGroupName $selectedStorageAccount.ResourceGroupName -name $selectedStorageAccount.StorageAccountName -ErrorAction Stop)[0].value
$storageContext = New-AzureStorageContext -StorageAccountName $selectedStorageAccount.StorageAccountName -StorageAccountKey $key -ErrorAction Stop
$storageContainer = Get-AzureStorageContainer -Context $storageContext -Name $ContainerName -ErrorAction Stop
$blob = Get-AzureStorageBlob -Context $storageContext -Container $ContainerName -Blob $BlobName -ErrorAction Stop
$leaseStatus = $blob.ICloudBlob.Properties.LeaseStatus;
If($leaseStatus -eq "Locked")
{
$blob.ICloudBlob.BreakLease()
Write-Host "Successfully broken lease on '$BlobName' blob."
}
Else
{
#$blob.ICloudBlob.AcquireLease($null, $null, $null, $null, $null)
Write-Host "The '$BlobName' blob's lease status is unlocked."
}
如果要为ARM资源编写脚本,可以使用如何在Microsoft Azure(PowerShell)中破解ARM对blob存储的锁定租约
登录到旧门户并导航到虚拟机,然后url的图像选项卡将显示为https://manage.windowsazure.com/@你的名字。onmicrosoft。com#Workspace/VirtualMachineeExtension/images
选择图像,然后选择底部的删除。
然后去你的存储并删除它。
您还可以尝试以下操作,它将删除给定容器的Blob,然后删除容器。
Add-AzureAccount
Get-AzureSubscription | Format-Table SubscriptionName, IsDefault, IsCurrent, CurrentStorageAccountName
$SubscriptionName = 'Your subsscription name'
Select-AzureSubscription -SubscriptionName $SubscriptionName
Get-AzureSubscription -Default
Get-AzureStorageAccount | Format-Table -Property StorageAccountName, Location, AccountType, StorageAccountStatus
$StorageAccountName = "Your storage account"
$StorageAccountKey = (Get-AzureStorageKey -StorageAccountName $StorageAccountName).Primary
$ContainerName = "Your container name"
$Context = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey
#Get a reference to all the blobs in the container.
$blobs = Get-AzureStorageBlob -Container $ContainerName -Context $Context
#Remove lease on each Blob
$blobs | %{$_.ICloudBlob.BreakLease()}
#Delete blobs in a specified container.
$blobs| Remove-AzureStorageBlob
Remove-AzureStorageContainer -Container $ContainerName -Context $Context
如果你想打破blob上的封印,你可以使用How to break the locked lease of blob storage in Microsoft Azure(PowerShell)
我在Azure中创建了一个虚拟机,然后将其删除。但是,关联的存储帐户仍然存在。我无法删除存储帐户,因为它包含一个容器,其中包含一个具有无限期租约的Blob。 没有其他东西正在使用此存储帐户。 如何删除此Blob?
在v11SDK. NET中,我能够使用托管标识令牌来访问Azure blob: 现在我想切换到v12 SDK,但不知道如何对BlobServiceClient进行同样的操作。
我正在发布和订阅Azure事件中心,它在存储帐户中的容器中使用blob。消息不使用此存储帐户发布,而是使用另一个存储帐户。 我可以看到租赁状态为“已租赁”的blob。我认为删除它并再次创建它可能会解决这个问题,所以我尝试删除它并创建一个新的。但无法删除。我还尝试破坏租约,但它再次将租约状态设置为“已租赁”。 有什么办法解决这个问题吗?
我想使用Python中的Azure函数将JSON数据作为. json文件上传到Azure存储Blob。 因为我使用的是Azure函数,而不是实际的服务器,所以我不想(也可能无法)在本地内存中创建一个临时文件,并使用Azure blob存储客户端库v2将该文件上载到Azure blob存储。1对于Python(这里有参考链接)。因此,我想为Azure函数使用输出blob存储绑定(这里有参考链接)。
我是Azure Databricks的新手,我的导师建议我在 https://aischool.microsoft.com/en-us/machine-learning/learning-paths/AI-platform-engineering-bootcamps/custom-machine-learning-bootcamp 据我所知,Azure Blob存储还没有设置,因此我运行的代码(以
我有大约6个设置文件(xml或json ),我想存储在Azure中,但在我的Windows客户端应用程序中使用。我计划将它们存储在blob存储中,并使用以下代码下载它们: 设置文件不会经常更改。如何在本地缓存文件,以避免每次下载? 有更好的方法吗?我应该使用的其他Azure服务?