Terraform创建的Azure容器注册表定时任务执行失败求助
解决Azure容器注册表任务执行时的
Unable to find image 'acr:latest'错误 问题现象
使用Terraform创建定时的azurerm_container_registry_task,执行terraform apply操作正常完成,但运行测试命令az acr task run -r some_acr -n purge时,触发错误:
Unable to find image 'acr:latest' locally
直接通过AZ CLI执行az acr run -r some_acr --filter '.*:^[0..9]*$' --ago 14d /dev/null能正常完成镜像清理,但使用相同YAML文件通过az acr run -r some_acr -f purge.yml /dev/null执行时,同样出现上述错误。
原因分析
- 镜像路径不完整:直接写
acr会被ACR任务识别为要拉取的镜像名称(即acr:latest),而非ACR内置的purge工具。实际ACR Purge需要调用官方镜像mcr.microsoft.com/acr/acr-cli:latest。 - 正则表达式语法错误:
[0..9]的写法不符合正则规范,无法匹配数字,正确的数字匹配应为[0-9]或\d。
修复后的Terraform配置
resource "azurerm_container_registry_task" "purge" { name = "purge" container_registry_id = azurerm_container_registry.some_acr.id platform { os = "Linux" } timer_trigger { name = "Schedule", schedule = "...cron..." } encoded_step { task_content = base64encode(<<-CONTENT version: v1.0.0 steps: - cmd: mcr.microsoft.com/acr/acr-cli:latest purge --filter '.*:^[0-9]*$' --ago 14d CONTENT ) } identity { type = "SystemAssigned" } }
(注:已为任务的系统分配身份在目标ACR范围分配Container Registry Repository Catalog Lister和Container Registry Repository Contributor角色权限)
快速修复总结
- 使用完整的ACR CLI镜像路径:用
mcr.microsoft.com/acr/acr-cli:latest替代acr - 修正正则表达式中的数字匹配:将
[0..9]改为[0-9]或[\d]
内容的提问来源于stack exchange,提问作者tonsteri
相关产品推荐
相关产品推荐

