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

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

排查 Amazon ECR 错误消息问题

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

HTTP 429:请求过多或 ThrottleException

您可能会从一个或多个 Amazon ECR 操作或 API 调用收到 429: Too Many Requests 错误或 ThrottleException 错误。这表示由于您在短时间内重复调用 Amazon ECR 中的单个终端节点,您的请求已受限制。单个用户在一段时间内,调用单个终端节点的次数超过特定阈值时,就会产生限制。

Amazon ECR 中的每个 API 操作都有一个与之相关的速率限制。例如,GetAuthorizationToken 操作的限制为每秒 20 个事务 (TPS),允许高达 200 TPS 的突增。在每个区域,每个账户会收到一个可存储多达 200 点 GetAuthorizationToken 积分的存储桶。这些积分以每秒 20 点的速度补充。如果您的存储桶有 200 点积分,则可实现每秒 200 个 GetAuthorizationToken API 事务 (持续一秒),然后无限期地维持每秒 20 个事务。有关 Amazon ECR API 速率限制的更多信息,请参阅 亚马逊ECR服务配额

要处理限制错误,请在代码中实施增量退避重试函数。有关更多信息,请参阅 Amazon SDKs and Tools Reference Guide 中的 Retry behavior。另一种选择是请求提高速率限制,您可以使用服务配额控制台执行此操作。。

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 私有存储库

错误:无法从非 TTY 设备执行交互式登录

如果您收到错误 Cannot perform an interactive login from a non TTY device,则以下故障排除步骤应该会有所帮助。