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

如何通过Azure Pipelines自动删除Azure Blob存储中过期X时间的旧文件?

用Azure Pipelines自动清理Azure Blob存储过期文件的方案

前提准备

  • 给Azure Pipelines配置有权访问目标Blob存储的服务连接(用Azure Resource Manager类型的服务连接即可)
  • 确定要清理的容器名称,以及文件过期时长X(比如30天)

方案一:用Azure CLI任务批量清理

在Pipeline的YAML文件里添加这个任务,通过Azure CLI命令批量删除过期文件:

- task: AzureCLI@2
  displayName: '清理过期Blob'
  inputs:
    azureSubscription: '你的服务连接名称'
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: |
      # 替换成你的实际参数
      STORAGE_ACCOUNT_NAME="你的存储账户名"
      CONTAINER_NAME="目标容器名"
      EXPIRE_DAYS=30 # 这里改成你的X天

      # 计算过期时间点(当前时间往前推X天)
      EXPIRE_DATE=$(date -d "-$EXPIRE_DAYS days" +%Y-%m-%dT%H:%MZ)

      # 批量删除最后修改时间早于过期点的Blob
      az storage blob delete-batch \
        --account-name $STORAGE_ACCOUNT_NAME \
        --source $CONTAINER_NAME \
        --if-unmodified-since $EXPIRE_DATE \
        --auth-mode login

如果是Windows环境执行,把scriptType改成pscore,日期计算换成PowerShell语法:

$EXPIRE_DAYS = 30
$EXPIRE_DATE = (Get-Date).AddDays(-$EXPIRE_DAYS).ToUniversalTime().ToString("yyyy-MM-ddTHH:mmZ")

方案二:用PowerShell任务实现

习惯PowerShell的话,可以用Azure PowerShell模块来完成清理:

- task: AzurePowerShell@5
  displayName: 'PowerShell清理过期Blob'
  inputs:
    azureSubscription: '你的服务连接名称'
    ScriptType: 'InlineScript'
    Inline: |
      # 替换参数
      $storageAccountName = "你的存储账户名"
      $containerName = "目标容器名"
      $expireDays = 30

      $storageAccount = Get-AzStorageAccount -Name $storageAccountName
      $ctx = $storageAccount.Context
      $expireDate = (Get-Date).AddDays(-$expireDays)

      # 筛选出过期的Blob
      $blobs = Get-AzStorageBlob -Container $containerName -Context $ctx | Where-Object { $_.LastModified -lt $expireDate }

      # 执行删除
      if ($blobs.Count -gt 0) {
          $blobs | Remove-AzStorageBlob -Context $ctx
          Write-Host "已删除 $($blobs.Count) 个过期文件"
      } else {
          Write-Host "没有找到需要清理的过期文件"
      }
    azurePowerShellVersion: 'LatestVersion'

设置定时自动执行

让Pipeline定期运行清理任务,在YAML里添加定时触发器:

schedules:
- cron: '0 0 * * *' # 每天凌晨0点执行,可根据需求修改cron表达式
  displayName: 每日凌晨清理过期Blob
  branches:
    include:
    - main # 替换成你的分支名
  always: true # 即使没有代码变更也执行

注意事项

  • 测试阶段先别直接删除,用az storage blob list或者Get-AzStorageBlob命令预览要删除的文件,避免误删
  • 服务连接必须有存储账户的Storage Blob Data Contributor权限,不然没法操作Blob
  • 如果Blob数量特别多,建议分批次删除,防止任务超时

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 20:02:22