

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

# 排查 Amazon ECR 错误消息问题
<a name="common-errors"></a>

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

## HTTP 429：请求太多或 ThrottleException
<a name="error-429-too-many-requests"></a>

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

Amazon ECR 中的每个 API 操作都有一个与之相关的速率限制。例如，[https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_GetAuthorizationToken.html](https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_GetAuthorizationToken.html) 操作的限制为每秒 20 个事务 (TPS)，允许高达 200 TPS 的突增。在每个区域，每个账户会收到一个可存储多达 200 点 `GetAuthorizationToken` 积分的存储桶。这些积分以每秒 20 点的速度补充。如果您的存储桶有 200 点积分，则可实现每秒 200 个 `GetAuthorizationToken` API 事务 (持续一秒)，然后无限期地维持每秒 20 个事务。有关 Amazon ECR 速率限制的更多信息 APIs，请参阅[Amazon ECR 服务配额](service-quotas.md)。

要处理限制错误，请在代码中实施增量退避重试函数。有关更多信息，请参阅《工具参考指南》*AWS SDKs 和《工具参考指南*》中的[重试行为](https://docs.aws.amazon.com/general/latest/gr/api-retries.html)。另一种选择是请求提高速率限制，您可以使用服务配额控制台执行此操作。有关更多信息，请参阅[在中管理您的 Amazon ECR 服务配额 AWS 管理控制台](service-quotas.md#service-quotas-console)。 。

## HTTP 403：“User [arn] is not authorized to perform [operation]”(用户 [arn] 没有执行 [operation] 的权限)
<a name="error-unauthorized"></a>

尝试通过 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](security-iam.md)。

## HTTP 404：“Repository Does Not Exist”(存储库不存在) 错误
<a name="repo-does-not-exist-error"></a>

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

## 错误：无法从非 TTY 设备执行交互式登录
<a name="cannot-perform-interactive-login"></a>

如果您收到错误 `Cannot perform an interactive login from a non TTY device`，则以下故障排除步骤应该会有所帮助。
+ 确认您使用的是 AWS CLI 版本 2，并且您的系统上没有 AWS CLI 版本 1 的冲突版本。有关更多信息，请参阅[安装或更新 AWS CLI的最新版本](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。
+ 确认您已 AWS CLI 使用有效的凭据配置了您的证书。有关更多信息，请参阅[安装或更新 AWS CLI的最新版本](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)。
+ 验证您的 AWS CLI 命令语法是否正确。