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

ACR Task运行报错无法反序列化任务,是否为Base64格式问题?

ACR Task反序列化失败问题排查与解决

你的问题根源在于错误地直接将acr purge命令转为Base64作为encodedTaskContent,EncodedTask类型要求的是符合ACR Task规范的YAML任务定义的Base64编码,而非单一命令的转码,Azure无法将纯命令的Base64字符串反序列化为合法的Task对象,因此抛出错误。

正确的解决步骤:

  1. 编写ACR Task的YAML定义文件
    创建一个如purge-task.yaml的文件,内容需包含任务版本、执行步骤(指定acr-cli镜像和purge命令):

    version: v1.1.0
    steps:
      - cmd: acr purge --filter 'imagename:.*' --ago 1d --untagged --dry-run
        image: mcr.microsoft.com/acr/acr-cli:latest
    

    注:mcr.microsoft.com/acr/acr-cli:latest是包含acr purge工具的官方镜像,必须指定。

  2. 将YAML文件转为Base64编码

    • Linux/macOS环境执行:
      base64 -w 0 purge-task.yaml
      
    • Windows PowerShell环境执行:
      [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes((Get-Content -Path .\purge-task.yaml -Raw)))
      
  3. 更新Bicep中的ACR Task定义
    将生成的正确Base64字符串填入encodedTaskContent,同时设置encodedValuesContent为空字符串(无自定义变量时):

    resource acrTask 'Microsoft.ContainerRegistry/registries/tasks@2023-01-01-preview' = {
      parent: acrRegistry // 替换为你的ACR资源引用
      name: 'purge_image'
      identity: {
        type: 'SystemAssigned'
      }
      properties: {
        platform: {
          os: 'Linux'
          architecture: 'amd64'
        }
        taskType: 'EncodedTask'
        encodedTaskContent: 'YOUR_BASE64_ENCODED_YAML_CONTENT'
        encodedValuesContent: ''
        status: 'Enabled'
      }
    }
    
  4. 重新部署并测试任务
    部署更新后的Bicep资源,再执行az acr task run -n purge_image -r registryname即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 00:04:58