故障排 Amazon ECR 错误消息 - Amazon ECR
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

故障排 Amazon ECR 错误消息

在某些情况下,您已经通过 Amazon ECS 控制台或 AWS CLI 出现错误消息。一些常见错误消息和可能的解决办法解释如下。

错误 “守护程序错误响应: 运行AWSECRGet-Login时无效注册表点

在运行 aws ecr get-login 获取登录凭据的命令 Amazon ECR 存储库:

Error response from daemon: invalid registry endpoint https://xxxxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/v0/: unable to ping registry endpoint https://xxxxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/v0/ v2 ping attempt failed with error: Get https://xxxxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/v2/: dial tcp: lookup xxxxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com on 172.20.10.1:53: read udp 172.20.10.1:53: i/o timeout

运行 Docker 工具箱、Docker for Windows 或 Docker for Mac 的 MacOS x 和 Windows 系统,可能出现此错误。导致此问题的原因通常是:其他应用程序在通过本地网关更改路由器 (192.168.0.1) 时,虚拟机必须通过调用本地网关才能访问 Amazon ECR 服务。如果使用 Docker 工具箱时出现此错误,通常可以通过重启 Docker 系统环境,或重新启动本地客户端的操作系统来解决。如果该方法未能解决问题,可使用 docker-machine ssh 命令登录容器实例。可在外部主机上执行 DNS 查找,以验证其结果是否与本地主机上的结果相同。如果结果不同,请参考 Docker 工具箱的文档,确保 Docker 系统环境已正确配置。

HTTP429: 请求过多或ThroTtleException

您可能会收到 429: Too Many Requests 错误或A ThrottleException 一个或多个错误 Amazon ECR 命令或API调用。如果您正在使用Docker工具, Amazon ECR,接着Docker版本1.12.0及更高版本,您可能会看到错误消息 TOOMANYREQUESTS: Rate exceeded...对于低于1.12.0的靠泊装置版本,您可能会看到错误 Unknown: Rate exceeded.

这表示由于您在短时间内重复调用 Amazon ECR 中的单个终端节点,您的请求已受限制。单个用户在一段时间内,调用单个终端节点的次数超过特定阈值时,就会产生限制。

各种API操作 Amazon ECR 有不同的节流。

例如, GetAuthorizationToken 操作每秒20次(TPS),允许最多200TPS的突发。在每个区域,每个账户会收到一个可存储多达 200 点 GetAuthorizationToken 积分的存储桶。这些积分以每秒 20 点的速度补充。如果您的存储桶有 200 点积分,则可实现每秒 200 个 GetAuthorizationToken API 事务 (持续一秒),然后无限期地维持每秒 20 个事务。

要处理限制错误,请在代码中实施增量退避重试函数。有关详细信息,请参阅 AWS中的错误重试和指数反馈AmazonWebServices一般参考.

HTTP403: “用户[ARN]无权执行[操作]”

尝试通过 执行操作时,您可能会收到以下错误:Amazon ECR:

$ aws ecr get-login A client error (AccessDeniedException) occurred when calling the GetAuthorizationToken operation: User: arn:aws:iam::account-number:user/username is not authorized to perform: ecr:GetAuthorizationToken on resource: *

这表示您的用户没有获得使用 Amazon ECR 的权限,或者这些权限设置不正确。尤其是在对 Amazon ECR 执行操作时,请验证是否已授予用户访问该存储库的权限。有关创建和验证 Amazon ECR 的权限的更多信息,请参阅 。适用于 的 Identity and Access ManagementAmazon Elastic Container Registry.

HTTP404: “存储库不存在”错误

如果您指定了当前不存在的 Docker Hub 存储库,Docker Hub 会自动创建存储库。但在使用 Amazon ECR 时,新存储库必须在使用前显式创建。这会防止意外创建新存储库 (例如,由于输入错误),也可确保为所有新存储库明确分配适当的安全访问策略。有关创建存储库的更多信息,请参阅Amazon ECR 存储库.