首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Azure中删除具有审核日志的租赁容器?

如何在Azure中删除具有审核日志的租赁容器?
EN

Stack Overflow用户
提问于 2019-01-08 19:29:15
回答 2查看 955关注 0票数 1

在Stackoverflow上有一些关于这个问题的问题,但所有这些问题都是由于虚拟机及其磁盘而存在的租约。然后,答案是首先删除磁盘,以便能够删除存储帐户/容器。

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

我的问题是,我有一个自定义的审计日志,我们使用了一个租用的容器(我们不希望任何人操纵日志obv。)但是我们将这些日志移到了其他地方,所以现在我想删除旧的资源。但由于租借锁定而无法访问。

这很可能是因为我不了解租赁是如何工作的。我的第一次尝试是打破租约并解锁..这是已经完成的:

我的假设是我现在可以删除资源,但我仍然得到错误:

“无法从%1容器中删除%1: auditlog- container : ContainerProtectedFromDeletion:由于ImmutabilityPolicy,存储帐户stgutauditlog容器auditlog-container不会被删除。”

因此,查看此ImmutablePolicy,我尝试了Blob Containers - Delete Immutability Policy,但得到了错误消息:

代码语言:javascript
复制
{
  "error": {
    "code": "ContainerImmutabilityPolicyFailure",
    "message": "Operation not allowed on immutability policy with incorrect etag."
  }
}

查看eTag,您应该在If-Match报头中检查eTag版本(仅与eTag相关的参数)。但是我试着添加了eTag,the *和其他的,但仍然是相同的消息。

尝试使用Blob Containers - Get Immutability Policy命令来尝试获取eTag,我只获得了提供的eTag等等

代码语言:javascript
复制
{
  "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"
  }
}

(删除了上面代码中标记为removed的一些安全信息)

这里写着锁着..。但是我如何删除这个锁??

此外,删除其中的文件也是不可能的,选项呈灰色显示:

我不知道下一步该走什么,也不知道我错过了什么。如何删除此存储帐户/容器?

任何有用的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-09 00:05:19

@Swippen,当我尝试使用powershell和存储资源管理器删除容器时,我尝试重现该场景,并得到以下错误,其中不可变策略处于锁定状态。policy1 policy,但当我尝试使用门户删除相同的容器时。已成功删除,对我有效,您可以尝试使用门户删除容器一次吗?policy3

注意:-不允许删除锁定的不可变性策略,唯一的方法是在删除容器内的所有blob之后删除容器。

票数 1
EN

Stack Overflow用户

发布于 2019-01-08 20:11:41

如果租赁状态可用,我建议您尝试使用下面的Power Shell脚本来删除特定的容器。看看这对你有没有帮助。

代码语言:javascript
复制
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"

} 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54090887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档