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

如何通过Bicep配置Azure存储生命周期策略排除develop分支Blob

解决方案及示例

核心思路

Azure存储生命周期管理不支持否定过滤规则,因此只能通过明确匹配需要执行删除操作的Blob范围,或是将需保留的Blob隔离到单独容器来实现排除效果。

方案1:通过prefixMatch匹配所有需删除的Blob前缀

如果你的Blob有明确命名规则(比如除develop/前缀外,其他Blob都有固定前缀如prod/、test/等),可以把这些需要删除的前缀全部加入prefixMatch数组,规则仅对匹配这些前缀的Blob生效,自动排除develop/开头的Blob。

Bicep示例代码

resource storageAccountManagementPolicies 'Microsoft.Storage/storageAccounts/managementPolicies@2023-01-01'{
  name: 'Storage Account Name'
  properties: {
    policy: {
      rules: [
        {
          enabled: true
          name: 'Delete non-develop blobs'
          type: 'Lifecycle'
          definition: {
            actions: {
              baseBlob: {
                delete: {
                  daysAfterCreationGreaterThan: 100
                }
              }
            }
            filters: {
              blobTypes: [
                'blockBlob'
              ]
              // 列出所有需执行删除的Blob前缀,自动排除develop/开头的Blob
              prefixMatch: [
                'prod/'
                'test/'
                'staging/'
                // 补充所有非develop的Blob前缀
              ]
            }
          }
        }
      ]
    }
  }
}

方案2:将develop分支Blob迁移到单独容器

如果无法穷举非develop的Blob前缀,最稳妥的方式是把develop分支的Blob移到单独容器(比如container-develop),然后让生命周期策略仅应用到其他需要清理的容器。

Bicep示例代码

resource storageAccountManagementPolicies 'Microsoft.Storage/storageAccounts/managementPolicies@2023-01-01'{
  name: 'Storage Account Name'
  properties: {
    policy: {
      rules: [
        {
          enabled: true
          name: 'Delete blobs in non-develop containers'
          type: 'Lifecycle'
          definition: {
            actions: {
              baseBlob: {
                delete: {
                  daysAfterCreationGreaterThan: 100
                }
              }
            }
            filters: {
              blobTypes: [
                'blockBlob'
              ]
              // 指定需要应用规则的容器,排除存放develop分支的容器
              containerNameMatch: [
                'container-prod'
                'container-test'
                // 补充所有非develop的容器名称
              ]
            }
          }
        }
      ]
    }
  }
}

注意事项

  • 使用prefixMatch时,要确保所有需删除的Blob都能被列出的前缀覆盖,避免遗漏或误删。
  • 容器隔离方案更适合Blob命名规则不固定的场景,管理更清晰,能避免因前缀变化导致规则失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 04:02:16