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

排查 Amazon ECR 错误消息问题

有时,通过 Amazon ECS 控制台或 Amazon CLI 触发的 API 调用会存在错误消息。一些常见错误消息和可能的解决办法解释如下。

HTTP 429:请求过多或 ThrottleException

您可能会从一个或多个 Amazon ECR 命令或 API 调用收到 429: Too Many Requests 错误或 ThrottleException 错误。如果将 Docker 工具用于 Amazon ECR,那么对于 Docker 1.12.0 版及更高版本,可能会显示错误消息 TOOMANYREQUESTS: Rate exceeded。对于 1.12.0 以下的 Docker 版本,您可能会看到错误 Unknown: Rate exceeded

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

Amazon ECR 中不同的 API 操作有不同的限制。

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

要处理限制错误,请在代码中实施增量退避重试函数。有关退避技术的信息,请参阅 Amazon Web Services 一般参考中的 Amazon 中的错误重试和指数退避

HTTP 403:“User [arn] is not authorized to perform [operation]”(用户 [arn] 没有执行 [operation] 的权限)

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

$ aws ecr get-login-password 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 权限的更多信息,请参阅 适用于 Amazon Elastic Container Registry 的 Identity and Access Management

HTTP 404:“Repository Does Not Exist”(存储库不存在) 错误

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