

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 排查 Amazon ECR 中的缓存提取问题
<a name="error-pullthroughcache"></a>

使用拉取缓存规则拉取上游镜像时，您可能会收到以下常见错误。

**存储库不存在**  
指示存储库不存在的错误通常是由该存储库不存在于 Amazon ECR 私有注册表中或者未向拉取上游镜像的 IAM 主体授予 `ecr:CreateRepository` 权限所致。要解决此错误，您应该验证拉取命令中的存储库 URI 正确，已向拉取上游镜像的 IAM 主体授予所需的 IAM 权限，或者在执行上游镜像拉取之前，已在您的 Amazon ECR 私有注册表中创建要向其推送上游镜像的存储库。有关所需 IAM 权限的更多信息，请参阅 [将上游注册表与 Amazon ECR 私有注册表同步所需的 IAM 权限](pull-through-cache-iam.md)。  
以下是此错误的示例。  

```
Error response from daemon: repository 111122223333.dkr.ecr.us-east-1.amazonaws.com/ecr-public/amazonlinux/amazonlinux not found: name unknown: The repository with name 'ecr-public/amazonlinux/amazonlinux' does not exist in the registry with id '111122223333'
```

**找不到请求的映像**  
指示找不到镜像的错误通常是由该镜像不存在于上游注册表中或者未向拉取上游镜像的 IAM 主体授予 `ecr:BatchImportUpstreamImage` 权限但已在 Amazon ECR 私有注册表中创建存储库所致。要解决此错误，您应验证上游镜像和镜像标签名称正确且存在，并且已向拉取上游镜像的 IAM 主体授予所需的 IAM 权限。有关所需 IAM 权限的更多信息，请参阅 [将上游注册表与 Amazon ECR 私有注册表同步所需的 IAM 权限](pull-through-cache-iam.md)。  
以下是此错误的示例。  

```
Error response from daemon: manifest for 111122223333.dkr.ecr.us-east-1.amazonaws.com/ecr-public/amazonlinux/amazonlinux:latest not found: manifest unknown: Requested image not found
```

**从 Docker Hub 存储库中提取时发生 403 Forbidden 错误**  
从标记为 **Docker 官方映像**的 Docker Hub 存储库中提取时，您必须在使用的 URI 中包含 `/library/`。例如 `aws_account_id.dkr.ecr.region.amazonaws.com/docker-hub/library/image_name:tag`。如果您省略 Docker Hub 官方映像的 `/library/`，则当您尝试使用提取缓存规则来提取映像时，系统将返回 `403 Forbidden` 错误。有关更多信息，请参阅 [在 Amazon ECR 中使用缓存提取规则来提取映像](pull-through-cache-working-pulling.md)。  
以下是此错误的示例。  

```
Error response from daemon: failed to resolve reference "111122223333.dkr.ecr.us-west-2.amazonaws.com/docker-hub/amazonlinux:2023": pulling from host 111122223333.dkr.ecr.us-west-2.amazonaws.com failed with status code [manifests 2023]: 403 Forbidden
```