这里有一些关于Stackoverflow的问题,但是所有这些都是由于虚拟机及其磁盘而导致的租约。答案是首先删除磁盘,以便能够删除存储帐户/容器。
示例:How do I delete an Azure storage account containing a leased blob?
我的问题是我有一个使用租用容器的自定义审核日志(我们不希望任何人对日志进行操作。)。但是我们将这些日志移到了其他地方,所以现在我想删除旧资源。但由于租约锁定而无法使用。
这很可能是由于我不了解租赁的工作方式。 我的第一个尝试是打破租约并解锁。.已完成:
我的假设是我现在可以删除资源,但是仍然会收到错误消息:
”无法从1个容器中删除1个: auditlog-container:ContainerProtectedFromDeletion:由于ImmutabilityPolicy,可以保护存储帐户stgutauditlog容器auditlog-container免受删除。”
因此,我在查看此ImmutablePolicy时尝试了Blob Containers - Delete Immutability Policy,但收到了错误消息:
{
"error": {
"code": "ContainerImmutabilityPolicyFailure",
"message": "Operation not allowed on immutability policy with incorrect etag."
}
}
查看eTag,您应该在If-Match标头中设置eTag版本(仅与eTag相关的参数)。但是我尝试添加eTag,尝试了*和其他但仍然相同的消息。
尝试使用Blob Containers - Get Immutability Policy命令尝试获取eTag我只能得到所有已提供的eTag,等等
{
"id": "/subscriptions/<removed>/resourceGroups/<removed>/providers/Microsoft.Storage/storageAccounts/<removed>/blobServices/default/containers/auditlog-container/immutabilityPolicies/default",
"name": "default",
"type": "Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies",
"etag": "\"<removed>\"",
"properties": {
"immutabilityPeriodSinceCreationInDays": 8,
"state": "Locked"
}
}
(已删除了上面代码中标记为已删除的一些安全信息)
这里说锁定了...但是我该如何删除该锁定呢?
也无法删除其中的文件,这些选项显示为灰色:
我不知道下一步该怎么做或我错过了什么。如何删除该存储帐户/容器?
有任何帮助!
答案 0 :(得分:1)
@Swippen,我尝试重现该场景,并在尝试使用Powershell和Storage Explorer删除容器时遇到以下错误,其中不可变策略处于锁定状态。 policy1 policy 但是,当我尝试使用门户网站删除同一容器时。它已成功删除并为我工作,您能否尝试一次使用门户删除容器。 policy3
注意:-不允许删除锁定的不变性策略,唯一的方法是在删除容器内的所有blob之后删除容器。
答案 1 :(得分:0)
如果租约状态可用,我建议您尝试使用下面的Power Shell脚本删除特定的容器。看看这是否对您有帮助。
Login-AzureRmAccount
Set-AzureRmContext -SubscriptionID "yoursubscription id"
$ResourceGroupName = "your resourcegroup name"
$StorageAccountName = "your storage account name"
$StorageContainerNames = "container1, container2"
try{
## Get Storage Details
Write-Output ("Get Storage Account $StorageAccountName Keys")
$Keys = Get-AzureRmStorageAccountKey -ResourceGroupName $ResourceGroupName -Name $StorageAccountName;
Write-Output ("Get Storage Account $StorageAccountName Context")
$StorageContext = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $Keys[0].Value;
## Proccess Each Container
$StorageContainerNames.Split(",") | ForEach {
$currentContainer = $_
Write-Output ("Start Remove for Container $currentContainer")
## Remove Container
if ((Get-AzureStorageContainer -Context $StorageContext | Where-Object { $_.Name -eq $currentContainer })){
## Remove a Blob Container in the Storage Account
Write-Output ("Removing Container: $currentContainer")
Remove-AzureStorageContainer -Context $StorageContext -Name $currentContainer -Force;
Write-Output ("Container $currentContainer Removed")
}
else {
Write-Warning "Container $currentContainer doesn't exists."
}
}
}catch {
Write-Error "$_.Exception.Message"
}