ACR 传输故障排除

模板部署故障或错误

  • 如果管道运行失败,请查看运行资源的 pipelineRunErrorMessage 属性。
  • 有关常见的模板部署错误,请参阅 ARM 模板部署疑难解答

访问 Key Vault 时出现问题

  • 如果 pipelineRun 部署在访问 Azure Key Vault 时失败并出现“403 Forbidden”错误,请验证管道托管标识是否具有足够的权限。
  • pipelineRun 使用 exportPipeline 或 importPipeline 托管标识从 Key Vault 提取 SAS 令牌机密。 ExportPipelines 和 importPipelines 是使用系统分配的或用户分配的托管标识预配的。 需要此托管标识才能获得对 Key Vault 的 secret get 权限,才能读取 SAS 令牌机密。 确保已将托管标识的访问策略添加到 Key Vault。 有关详细信息,请参阅授予 ExportPipeline 标识 keyvault 策略访问权限授予 ImportPipeline 标识 keyvault 策略访问权限

访问存储时遇到的问题

  • 如果存储中显示 403 Forbidden 错误,则 SAS 令牌可能存在问题。
  • SAS 令牌当前可能无效。 SAS 令牌可能已到期,或者创建 SAS 令牌后存储帐户密钥可能已更改。 通过尝试使用 SAS 令牌对对存储帐户容器的访问进行身份验证,验证 SAS 令牌是否有效。 例如,在新的 Microsoft Edge InPrivate 窗口的地址栏中将现有 blob 终结点放在 SAS 令牌之后,或者使用 az storage blob upload 将 blob 上传到具有 SAS 令牌的容器。
  • SAS 令牌可能没有足够的允许的资源类型。 验证 SAS 令牌是否有权访问允许的资源类型(SAS 令牌中的 srt=sco)下的服务、容器和对象。
  • SAS 令牌可能没有足够的权限。 对于导出管道,所需的 SAS 令牌权限为读取、写入、列出和添加。 对于导入管道,所需的 SAS 令牌权限为读取、删除和列出。 (仅在导入管道启用了 DeleteSourceBlobOnSuccess 选项时才需要“删除”权限。)
  • SAS 令牌可能未配置为仅使用 HTTPS。 验证 SAS 令牌是否配置为仅使用 HTTPS(SAS 令牌中的 spr=https)。

导出或导入存储 blob 时出现问题

  • SAS 令牌可能无效,或者可能没有足够的权限来运行指定的导出或导入。 请参阅访问存储时遇到的问题
  • 在多个导出运行期间,源存储帐户中的现有存储 blob 可能未被覆盖。 确认在导出运行中设置了 OverwriteBlob 选项,并且 SAS 令牌具有足够的权限。
  • 在导入运行成功后,可能未删除目标存储帐户中的存储 blob。 确认在导入运行中设置了 DeleteBlobOnSuccess 选项,并且 SAS 令牌具有足够的权限。
  • 未创建或未删除存储 blob。 确认在导出或导入运行中指定的容器存在,或用于手动导入运行的指定存储 blob 存在。

与源触发器导入有关的问题

  • SAS 令牌必须具有“列表”权限,源触发器导入才能正常工作。
  • 只有在存储 Blob 的上次修改时间在过去 60 天内,才会触发源触发器导入。
  • 存储 Blob 必须具有有效的 ContentMD5 属性,才能由源触发器功能导入。
  • 存储 Blob 必须具有 "category":"acr-transfer-blob" blob 元数据才能由源触发器功能导入。 此元数据在导出管道运行期间自动添加,但在存储帐户之间移动时可能会被剥离,具体取决于复制方法。

AzCopy 问题

项目传输问题

  • 并未传输所有项目或者根本未传输任何项目。 确认导出运行中的项目拼写,以及导出和导入运行中的 blob 名称。 确认最多传输 50 个项目。
  • 管道运行可能未完成。 导出或导入运行可能需要一些时间。
  • 对于其他管道问题,请向 Azure 容器注册表团队提供导出运行或导入运行的部署相关 ID
  • 要创建 ACR 传输资源,例如 exportPipelines importPipelinespipelineRuns,用户必须至少具有 ACR 订阅的参与者访问权限。 否则,他们将看到执行传输的授权被拒绝或范围无效错误。

在物理隔离环境中拉取映像时出现的问题

  • 如果在物理隔离环境中尝试拉取映像时发现与外部层或尝试解析 mcr.microsoft.com 有关的错误,则映像清单可能具有不可分发的层。 由于物理隔离环境的性质,这些映像通常无法拉取。 可以通过检查映像清单中是否存在对外部注册表的任何引用,来确认是这种情况。 如果是这种情况,在为该映像部署导出管道运行之前,需要将不可分发的层推送到公有云 ACR。 有关如何执行此操作的指导,请参阅如何将不可分发层推送到注册表?