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

在Terraform中如何配置Blob版本7天后自动删除?是否有对应属性?

解决Azure存储账户Blob版本自动过期删除的Terraform配置方案

Terraform的azurerm_storage_account资源本身没有直接配置Blob版本自动删除天数的属性,但可以通过以下两种官方推荐的方式实现你的需求:

方式一:配置Blob生命周期管理规则(首选)

通过存储账户的生命周期管理策略,专门针对Blob版本设置过期删除规则,这是Azure官方推荐的标准实现方式。

在Terraform中可通过azurerm_storage_account_management_policy资源完成配置,示例代码如下:

resource "azurerm_storage_account" "example" {
  name                     = "examplestorageacc"
  resource_group_name      = azurerm_resource_group.example.name
  location                 = azurerm_resource_group.example.location
  account_tier             = "Standard"
  account_replication_type = "GRS"

  # 启用Blob版本控制
  blob_properties {
    versioning_enabled = true
  }
}

resource "azurerm_storage_account_management_policy" "example" {
  storage_account_id = azurerm_storage_account.example.id

  rule {
    name    = "delete-old-blob-versions"
    enabled = true

    filters {
      blob_types = ["blockBlob"]
      # 限定规则仅作用于Blob版本,不影响当前活跃Blob
      blob_version = true
    }

    actions {
      base_blob {
        delete {
          days_after_creation_greater_than = 7
        }
      }
    }
  }
}

核心要点:

  • filters块中设置blob_version = true,确保规则只对Blob版本生效
  • days_after_creation_greater_than = 7定义版本创建7天后自动删除

方式二:通过Azure CLI辅助配置(适合特殊场景)

如果不需要用Terraform持久化管理生命周期规则,也可以通过local-exec provisioner调用Azure CLI命令完成配置:

resource "azurerm_storage_account" "example" {
  # 同上述存储账户配置内容
}

provisioner "local-exec" {
  command = <<EOT
    az storage account management-policy create \
      --account-name ${azurerm_storage_account.example.name} \
      --resource-group ${azurerm_resource_group.example.name} \
      --policy '{
        "rules": [
          {
            "name": "delete-old-blob-versions",
            "enabled": true,
            "filters": {
              "blobTypes": ["blockBlob"],
              "blobVersion": true
            },
            "actions": {
              "baseBlob": {
                "delete": {
                  "daysAfterCreationGreaterThan": 7
                }
              }
            }
          }
        ]
      }'
  EOT
}

注意:使用该方式需要确保执行Terraform的环境已安装并配置好Azure CLI的权限。

补充说明

  • delete_retention_policy确实仅针对软删除的Blob生效,与Blob版本的自动清理逻辑无关
  • 生命周期管理规则还支持更复杂的配置,比如将旧版本归档到冷存储/归档存储后再删除,可根据需求调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 10:12:47