You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure存储生命周期管理中排除指定容器?

Azure Blob Storage 排除指定容器实现7天后自动删除方案

方案一:使用Azure存储生命周期管理规则(自动化)

这是Azure原生的自动清理方案,无需编写脚本,适合长期自动执行:

  1. 登录Azure门户,进入目标存储账户,找到生命周期管理选项
  2. 点击“添加规则”,设置规则名称和范围为「所有容器」
  3. 在筛选器区域,选择「排除容器」,输入需要保留的容器名称(支持通配符,比如prod-*可匹配所有前缀为prod的容器)
  4. 设置清理操作:
    • 若要删除7天前创建的Blob:选择「删除Blob」,触发条件设为「基于创建时间」,时间间隔填7天
    • 若要删除7天前创建的空容器:新增一条规则,范围选「所有容器」,同样排除指定容器,操作选择「删除容器」,触发条件设为「基于创建时间」7天(注意:此操作仅删除空容器,若容器内有Blob需先删除Blob)

方案二:使用脚本手动/按需执行(PowerShell/Azure CLI)

如果需要更灵活的控制,可编写脚本实现:

PowerShell脚本示例

# 配置参数
$storageAccountName = "你的存储账户名"
$resourceGroupName = "你的资源组名"
$excludedContainers = @("要保留的容器1", "要保留的容器2")
$retentionDays = 7

# 获取存储账户上下文
$ctx = (Get-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName).Context

# 列出所有容器并排除指定容器
$containers = Get-AzStorageContainer -Context $ctx | Where-Object { $_.Name -notin $excludedContainers }

foreach ($container in $containers) {
    # 检查容器创建时间是否超过指定天数
    $creationTime = $container.LastModified.DateTime
    if ((Get-Date) - $creationTime -gt (New-TimeSpan -Days $retentionDays)) {
        # 删除容器(会连带删除容器内所有Blob)
        Remove-AzStorageContainer -Name $container.Name -Context $ctx -Force
        Write-Host "已删除容器: $($container.Name)"
    }
}

Azure CLI脚本示例

# 配置参数
STORAGE_ACCOUNT="你的存储账户名"
RESOURCE_GROUP="你的资源组名"
EXCLUDED_CONTAINERS=("要保留的容器1" "要保留的容器2")
RETENTION_DAYS=7

# 获取存储账户密钥
ACCOUNT_KEY=$(az storage account keys list --resource-group $RESOURCE_GROUP --account-name $STORAGE_ACCOUNT --query "[0].value" -o tsv)

# 列出所有容器
CONTAINERS=$(az storage container list --account-name $STORAGE_ACCOUNT --account-key $ACCOUNT_KEY --query "[].name" -o tsv)

for container in $CONTAINERS; do
    # 跳过排除列表中的容器
    if [[ ! " ${EXCLUDED_CONTAINERS[@]} " =~ " ${container} " ]]; then
        # 获取容器创建时间并计算天数差
        CREATION_TIME=$(az storage container show --name $container --account-name $STORAGE_ACCOUNT --account-key $ACCOUNT_KEY --query "properties.lastModified" -o tsv)
        CREATION_TIMESTAMP=$(date -d "$CREATION_TIME" +%s)
        CURRENT_TIMESTAMP=$(date +%s)
        DIFF_DAYS=$(((CURRENT_TIMESTAMP - CREATION_TIMESTAMP) / 86400))
        
        if [ $DIFF_DAYS -ge $RETENTION_DAYS ]; then
            # 删除容器
            az storage container delete --name $container --account-name $STORAGE_ACCOUNT --account-key $ACCOUNT_KEY --yes
            echo "已删除容器: $container"
        fi
    fi
done

注意事项

  • 若只需清理容器内的Blob而非删除容器,可修改脚本:遍历容器内的Blob,筛选出7天前创建的Blob进行删除
  • 正式执行前务必在测试环境验证规则或脚本,避免误删重要数据
  • 生命周期规则生效可能有延迟(通常不超过24小时),脚本则可立即执行

内容的提问来源于stack exchange,提问作者Phoebe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 07:25:18